> ## Documentation Index
> Fetch the complete documentation index at: https://docs.befailproof.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Dashboard

> Monitora le sessioni degli agenti, rivedi le chiamate ai tool e gestisci le policy

Il dashboard failproofai è un'applicazione web locale per monitorare le tue sessioni di agenti AI e gestire le policy. Scopri cosa hanno fatto i tuoi agenti mentre eri via.

***

## Avvio del dashboard

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

Si apre su `http://localhost:8020`.

Il dashboard legge i dati di configurazione del progetto locale, della sessione e di failproofai direttamente dal filesystem. Le funzionalità autenticate opzionali, come i promemoria di audit e gli inviti, inviano le informazioni necessarie per tali richieste (inclusi gli indirizzi email) a API remote.

***

## Pagine

### Progetti

Elenca tutti i progetti Claude Code, OpenAI Codex, GitHub Copilot CLI *(beta)*, Cursor Agent *(beta)*, OpenCode *(beta)*, Pi *(beta)*, Hermes, OpenClaw, Factory Droid, Devin, Antigravity e Goose trovati sulla tua macchina. I progetti Claude vengono individuati da `~/.claude/projects/` (o dal percorso impostato da `CLAUDE_PROJECTS_PATH`); i progetti Codex vengono individuati eseguendo la scansione di ogni trascrizione in `~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl` e raggruppando per il `cwd` registrato nel primo record di ogni sessione; i progetti Copilot CLI vengono individuati eseguendo la scansione di ogni `~/.copilot/session-state/<sessionId>/workspace.yaml` (configurabile tramite `COPILOT_HOME`) e raggruppando per il suo campo `cwd`; i progetti Cursor Agent vengono individuati eseguendo la scansione dei metadati per sessione in `~/.cursor/agent-sessions/<sessionId>/` (configurabile tramite `CURSOR_HOME`, con `conversations/` e `sessions/` come fallback) per uno scalare `cwd` in `meta.json` / `session.json` / `workspace.yaml`; i progetti OpenCode vengono individuati interrogando il suo DB SQLite in `~/.local/share/opencode/opencode.db` tramite `opencode db --format json` (leggiamo le tabelle `session` e `project` e raggruppiamo per `project_id`); i progetti Pi vengono individuati eseguendo la scansione delle trascrizioni JSONL per sessione in `~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl` (configurabile tramite `PI_SESSIONS_DIR`) ed estraendo il `cwd` dal primo record di ogni sessione; le sessioni gateway Hermes vengono lette direttamente dal suo store SQLite in `~/.hermes/state.db` (configurabile tramite `HERMES_DB_PATH`) e raggruppate in progetti `hermes-<source>` per `source` (Slack/Telegram/cli/cron — le sessioni gateway non hanno cwd); le sessioni gateway OpenClaw vengono lette da `~/.openclaw/agents/<agentId>/sessions/*.jsonl` e raggruppate in progetti `openclaw-<agentId>` (anche senza cwd); i progetti Factory Droid vengono individuati dalle trascrizioni JSONL in `~/.factory/sessions/<encoded-cwd>/*.jsonl` e raggruppati per cwd; i progetti Devin dal suo DB SQLite in `~/.local/share/devin/cli/sessions.db` (raggruppati per `working_directory` di ogni sessione); i progetti Antigravity dalle trascrizioni JSONL in `~/.gemini/antigravity-cli/brain/<conversationId>/…/transcript_full.jsonl` e raggruppati per cwd; e i progetti Goose dal suo DB SQLite in `~/.local/share/goose/sessions/sessions.db` (raggruppati per `working_dir` di ogni sessione). Un progetto che è stato utilizzato da più CLI viene visualizzato come una singola riga con tutti i badge corrispondenti. Usa il menu a discesa **CLI** sopra la tabella per filtrare per uno specifico agent CLI; l'URL mantiene la tua selezione come `?cli=claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose`.

Ogni progetto mostra:

* Nome del progetto (derivato dal percorso della cartella)
* Un badge CLI — `Claude Code` (arancione), `OpenAI Codex` (viola), `GitHub Copilot` (blu), `Cursor Agent` (smeraldo), `OpenCode` (ambra), `Pi` (rosa), e/o `Hermes` (indaco)
* Data dell'attività di sessione più recente

Fai clic su un progetto per visualizzare le sue sessioni.

### Sessioni

Elenca tutte le sessioni all'interno di un progetto. Ogni sessione mostra:

* ID sessione
* Timestamp di inizio e fine
* Numero di chiamate ai tool
* Conteggio dell'attività degli hook (policy che sono state attivate)

Utilizza il filtro per intervallo di date e la ricerca per ID sessione per restringere l'elenco. Le sessioni sono impaginate.

Fai clic su una sessione per aprire il visualizzatore di sessione.

### Visualizzatore di sessione

Il visualizzatore di sessione risponde alla domanda chiave per gli agenti autonomi: cosa ha fatto l'agente e è rimasto in traccia? Un badge CLI accanto all'intestazione indica se la sessione è una trascrizione Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, Hermes, OpenClaw, Factory Droid, Devin, Antigravity o Goose. Mostra una cronologia di tutto ciò che è accaduto in una sessione:

