대시보드 시작하기
http://localhost:8020에서 열립니다.
대시보드는 로컬 프로젝트, 세션 및 failproofai 구성 데이터를 파일 시스템에서 직접 읽어옵니다. 감사 알림이나 초대 등 인증이 필요한 선택적 기능은 해당 요청에 필요한 정보(이메일 주소 포함)를 원격 API로 전송합니다.
페이지
프로젝트
머신에서 발견된 모든 Claude Code, OpenAI Codex, GitHub Copilot CLI (베타), Cursor Agent (베타), OpenCode (베타), Pi (베타), Hermes, OpenClaw, Factory Droid, Devin, Antigravity, Goose 프로젝트를 나열합니다. Claude 프로젝트는~/.claude/projects/(또는 CLAUDE_PROJECTS_PATH에 설정된 경로)에서 탐색되며, Codex 프로젝트는 ~/.codex/sessions/<YYYY>/<MM>/<DD>/*.jsonl의 모든 트랜스크립트를 스캔하여 각 세션의 첫 번째 레코드에 기록된 cwd로 그룹화해 탐색됩니다. Copilot CLI 프로젝트는 각 ~/.copilot/session-state/<sessionId>/workspace.yaml((COPILOT_HOME으로 설정 가능))을 스캔하여 cwd 필드로 그룹화해 탐색됩니다. Cursor Agent 프로젝트는 ~/.cursor/agent-sessions/<sessionId>/(CURSOR_HOME으로 설정 가능, conversations/ 및 sessions/를 폴백으로 탐색) 아래의 세션별 메타데이터를 스캔하여 meta.json / session.json / workspace.yaml의 cwd 스칼라를 찾아 탐색됩니다. OpenCode 프로젝트는 opencode db --format json을 통해 ~/.local/share/opencode/opencode.db의 SQLite DB를 쿼리하여(session 및 project 테이블을 읽어 project_id로 그룹화) 탐색됩니다. Pi 프로젝트는 ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl(PI_SESSIONS_DIR로 설정 가능) 아래의 세션별 JSONL 트랜스크립트를 스캔하여 각 세션의 첫 번째 레코드에서 cwd를 가져와 탐색됩니다. Hermes 게이트웨이 세션은 ~/.hermes/state.db(HERMES_DB_PATH로 설정 가능)의 SQLite 스토어에서 직접 읽어 source(Slack/Telegram/cli/cron — 게이트웨이 세션에는 cwd 없음)로 hermes-<source> 프로젝트로 그룹화됩니다. OpenClaw 게이트웨이 세션은 ~/.openclaw/agents/<agentId>/sessions/*.jsonl에서 읽어 openclaw-<agentId> 프로젝트로 그룹화됩니다(마찬가지로 cwd 없음). Factory Droid 프로젝트는 ~/.factory/sessions/<encoded-cwd>/*.jsonl의 JSONL 트랜스크립트에서 탐색되어 cwd로 그룹화됩니다. Devin 프로젝트는 ~/.local/share/devin/cli/sessions.db의 SQLite DB에서(working_directory로 그룹화), Antigravity 프로젝트는 ~/.gemini/antigravity-cli/brain/<conversationId>/…/transcript_full.jsonl의 JSONL 트랜스크립트에서 cwd로 그룹화되어 탐색됩니다. Goose 프로젝트는 ~/.local/share/goose/sessions/sessions.db의 SQLite DB에서 각 세션의 working_dir로 그룹화되어 탐색됩니다. 여러 CLI에서 사용된 프로젝트는 일치하는 모든 배지를 포함한 단일 행으로 표시됩니다. 표 위의 CLI 드롭다운을 사용하여 특정 에이전트 CLI로 필터링할 수 있으며, URL은 선택 항목을 ?cli=claude|codex|copilot|cursor|opencode|pi|hermes|openclaw|factory|devin|antigravity|goose로 보존합니다.
각 프로젝트에는 다음이 표시됩니다:
- 프로젝트 이름 (폴더 경로에서 파생)
- CLI 배지 —
Claude Code(주황),OpenAI Codex(보라),GitHub Copilot(파랑),Cursor Agent(에메랄드),OpenCode(호박색),Pi(분홍),Hermes(인디고) 중 하나 이상 - 가장 최근 세션 활동 날짜
세션
프로젝트 내 모든 세션을 나열합니다. 각 세션에는 다음이 표시됩니다:- 세션 ID
- 시작 및 종료 타임스탬프
- 도구 호출 수
- 훅 활동 횟수 (실행된 정책 수)
세션 뷰어
세션 뷰어는 자율 에이전트의 핵심 질문에 답합니다: 에이전트가 무엇을 했으며, 올바른 방향을 유지했는가? 헤더 옆의 CLI 배지는 해당 세션이 Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, Hermes, OpenClaw, Factory Droid, Devin, Antigravity, Goose 트랜스크립트 중 무엇인지 나타냅니다. 세션에서 발생한 모든 일의 타임라인을 표시합니다:- 메시지 - Claude의 텍스트 응답 및 사용자 프롬프트
- 도구 호출 - Claude가 호출한 모든 도구와 입력 및 출력
- 정책 활동 - 각 도구 호출에 대해 어떤 정책이 실행되었고 어떤 결정을 반환했는지
session / messages / parts 테이블을 미러링한 JSON 문서를 가져옵니다.
감사
과거 세션에서 에이전트가 실제로 어떻게 행동했는지를 개성 있게 보고합니다.failproofai audit CLI와 동일한 스캔을 실행하지만, 전체 화면 공유 가능한 포스터 + 접힌 부분 아래의 네 가지 섹션으로 렌더링합니다:
- 포스터 — 첫 번째 뷰포트를 채웁니다. failproof_ai 워드마크 + 감사 레이블 · 아키타입 인덱스(
№ NN of 08) + 감사 날짜 · 수치 점수(0–100) + 백분위 순위 필(top 15%) · 아키타입 이름(the optimist,the cowboy,the explorer,the goldfish,the paranoid architect,the precision builder,the hammer,the ghost중 하나) + 3개 키워드 스트립 ·// only N% of agents are this archetype희귀도 라인 · 8×8 픽셀 시길 타일 ·audit yours → failproof.ai푸터를 포함하는 독립형 PNG 캡처 영역. 세 개의 공유 버튼이 캡처 상자 바로 바깥에 위치합니다:post your archetype(X 인텐트),share on linkedin,download poster. 캡처는html-to-image를 통해 실행되므로 PNG가 화면 렌더링과 픽셀 단위로 일치합니다(대시 테두리, SVG 로고 마스크, 그라디언트, 글꼴 메트릭 모두 보존). - 강점 — 에이전트가 이미 잘 하고 있는 행동의 차분한 ✓ 행 목록으로, 라이브 감사 데이터(깨끗한 도구 호출 비율, main에 직접 푸시 없음, 자격 증명 유출 없음, 재시도 폭풍 없음)에서 도출됩니다. 관련 정책이 감사 기간 동안 깨끗한 기록을 가진 경우에만 표시됩니다.
- 특이점 — 심각도 순으로 순위가 매겨진 누락된 항목 표:
when · what slipped + the policy that would've caught it · severity pill · seen, 재발 횟수는new(1회),N× seen(2–9회),recurring(10회 이상)으로 표시됩니다. - 개선 방법 — 처방된 정책별 한 행씩의 차분한 행 목록: 흰색으로 정책 이름, 한 줄 설명, 오른쪽에 설치 명령 + 복사 버튼. 섹션 헤더에는
enable all N → projected <score> · <tier>(모든 수정 사항 적용 시 도달할 점수)가 표시되며,[install all]버튼은 모든 처방된 정책에 대한failproofai policy add a b c …명령을 복사합니다. - 더 나은 상태로 돌아오기 — 나란히 배치된 두 개의 카드. 왼쪽: 알림 설정(
3d/7d/14d/30d주기 선택기; 인증 후/api/auth/reminder를 통해 유지). 오른쪽: failproof 혜택 잠금 해제 —invite a friend는 쉼표/공백/줄바꿈으로 구분된 친구 이메일 목록(전송당 최대 10개)을 받는 모달을 열고,/api/audit/invite에 POST하여 api-server의POST /v0/invite로 전달합니다. api-server는invite@failproof.ai에서 수신자마다 한 통의 이메일을 보내며 발신자를 참조하고Reply-To를 설정하므로, 수신자는 누가 초대했는지 알 수 있고 발신자는 받은 편지함에 사본을 받습니다. 익명 사용자는 초대가 발송되기 전에 발신자 이메일을 확인하기 위해 먼저AuthDialog로 이동됩니다. 권한/혜택 이행은 추후 예정입니다.
failproofai audit 런타임에 의해 구동됩니다 — 기본 스캔 엔진, 지원 플래그, 트랜스크립트별 캐시 불변성에 대한 자세한 내용은 감사 CLI를 참조하세요. 대시보드는 최신 결과를 ~/.failproofai/audit-dashboard.json(모드 0600, 단일 슬롯, 새 실행 시 덮어쓰기)에 캐시하므로 재방문 시 즉시 표시됩니다. 트랜스크립트별 캐시와 전체 결과 캐시 모두 7일보다 오래된 경우 읽기 시 거부됩니다. 따라서 대시보드가 일주일 된 결과를 자동으로 제공하지 않습니다 — TTL이 지나면 /audit는 빈 상태로 폴백하여 새 실행을 요청합니다. 보고서 하단의 [ re-audit now ]를 클릭하면 noCache: true로 /api/audit/run에 POST합니다 — 재감사는 트랜스크립트별 캐시를 우회하고 캐시된 결과를 자동으로 반환하는 대신 처음부터 모든 트랜스크립트를 다시 스캔합니다 — 대시보드는 실행이 완료될 때까지 1Hz로 /api/audit/status를 폴링합니다. 실행 중에는 경과 타이머가 포함된 분홍색 진행 표시줄이 뷰포트 상단에 고정되며, 성공 시 새 결과가 제자리에 교체됩니다(전체 페이지 재로드 없음; 재감사 실패 시 이전 보고서가 유지됨). 실패 시 표시줄이 빨간색으로 변하며 RerunError.kind(timeout / network / post_failed)에 따른 복사 메시지가 표시됩니다. 빈 상태(캐시 없음 또는 만료됨)와 세션 없음 상태(캐시는 있지만 스캔에서 트랜스크립트를 찾지 못함)는 별도로 표시됩니다.
정책
정책 관리 및 활동 검토를 위한 두 탭 페이지입니다.- 정책 탭
- 활동 탭
- 단일 패널에서 failproofai가 보호할 에이전트 CLI를 다중 선택 — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, Hermes 각각에 설치 상태(
Active/Detected/Inactive), 사용자 범위 설정 경로, 브랜드 색상 강조가 있는 행. 원하는 CLI를 체크 또는 체크 해제하고Apply changes를 클릭하면 차이점만 한 번에 설치/제거됩니다. PATH에서 바이너리가 감지된 CLI는 미리 체크됩니다. - 클릭 한 번으로 개별 정책 켜기/끄기 (
~/.failproofai/policies-config.json에 기록됨 — 설치된 모든 CLI에서 공유됨) - 정책을 펼쳐서 매개변수 구성 (
policyParams를 지원하는 정책의 경우) - 사용자 정의 정책 파일 경로 설정
자동 새로고침
대시보드 상단 내비게이션에는 자동 새로고침 토글이 있습니다. 활성화하면 현재 페이지가 주기적으로 새로고침되어 새 세션과 정책 활동이 나타나는 즉시 표시됩니다. 장시간 실행되는 자율 에이전트 세션을 모니터링할 때 필수적인 기능입니다.페이지 비활성화
대시보드의 일부 기능만 필요한 경우FAILPROOFAI_DISABLE_PAGES를 쉼표로 구분된 페이지 이름 목록으로 설정하세요:
policies, projects, audit.
프로젝트 경로 구성
기본적으로 대시보드는 표준 Claude Code 프로젝트 디렉토리에서 읽습니다. 사용자 정의 설정을 위해 재정의하세요:localhost가 아닌 호스트에서 접근하기
개발 모드(npm run dev)로 대시보드를 실행하고 localhost 이외의 호스트명(예: 사용자 정의 도메인, 원격 IP, 터널 URL)에서 접근하는 경우 다음과 같은 경고가 표시될 수 있습니다:
--allowed-origins 플래그를 사용하세요:
FAILPROOFAI_ALLOWED_DEV_ORIGINS 환경 변수를 대신 설정할 수도 있습니다:
이 설정은 개발 모드에만 적용됩니다.
failproofai(프로덕션 모드)를 실행할 때는 HMR 웹소켓이 없고 교차 출처 개발 리소스 문제도 발생하지 않습니다.
