Iniciando o dashboard
http://localhost:8020.
O dashboard lê dados locais de projetos, sessões e configurações do failproofai diretamente do sistema de arquivos. Funcionalidades autenticadas opcionais, como lembretes de auditoria e convites, enviam as informações necessárias para essas requisições (incluindo endereços de e-mail) para APIs remotas.
Páginas
Projetos
Lista todos os projetos Claude Code, OpenAI Codex, GitHub Copilot CLI (beta), Cursor Agent (beta), OpenCode (beta), Pi (beta), Hermes, OpenClaw, Factory Droid, Devin, Antigravity e Goose encontrados na sua máquina. Projetos Claude são descobertos a partir de~/.claude/projects/ (ou do caminho definido por CLAUDE_PROJECTS_PATH); projetos Codex são descobertos escaneando todas as transcrições em ~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl e agrupando pelo cwd registrado no primeiro registro de cada sessão; projetos Copilot CLI são descobertos escaneando cada ~/.copilot/session-state/<sessionId>/workspace.yaml (configurável via COPILOT_HOME) e agrupando pelo campo cwd; projetos Cursor Agent são descobertos escaneando metadados por sessão em ~/.cursor/agent-sessions/<sessionId>/ (configurável via CURSOR_HOME, com conversations/ e sessions/ verificados como fallbacks) em busca de um escalar cwd em meta.json / session.json / workspace.yaml; projetos OpenCode são descobertos consultando seu banco SQLite em ~/.local/share/opencode/opencode.db via opencode db --format json (lemos as tabelas session e project e agrupamos por project_id); projetos Pi são descobertos escaneando transcrições JSONL por sessão em ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl (configurável via PI_SESSIONS_DIR) e extraindo o cwd do primeiro registro de cada sessão; sessões do gateway Hermes são lidas diretamente do seu armazenamento SQLite em ~/.hermes/state.db (configurável via HERMES_DB_PATH) e agrupadas em projetos hermes-<source> por source (Slack/Telegram/cli/cron — sessões de gateway não possuem cwd); sessões do gateway OpenClaw são lidas de ~/.openclaw/agents/<agentId>/sessions/*.jsonl e agrupadas em projetos openclaw-<agentId> (também sem cwd); projetos Factory Droid são descobertos a partir das transcrições JSONL em ~/.factory/sessions/<encoded-cwd>/*.jsonl e agrupados por cwd; projetos Devin a partir do seu banco SQLite em ~/.local/share/devin/cli/sessions.db (agrupados pelo working_directory de cada sessão); projetos Antigravity a partir das transcrições JSONL em ~/.gemini/antigravity-cli/brain/<conversationId>/…/transcript_full.jsonl e agrupados por cwd; e projetos Goose a partir do seu banco SQLite em ~/.local/share/goose/sessions/sessions.db (agrupados pelo working_dir de cada sessão). Um projeto que foi utilizado por múltiplos CLIs é renderizado como uma única linha com todos os badges correspondentes. Use o dropdown CLI acima da tabela para filtrar por um agente CLI específico; a URL preserva sua seleção como ?cli=claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose.
Cada projeto exibe:
- Nome do projeto (derivado do caminho da pasta)
- Um badge de CLI —
Claude Code(laranja),OpenAI Codex(roxo),GitHub Copilot(azul),Cursor Agent(esmeralda),OpenCode(âmbar),Pi(rosa) e/ouHermes(índigo) - Data da atividade de sessão mais recente
Sessões
Lista todas as sessões dentro de um projeto. Cada sessão exibe:- ID da sessão
- Timestamps de início e fim
- Número de chamadas de ferramentas
- Contagem de atividade de hooks (políticas que foram acionadas)
Visualizador de sessão
O visualizador de sessão responde à pergunta-chave para agentes autônomos: o que o agente fez e ele se manteve no caminho certo? Um badge de CLI ao lado do cabeçalho indica se a sessão é uma transcrição Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, Hermes, OpenClaw, Factory Droid, Devin, Antigravity ou Goose. Ele exibe uma linha do tempo de tudo que aconteceu em uma sessão:- Mensagens - Respostas de texto do Claude e prompts do usuário
- Chamadas de ferramentas - Cada ferramenta que o Claude invocou, com sua entrada e saída
- Atividade de políticas - Para cada chamada de ferramenta, quais políticas foram acionadas e qual decisão retornaram
session / messages / parts.
Auditoria
Um relatório com personalidade sobre como seu agente realmente se comportou ao longo de sessões anteriores. Executa o mesmo escaneamento que o CLIfailproofai audit, mas o renderiza como um pôster compartilhável em tela única + quatro seções abaixo da dobra:
- Pôster — preenche o primeiro viewport. Região de captura PNG independente com a marca failproof_ai + rótulo de auditoria · índice de arquétipo (
№ NN de 08) + data da auditoria · pontuação numérica (0–100) + pílula de ranking percentil (top 15%) · o nome do arquétipo (um dethe optimist,the cowboy,the explorer,the goldfish,the paranoid architect,the precision builder,the hammer,the ghost) + faixa de 3 palavras-chave · linha de raridade// only N% of agents are this archetype· tile de símbolo 8×8 pixels · rodapéaudit yours → failproof.ai. Três botões de compartilhamento ficam logo fora da caixa de captura:post your archetype(intent no X),share on linkedin,download poster. A captura é feita viahtml-to-image, então o PNG corresponde pixel a pixel ao que está na tela (bordas tracejadas, máscara de logo SVG, gradientes, métricas de fonte — tudo preservado). - Pontos fortes — lista tranquila com ✓ de comportamentos que seu agente já faz certo, derivados dos dados de auditoria ao vivo (taxa limpa de chamadas de ferramentas, sem pushes diretos para main, zero vazamentos de credenciais, zero tempestades de retentativas) — cada um exibido apenas quando a política relevante tem um histórico limpo ao longo da janela de auditoria.
- Peculiaridades — tabela do que escapou, ordenada por severidade:
quando · o que escapou + a política que teria detectado · pílula de severidade · visto, onde a recorrência aparece comonew(uma vez),N× seen(2–9 vezes) ourecurring(10+). - Como melhorar — lista tranquila de linhas, uma por política prescrita: nome da política em branco, descrição em uma linha, comando de instalação + botão de cópia à direita. O cabeçalho da seção exibe
enable all N → projected <score> · <tier>(a pontuação que você alcançaria com todas as correções aplicadas), e seu botão[install all]copia o comando combinadofailproofai policy add a b c …para cada política prescrita. - Volte melhor — dois cartões lado a lado. Esquerda: defina um lembrete (seletor de cadência
3d/7d/14d/30d; persiste via/api/auth/reminderapós autenticação). Direita: desbloqueie vantagens failproof —invite a friendabre um modal que aceita uma lista de e-mails de amigos separados por vírgula/espaço/quebra de linha (máximo 10 por envio), faz POST para/api/audit/invite, que encaminha para oPOST /v0/invitedo api-server. O api-server envia um e-mail por destinatário a partir deinvite@failproof.aicom o remetente em Cc eReply-Todefinido, para que o destinatário veja quem o convidou e o remetente receba uma cópia em sua caixa de entrada. Usuários anônimos são direcionados primeiro peloAuthDialogpara que o e-mail do remetente seja conhecido antes que os convites sejam enviados. Direitos / cumprimento de vantagens é um passo seguinte.
failproofai audit — consulte Audit CLI para o mecanismo de escaneamento subjacente, flags suportadas e invariantes de cache por transcrição. O dashboard armazena em cache o último resultado em ~/.failproofai/audit-dashboard.json (modo 0600, slot único, novas execuções sobrescrevem) para que revisitas sejam instantâneas; tanto os caches por transcrição quanto os de resultado completo são rejeitados na leitura quando têm mais de 7 dias, portanto o dashboard nunca serve silenciosamente um resultado com uma semana de idade — após o TTL, /audit cai para seu estado vazio e solicita uma nova execução. Clicar em [ re-audit now ] próximo ao final do relatório faz POST em /api/audit/run com noCache: true — a re-auditoria ignora o cache por transcrição e re-escaneia cada transcrição do zero em vez de retornar silenciosamente o resultado em cache — e o dashboard faz polling em /api/audit/status a 1Hz até que a execução termine; uma faixa rosa fixa de progresso se prende ao topo do viewport durante a execução com um temporizador de tempo decorrido, e o resultado atualizado substitui no lugar ao concluir com sucesso (sem recarga de página completa; uma re-auditoria com falha mantém o relatório anterior intacto). Em caso de falha, a faixa fica vermelha com texto baseado no RerunError.kind (timeout / network / post_failed). Estado vazio (sem cache ou expirado) e estado de zero sessões (cache existe mas o escaneamento não encontrou transcrições) são exibidos separadamente.
Políticas
Uma página com duas abas para gerenciar políticas e revisar atividades.- Aba Políticas
- Aba Atividade
- Seleção múltipla de quais CLIs de agentes o failproofai protege a partir de um único painel — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi e Hermes têm uma linha com status de instalação (
Active/Detected/Inactive), o caminho de configurações no escopo do usuário e um destaque com a cor da marca. Marque ou desmarque os CLIs que deseja e clique emApply changespara instalar/desinstalar a diferença em uma única etapa. CLIs cujo binário é detectado no PATH são pré-marcados. - Ative ou desative políticas individuais com um único clique (grava em
~/.failproofai/policies-config.json— compartilhado entre todos os CLIs instalados) - Expanda uma política para configurar seus parâmetros (para políticas que suportam
policyParams) - Defina um caminho de arquivo de políticas personalizado
Atualização automática
O dashboard possui um botão de atualização automática na navegação superior. Quando ativado, a página atual é atualizada periodicamente para exibir novas sessões e atividades de políticas conforme aparecem. Essencial para monitorar sessões de agentes autônomos de longa duração.Desabilitando páginas
Se você precisar apenas de algumas partes do dashboard, definaFAILPROOFAI_DISABLE_PAGES com uma lista separada por vírgulas de nomes de páginas:
policies, projects, audit.
Configurando o caminho dos projetos
Por padrão, o dashboard lê do diretório padrão de projetos do Claude Code. Substitua para configurações personalizadas:Acessando a partir de um host diferente de localhost
Ao executar o dashboard em modo dev (npm run dev) e acessá-lo a partir de um hostname diferente de localhost — por exemplo, um domínio personalizado, um IP remoto ou uma URL tunelada — você pode ver um aviso como:
--allowed-origins:
FAILPROOFAI_ALLOWED_DEV_ORIGINS:
Isso se aplica apenas ao modo dev. Ao executar
failproofai (modo de produção), não há websocket de HMR nem problema de recurso dev cross-origin.
