> ## Documentation Index
> Fetch the complete documentation index at: https://exosphere-auto-translate-docs-20260623-1106.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboard

> Monitorea sesiones de agentes, revisa llamadas a herramientas y gestiona políticas

El dashboard de failproofai es una aplicación web local para monitorear tus sesiones de agentes de IA y gestionar políticas. Descubre qué hicieron tus agentes mientras no estabas.

***

## Iniciar el dashboard

```bash theme={null}
failproofai
```

Se abre en `http://localhost:8020`.

El dashboard lee directamente del sistema de archivos — tus carpetas de proyectos de Claude Code y los archivos de configuración de failproofai. No se escribe nada en un servicio remoto.

***

## Páginas

### Proyectos

Lista todos los proyectos de Claude Code, OpenAI Codex, GitHub Copilot CLI *(beta)*, Cursor Agent *(beta)*, OpenCode *(beta)*, Pi *(beta)* y Gemini CLI *(beta)* encontrados en tu máquina. Los proyectos de Claude se descubren desde `~/.claude/projects/` (o la ruta definida por `CLAUDE_PROJECTS_PATH`); los proyectos de Codex se descubren escaneando cada transcript en `~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl` y agrupando por el `cwd` registrado en el primer registro de cada sesión; los proyectos de Copilot CLI se descubren escaneando cada `~/.copilot/session-state/<sessionId>/workspace.yaml` (configurable mediante `COPILOT_HOME`) y agrupando por su campo `cwd`; los proyectos de Cursor Agent se descubren escaneando los metadatos por sesión en `~/.cursor/agent-sessions/<sessionId>/` (configurable mediante `CURSOR_HOME`, con `conversations/` y `sessions/` como alternativas) buscando un valor escalar `cwd` en `meta.json` / `session.json` / `workspace.yaml`; los proyectos de OpenCode se descubren consultando su base de datos SQLite en `~/.local/share/opencode/opencode.db` mediante `opencode db --format json` (se leen las tablas `session` y `project` y se agrupan por `project_id`); los proyectos de Pi se descubren escaneando los transcripts JSONL por sesión en `~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl` (configurable mediante `PI_SESSIONS_DIR`) y extrayendo el `cwd` del primer registro de cada sesión; los proyectos de Gemini CLI se descubren escaneando `~/.gemini/tmp/<basename>/chats/session-<timestamp>-<uuid-prefix>.jsonl` (configurable mediante `GEMINI_SESSIONS_DIR`) y recuperando el cwd canónico a partir del marcador de texto `.project_root` adyacente. Un proyecto que ha sido usado por múltiples CLIs se muestra como una sola fila con todos los badges correspondientes. Usa el menú desplegable **CLI** sobre la tabla para filtrar por un agente CLI específico; la URL conserva tu selección como `?cli=claude|codex|copilot|cursor|opencode|pi|gemini`.

Cada proyecto muestra:

* Nombre del proyecto (derivado de la ruta de la carpeta)
* Un badge de CLI — `Claude Code` (naranja), `OpenAI Codex` (morado), `GitHub Copilot` (azul), `Cursor Agent` (esmeralda), `OpenCode` (ámbar), `Pi` (rosa) y/o `Gemini CLI` (celeste)
* Fecha de la actividad de sesión más reciente

Haz clic en un proyecto para ver sus sesiones.

### Sesiones

Lista todas las sesiones dentro de un proyecto. Cada sesión muestra:

* ID de sesión
* Marcas de tiempo de inicio y fin
* Número de llamadas a herramientas
* Recuento de actividad de hooks (políticas que se activaron)

Usa el filtro de rango de fechas y la búsqueda por ID de sesión para acotar la lista. Las sesiones están paginadas.

Haz clic en una sesión para abrir el visor de sesión.

### Visor de sesión

El visor de sesión responde la pregunta clave para agentes autónomos: ¿qué hizo el agente y se mantuvo en el camino correcto? Un badge de CLI junto al encabezado indica si la sesión es un transcript de Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi o Gemini CLI. Muestra una línea de tiempo de todo lo que ocurrió en una sesión:

* **Mensajes** — Las respuestas de texto de Claude y los prompts del usuario
* **Llamadas a herramientas** — Cada herramienta que invocó Claude, con su entrada y salida
* **Actividad de políticas** — Para cada llamada a herramienta, qué políticas se activaron y qué decisión devolvieron

La barra de estadísticas en la parte superior muestra la duración de la sesión, el total de llamadas a herramientas y un resumen de las decisiones de los hooks (recuentos de allow / deny / instruct).

Haz clic en el botón **Download Logs** para exportar la sesión. Para sesiones de Claude Code, Codex, Copilot, Cursor, Pi y Gemini obtienes el transcript JSONL original en disco byte a byte; para OpenCode (cuyas sesiones residen en SQLite, no en disco) obtienes un documento JSON que refleja las tablas subyacentes `session` / `messages` / `parts`.

