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.

En macOS, kovra ui abre el dashboard por defecto en una ventana nativa del OS (una WKWebView). Agregue --browser para abrirlo en cambio en el navegador del sistema — la URL de la sesión pasa entonces por la línea de comandos de open y por la terminal, donde otros programas que corren con su usuario pueden leerla, así que la página quita el token de sesión de la barra de direcciones apenas lo lee:

zsh
~ % kovra ui --browser
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….

Se apaga con Ctrl-C o tras un timeout de inactividad (--idle, por defecto 300s). Flags útiles: --browser (el navegador del sistema), --no-open (modo navegador, pero solo imprime la URL — rechazado en macOS, donde la URL que kovra imprime nunca lleva el token de sesión: use --window), --port y --window (fuerza 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, ni de ningún secreto de prod (aunque se haya bajado a low) — esos se muestran enmascarados, sin fingerprint (—), y la única forma de revelarlos es un kovra show deliberado en la terminal. Un valor ordinario y revelable (no-high, no-inject-only, fuera de prod) 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, o la contraseña de su sesión en una Mac sin Touch ID) antes de aplicarse. Una rebaja se escribe solo con la aprobación — una denegación o un timeout deja el registro intacto. Sobrescribir el valor o la referencia de un secreto crítico (high o inject-only) pide la misma aprobación, y también crear un secreto en la bóveda de un proyecto en la coordenada de uno global crítico — un run en ese proyecto entregaría el valor nuevo. Una sola edición no puede cambiar a la vez la sensibilidad y la referencia de un secreto crítico: haga dos ediciones, cada una con su propia aprobación. 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. Lo que la solicitud dice sobre quién la hizo sale de un archivo que el agente puede escribir, así que el diálogo de aprobación lo muestra solo como texto no confiable. 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 usted se aleja, no solo tras el tiempo de --idle.