Ir al contenido

Dashboard

Para cuando se prefiera hacer clic en lugar de teclear, kovra incluye un pequeño dashboard de administración. Es bajo demanda y solo loopback — no es un daemon, no está expuesto a la red, y está gobernado por exactamente la misma política que la CLI y los agentes.

El Dashboard de kovra: una vista del vault local gobernada por sensibilidad, solo loopback.

El dashboard se abre de dos maneras — ambas corren el mismo servidor loopback. Abrirlo pide primero una bioProve (abrir una superficie de administración es en sí una acción resguardada), luego enlaza solo 127.0.0.1 y emite un token de sesión efímero.

kovra ui abre el dashboard en el navegador; agregar --window para abrirlo en una ventana nativa del OS (una WKWebView en macOS) en su lugar:

zsh
~ % kovra ui
kovra ui → http://127.0.0.1:8731/#session=0bd48b80…
(loopback only; ephemeral session; auto-shutdown after 300s idle or Ctrl-C)

La app de barra de menú kovra-menulet tiene un ítem “Open Dashboard…” que lanza el mismo dashboard en una ventana nativa — sin necesidad de terminal:

El menú del menulet de kovra: solicitudes de secreto pendientes más un ítem Open Dashboard….

La app de barra de menú es solo para macOS — en Windows no hay menulet; abrir el Dashboard con kovra ui (arriba). Ver Soporte de plataformas.

Se apaga con Ctrl-C o tras un timeout de inactividad (--idle, por defecto 300s). Flags útiles: --no-open (solo imprime la URL), --port, --no-confirm (omite la guarda de lanzamiento para dev/CI/Docker; también KOVRA_UI_NO_CONFIRM), y --window (la ventana nativa que usa el menulet — la ventana posee la sesión, así que el servidor loopback sigue arriba mientras está abierta y se detiene al cerrarla).

La UI visualiza el vault por sensibilidad: coordenadas, niveles, modos, proyectos y metadatos. Crucialmente, nunca renderiza el texto plano de un secreto high o inject-only — esos se muestran enmascarados, y la única forma de revelarlos es un kovra show deliberado en la terminal. Un valor ordinario y revelable (no-high, no-inject-only) puede mostrarse en línea, exactamente como lo harían kovra show o el reveal de un agente — el límite es el nivel de sensibilidad, no la superficie. El mismo límite que protege a un agente protege la página: una pestaña de navegador es solo otra superficie, y la política la trata como tal.

El Dashboard no es de solo lectura — es una superficie de administración completa para el vault, gobernada por la misma política que la CLI:

  • Crear un secreto, o generar un valor aleatorio fuerte del lado del servidor (el valor generado se almacena, nunca se muestra).
  • Actualizar un valor, o editar metadatos — sensibilidad, descripción, el flag revealable o una referencia.
  • Revelar un valor ordinario revelable en línea; eliminar un secreto.

Las acciones destructivas y sensibles toman una confirmación atendida por acción: eliminar un secreto, o bajar la sensibilidad de un secreto, se pausa para una bioProve (Touch ID en macOS, o kovra approve) antes de aplicarse. Una rebaja se escribe solo con la aprobación — una denegación o un timeout deja el registro intacto. Es el mismo confirmador autoritativo que usa la CLI; el navegador no recibe una guarda más débil.

Cuando un agente llama a request_secret, la solicitud pendiente aparece en el dashboard — coordenada, sensibilidad solicitada y la nota del solicitante, nunca un valor. Se cumple ahí mismo: se escribe el valor en la página loopback (solo el usuario puede, sobre 127.0.0.1) y kovra lo sella bajo la coordenada; o se descarta. El valor va directo al vault — nunca regresa al agente que lo pidió (I11/I14). prod nace high (la solicitud no puede bajarlo), y cumplir un secreto high es una acción atendida resguardada por la misma bioProve (I16).

Mantenerlo abierto — modo persistente y el latch de bloqueo

Sección titulada «Mantenerlo abierto — modo persistente y el latch de bloqueo»

Por defecto la UI se autoapaga cuando está inactiva. Si se prefiere dejarla arriba durante una sesión de trabajo, kovra ui --persistent mantiene el servidor corriendo hasta Ctrl-C — pero no mantiene el vault en pantalla. Tras --idle segundos de inactividad (por defecto 300s; --idle 0 lo deshabilita) la UI se bloquea en lugar de apagarse:

Ventana de terminal
kovra ui --persistent

Una UI bloqueada es un latch — no revela nada. La página cae a una pantalla de bloqueo y el servidor deja de servir datos del vault hasta volver a autenticarse con una nueva bioProve; nada sensible queda renderizado detrás de ella. Este es el mismo límite que la guarda de lanzamiento, aplicado de forma continua: alejarse --idle segundos bloquea la pestaña en vez de dejar las coordenadas y los metadatos en pantalla. En macOS, bloquear la pantalla (⌃⌘Q) o que el Mac entre en suspensión también dispara el latch — el Dashboard se bloquea apenas te alejás, no sólo tras el tiempo de --idle.

¿Se prefiere un contenedor? kovra ui --docker corre el Dashboard desde una imagen kovra-ui publicada — Docker la descarga en el primer uso, así que no hay nada que construir localmente:

Ventana de terminal
kovra ui --docker

Mantiene las mismas garantías que la UI nativa: la master key llega al contenedor solo como un secreto de Docker en tmpfs (nunca horneada en una capa de imagen), ~/.vaults se monta en lectura-escritura, y el puerto se publica solo en loopback. El lanzamiento sigue resguardado por una bioProve a menos que se pase --no-confirm. Necesita Docker corriendo en el host.