### Audit

Un informe con personalidad propia sobre cómo se ha comportado realmente tu agente a lo largo de sesiones anteriores. Ejecuta el mismo análisis que el CLI `failproofai audit` pero lo presenta como un póster de pantalla completa compartible + cuatro secciones debajo del pliegue:

1. **Póster** — ocupa el primer viewport. Región de captura PNG autónoma con el logotipo de failproof\_ai + etiqueta de auditoría · índice de arquetipo (`№ NN of 08`) + fecha de auditoría · puntuación numérica (0–100) + pastilla de percentil (`top 15%`) · el nombre del arquetipo (uno de `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + tira de 3 palabras clave · línea de rareza `// only N% of agents are this archetype` · mosaico de símbolo de 8×8 píxeles · pie de página `audit yours → failproof.ai`. Tres botones de compartir se ubican justo fuera del área de captura: `post your archetype` (X intent), `share on linkedin`, `download poster`. La captura se ejecuta a través de `html-to-image`, por lo que el PNG coincide píxel a píxel con lo que se muestra en pantalla (bordes punteados, máscara de logo SVG, degradados, métricas de fuente — todo preservado).
2. **Fortalezas** — lista en calma con marca ✓ de comportamientos que tu agente ya hace bien, derivados de los datos de auditoría en vivo (tasa limpia de llamadas a herramientas, sin push directos a main, cero filtraciones de credenciales, cero tormentas de reintentos) — cada uno se muestra solo cuando la política relevante tiene un historial limpio durante el período de auditoría.
3. **Peculiaridades** — tabla de lo que se pasó por alto, ordenado por severidad: `cuándo · qué se pasó + la política que lo habría detectado · pastilla de severidad · visto`, donde la recurrencia se lee como `new` (una vez), `N× seen` (2–9 veces) o `recurring` (10+).
4. **Cómo mejorar** — lista en calma, una entrada por política prescrita: nombre de la política en blanco, descripción de una línea, comando de instalación + botón de copiar en el lado derecho. El encabezado de la sección dice `enable all N → projected <score> · <tier>` (la puntuación que alcanzarías con todas las correcciones aplicadas), y su botón `[install all]` copia el comando combinado `failproofai policy add a b c …` para todas las políticas prescritas.
5. **Vuelve mejorado** — dos tarjetas lado a lado. Izquierda: configura un recordatorio (selector de cadencia `3d` / `7d` / `14d` / `30d`; persiste a través de `/api/auth/reminder` una vez autenticado). Derecha: desbloquea ventajas de failproof — `invite a friend` abre un modal que acepta una lista de correos de amigos separados por comas, espacios o saltos de línea (máximo 10 por envío), los envía mediante POST a `/api/audit/invite`, que los reenvía al `POST /v0/invite` del api-server. El api-server envía un correo por destinatario desde `invite@failproof.ai` con el remitente en Cc y `Reply-To` configurado, de modo que el destinatario ve quién lo invitó y el remitente recibe una copia en su bandeja de entrada. Los usuarios anónimos son dirigidos primero a `AuthDialog` para que el correo del remitente sea conocido antes de enviar las invitaciones. La gestión de derechos y ventajas es un paso posterior.

Impulsado por el runtime de `failproofai audit` — consulta [Audit CLI](/es/cli/audit) para el motor de análisis subyacente, flags compatibles e invariantes de caché por transcript. El dashboard almacena en caché el último resultado en `~/.failproofai/audit-dashboard.json` (modo `0600`, un solo slot, las nuevas ejecuciones sobreescriben) para que las revisitas sean instantáneas; **tanto la caché por transcript como la caché del resultado completo se rechazan al leerse si tienen más de 7 días**, por lo que el dashboard nunca sirve silenciosamente un resultado de hace una semana — pasado el TTL, `/audit` cae a su estado vacío y solicita una nueva ejecución. Al hacer clic en `[ re-audit now ]` cerca de la parte inferior del informe se envía un POST a `/api/audit/run` con `noCache: true` — la re-auditoría omite la caché por transcript y vuelve a analizar cada transcript desde cero en lugar de devolver silenciosamente el resultado en caché — y el dashboard consulta `/api/audit/status` a 1 Hz hasta que la ejecución finaliza; una banda de progreso rosa fija se ancla en la parte superior del viewport durante la ejecución con un temporizador transcurrido, y el resultado actualizado reemplaza el anterior en su lugar al completarse con éxito (sin recarga de página completa; una re-auditoría fallida deja el informe anterior intacto). En caso de fallo, la banda se vuelve roja con un mensaje según `RerunError.kind` (`timeout` / `network` / `post_failed`). El estado vacío (sin caché o expirado) y el estado de cero sesiones (la caché existe pero el análisis no encontró transcripts) se muestran por separado.

### Políticas

Una página con dos pestañas para gestionar políticas y revisar la actividad.

<Tabs>
  <Tab title="Pestaña de políticas">
    * Selección múltiple de qué CLIs de agentes protege failproofai desde un único panel — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi y Gemini CLI tienen cada uno una fila con el estado de instalación (`Active` / `Detected` / `Inactive`), la ruta de configuración del scope de usuario y un acento de color de marca. Marca o desmarca los CLIs que deseas y haz clic en `Apply changes` para instalar/desinstalar la diferencia en un solo paso. Los CLIs cuyo binario se detecta en PATH se marcan previamente.
    * Activa o desactiva políticas individuales con un solo clic (escribe en `~/.failproofai/policies-config.json` — compartido entre todos los CLIs instalados)
    * Expande una política para configurar sus parámetros (para políticas que admiten `policyParams`)
    * Establece una ruta de archivo de políticas personalizadas
  </Tab>

  <Tab title="Pestaña de actividad">
    * Historial completo paginado de cada evento de hook que se ha activado en todas las sesiones
    * Filtro por decisión, tipo de evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot *(beta)* / Cursor Agent *(beta)* / OpenCode *(beta)* / Pi *(beta)* / Gemini CLI *(beta)*), nombre de política o ID de sesión
    * Cada fila muestra: marca de tiempo, nombre de política, decisión, badge de CLI (naranja = Claude Code, morado = OpenAI Codex, azul = GitHub Copilot, esmeralda = Cursor Agent, ámbar = OpenCode, rosa = Pi, celeste = Gemini CLI), nombre de herramienta, ID de sesión y el motivo de las decisiones deny/instruct
    * Haz clic en un ID de sesión para abrir su transcript — el visor detecta automáticamente qué CLI activó el hook (Claude `~/.claude/projects/…`, Codex `~/.codex/sessions/…`, Copilot CLI `~/.copilot/session-state/<id>/events.jsonl`, Cursor Agent `~/.cursor/agent-sessions/<id>/events.jsonl`, OpenCode `~/.local/share/opencode/opencode.db`, Pi `~/.pi/agent/sessions/<encoded-cwd>/<id>.jsonl`, Gemini CLI `~/.gemini/tmp/<basename>/chats/<session>.jsonl`) y muestra el badge de CLI correspondiente en el encabezado
  </Tab>