* **Messaggi** - Risposte di testo di Claude e prompt dell'utente
* **Chiamate ai tool** - Ogni tool invocato da Claude, con il suo input e output
* **Attività delle policy** - Per ogni chiamata ai tool, quali policy sono state attivate e quale decisione hanno restituito

La barra delle statistiche in alto mostra la durata della sessione, il numero totale di chiamate ai tool e un riepilogo delle decisioni degli hook (conteggi allow / deny / instruct).

Fai clic sul pulsante **Download Logs** per esportare la sessione. Per le sessioni Claude Code, Codex, Copilot, Cursor e Pi ottieni la trascrizione JSONL originale su disco byte per byte; per OpenCode (le cui sessioni risiedono in SQLite, non su disco) ottieni un documento JSON che rispecchia le tabelle sottostanti `session` / `messages` / `parts`.

### Audit

Un rapporto guidato dalla personalità su come il tuo agente si è effettivamente comportato nelle sessioni passate. Esegue la stessa scansione dell'utility CLI `failproofai audit` ma la visualizza come un poster condivisibile a schermo singolo + quattro sezioni sotto il margine di piega:

1. **Poster** — riempie il primo viewport. Regione di cattura PNG autonoma con il wordmark failproof\_ai + etichetta audit · indice archetipo (`№ NN di 08`) + data audit · punteggio numerico (0–100) + pillola di classificazione percentile (`top 15%`) · il nome dell'archetipo (uno di `the optimist`, `the cowboy`, `the explorer`, `the goldfish`, `the paranoid architect`, `the precision builder`, `the hammer`, `the ghost`) + striscia di 3 parole chiave · `// solo il N% degli agenti è questo archetipo` riga di rarità · sigillo in piastrella di 8×8 pixel · piè di pagina `audit yours → failproof.ai`. Tre pulsanti di condivisione si trovano appena fuori dalla casella di cattura: `post your archetype` (intent X), `share on linkedin`, `download poster`. La cattura viene eseguita attraverso `html-to-image` quindi il PNG corrisponde al rendering sullo schermo pixel per pixel (bordi tratteggiati, maschera logo SVG, gradienti, metriche dei caratteri — tutto conservato).
2. **Strengths** — elenco di righe calme ✓ di comportamenti che il tuo agente già fa bene, derivati dai dati di audit live (tasso di chiamata dei tool pulito, nessun push diretto a main, zero perdite di credenziali, zero tempeste di retry) — ognuno visualizzato solo quando la policy pertinente ha un record pulito nell'intervallo di audit.
3. **Quirks** — tabella di ciò che è sfuggito, classificata per gravità: `when · what slipped + the policy that would've caught it · severity pill · seen`, dove la ricorrenza legge `new` (una volta), `N× seen` (2–9 volte), o `recurring` (10+).
4. **How to improve** — elenco di righe calme, uno per policy prescritta: nome della policy in bianco, descrizione di una riga, comando di installazione + pulsante di copia sul lato destro. L'intestazione della sezione legge `enable all N → projected <score> · <tier>` (il punteggio che raggiungeresti con ogni correzione applicata), e il suo pulsante `[install all]` copia il comando combinato `failproofai policy add a b c …` per ogni policy prescritta.
5. **Come back better** — due schede affiancate. Sinistra: imposta un promemoria (selettore di cadenza `3d` / `7d` / `14d` / `30d`; persiste tramite `/api/auth/reminder` una volta autenticato). Destra: sblocca i vantaggi failproof — `invite a friend` apre un modale che accetta un elenco separato da virgole/spazi/newline di email amiche (max 10 per invio), le POST a `/api/audit/invite`, che inoltrano al `/v0/invite` del server api. Il server api invia un email per destinatario da `invite@failproof.ai` con il mittente in Cc e `Reply-To` impostato, quindi il destinatario vede chi lo ha invitato e il mittente riceve una copia nella sua inbox. Gli utenti anonimi vengono instradati attraverso `AuthDialog` prima in modo che l'email del mittente sia nota prima che gli inviti vengano inviati. La realizzazione dei diritti / vantaggi è un follow-up.

Gestito dal runtime `failproofai audit` — vedere [Audit CLI](/it/cli/audit) per il motore di scansione sottostante, i flag supportati e gli invarianti di cache per trascrizione. Il dashboard memorizza nella cache il risultato più recente in `~/.failproofai/audit-dashboard.json` (modalità `0600`, slot singolo, i nuovi run sovrascrivono) quindi i revisit sono istantanei; **sia la cache per trascrizione che il risultato complessivo vengono rifiutati alla lettura una volta che hanno più di 7 giorni** quindi il dashboard non serve mai in silenzio un risultato vecchio di una settimana — dopo il TTL `/audit` ricade nel suo stato vuoto e richiede una nuova esecuzione. Facendo clic su `[ re-audit now ]` vicino al fondo del rapporto POST su `/api/audit/run` con `noCache: true` — il re-audit ignora la cache per trascrizione e scansiona ogni trascrizione da zero piuttosto che restituire silenziosamente il risultato memorizzato nella cache — e il dashboard esegue il polling su `/api/audit/status` a 1Hz fino al completamento dell'esecuzione; una striscia di progresso rosa appiccicosa si fissa nella parte superiore del viewport durante l'esecuzione con un timer trascorso, e il risultato aggiornato si sostituisce in posizione al successo (nessun ricarico della pagina intera; un re-audit fallito lascia il rapporto precedente intatto). In caso di errore la striscia diventa rossa con la copia basata su `RerunError.kind` (`timeout` / `network` / `post_failed`). Lo stato vuoto (nessuna cache o scaduta) e lo stato zero-sessioni (cache esiste ma la scansione non ha trovato trascrizioni) vengono visualizzati separatamente.

### Policy

Una pagina a due schede per gestire le policy e rivedere l'attività.

<Tabs>
  <Tab title="Scheda Policies">
    * Selezione multipla di quali agent CLI failproofai protegge da un singolo pannello — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi e Hermes hanno tutti una riga con stato di installazione (`Active` / `Detected` / `Inactive`), il percorso delle impostazioni nell'ambito dell'utente e un accento di marca colorato. Seleziona o deseleziona i CLI che desideri e fai clic su `Apply changes` per installare/disinstallare la differenza in un unico passaggio. I CLI il cui binario è rilevato su PATH vengono pre-selezionati.
    * Attiva o disattiva le singole policy con un singolo clic (scrive su `~/.failproofai/policies-config.json` — condiviso tra ogni CLI installato)
    * Espandi una policy per configurare i suoi parametri (per le policy che supportano `policyParams`)
    * Imposta un percorso file delle policy personalizzato
  </Tab>

  <Tab title="Scheda Activity">
    * Cronologia completa impaginata di ogni evento hook che si è attivato in tutte le sessioni
    * Filtra per decisione, tipo di evento, CLI (Claude Code / OpenAI Codex / GitHub Copilot *(beta)* / Cursor Agent *(beta)* / OpenCode *(beta)* / Pi *(beta)* / Hermes / OpenClaw / Factory Droid / Devin / Antigravity / Goose), nome della policy o ID della sessione
    * Ogni riga mostra: timestamp, nome della policy, decisione, badge CLI (arancione = Claude Code, viola = OpenAI Codex, blu = GitHub Copilot, smeraldo = Cursor Agent, ambra = OpenCode, rosa = Pi, indaco = Hermes, verde acqua = OpenClaw, rosa chiaro = Factory Droid, viola = Devin, ciano = Antigravity, lime = Goose), nome del tool, ID della sessione e il motivo delle decisioni deny/instruct
    * Fai clic su un ID di sessione per aprire la sua trascrizione — il visualizzatore rileva automaticamente quale CLI ha attivato l'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`, Hermes `~/.hermes/state.db`, OpenClaw `~/.openclaw/agents/<id>/sessions/*.jsonl`, Factory Droid `~/.factory/sessions/<encoded-cwd>/<id>.jsonl`, Devin `~/.local/share/devin/cli/sessions.db`, Antigravity `~/.gemini/antigravity-cli/brain/<id>/…/transcript_full.jsonl`, Goose `~/.local/share/goose/sessions/sessions.db`) e visualizza il badge CLI corrispondente nell'intestazione
  </Tab>
</Tabs>

***

## Auto-refresh

Il dashboard ha un interruttore di auto-refresh nella navigazione superiore. Quando abilitato, la pagina corrente si aggiorna periodicamente per mostrare nuove sessioni e attività di policy man mano che appaiono. Essenziale per monitorare le sessioni di agenti autonomi di lunga durata.

***

## Disabilitazione delle pagine

Se hai bisogno solo di alcune parti del dashboard, imposta `FAILPROOFAI_DISABLE_PAGES` su un elenco separato da virgole di nomi di pagine:

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

Valori validi: `policies`, `projects`, `audit`.

***

## Configurazione del percorso dei progetti

Per impostazione predefinita, il dashboard legge dalla directory dei progetti Claude Code standard. Sovrascrivi per configurazioni personalizzate:

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

***

## Accesso da un host non-localhost

Quando si esegue il dashboard in **modalità dev** (`npm run dev`) e si accede da un nome host diverso da `localhost` - ad esempio, un dominio personalizzato, un IP remoto o un URL con tunnel — potresti visualizzare un avviso come:

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

Questo è Next.js che blocca l'accesso cross-origin al suo websocket HMR (hot module reload), che è una funzionalità solo per lo sviluppo. Per consentire il tuo host, usa il flag `--allowed-origins`:

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

Per più host o IP, passa un elenco separato da virgole:

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

Puoi anche impostare la variabile d'ambiente `FAILPROOFAI_ALLOWED_DEV_ORIGINS`:

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

<Note>
  Questo si applica solo alla modalità dev. Quando si esegue `failproofai` (modalità produzione), non c'è websocket HMR e nessun problema di risorsa dev cross-origin.
</Note>