</Tabs>

***

## Actualización automática

El dashboard tiene un botón de actualización automática en la navegación superior. Cuando está habilitado, la página actual se refresca periódicamente para mostrar nuevas sesiones y actividad de políticas a medida que aparecen. Es esencial para monitorear sesiones de agentes autónomos de larga duración.

***

## Deshabilitar páginas

Si solo necesitas algunas partes del dashboard, establece `FAILPROOFAI_DISABLE_PAGES` con una lista de nombres de páginas separados por comas:

```bash theme={null}
FAILPROOFAI_DISABLE_PAGES=policies failproofai
```

Valores válidos: `policies`, `projects`, `audit`.

***

## Configurar la ruta de proyectos

Por defecto, el dashboard lee del directorio estándar de proyectos de Claude Code. Puedes sobreescribirlo para configuraciones personalizadas:

```bash theme={null}
CLAUDE_PROJECTS_PATH=/custom/path/to/projects failproofai
```

***

## Acceder desde un host que no sea localhost

Cuando ejecutas el dashboard en **modo dev** (`npm run dev`) y accedes a él desde un hostname distinto de `localhost` — por ejemplo, un dominio personalizado, una IP remota o una URL tunelizada — puede aparecer una advertencia como:

```text theme={null}
⚠ Blocked cross-origin request to Next.js dev resource /_next/webpack-hmr from "dashboard.example.com".
```

Esto es Next.js bloqueando el acceso de origen cruzado a su websocket HMR (recarga en caliente de módulos), que es una función exclusiva del modo dev. Para permitir tu host, usa el flag `--allowed-origins`:

```bash theme={null}
npm run dev -- --allowed-origins dashboard.example.com
```

Para múltiples hosts o IPs, pasa una lista separada por comas:

```bash theme={null}
npm run dev -- --allowed-origins dashboard.example.com,192.168.1.5
```

También puedes establecer la variable de entorno `FAILPROOFAI_ALLOWED_DEV_ORIGINS` en su lugar:

```bash theme={null}
FAILPROOFAI_ALLOWED_DEV_ORIGINS=dashboard.example.com npm run dev
```

<Note>
  Esto solo aplica al modo dev. Al ejecutar `failproofai` (modo producción), no hay websocket HMR ni problema de recursos dev de origen cruzado.
</Note>
