대시보드 시작하기
http://localhost:8020에서 열립니다.
대시보드는 파일시스템에서 직접 데이터를 읽습니다 — Claude Code 프로젝트 폴더와 failproofai 설정 파일을 참조합니다. 원격 서비스에는 아무것도 기록되지 않습니다.
페이지
프로젝트
머신에서 발견된 Claude Code, OpenAI Codex, GitHub Copilot CLI (베타), Cursor Agent (베타), OpenCode (베타), Pi (베타), Gemini CLI (베타) 프로젝트를 모두 나열합니다. 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 프로젝트는 ~/.local/share/opencode/opencode.db의 SQLite DB를 opencode db --format json으로 쿼리하여 검색되며(session 및 project 테이블을 읽고 project_id로 그룹화), Pi 프로젝트는 ~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl(PI_SESSIONS_DIR으로 설정 가능)의 세션별 JSONL 트랜스크립트를 스캔하여 각 세션의 첫 번째 레코드에서 cwd를 추출합니다. Gemini CLI 프로젝트는 ~/.gemini/tmp/<basename>/chats/session-<timestamp>-<uuid-prefix>.jsonl(GEMINI_SESSIONS_DIR으로 설정 가능)을 스캔하고 인접한 .project_root 텍스트 마커에서 정식 cwd를 복원하여 검색됩니다. 여러 CLI에서 사용된 프로젝트는 일치하는 모든 배지와 함께 단일 행으로 표시됩니다. 테이블 위의 CLI 드롭다운을 사용하여 특정 에이전트 CLI로 필터링할 수 있으며, URL에 ?cli=claude|codex|copilot|cursor|opencode|pi|gemini 형태로 선택 내용이 보존됩니다.
각 프로젝트에서 표시되는 정보:
- 프로젝트 이름 (폴더 경로에서 파생)
- CLI 배지 —
Claude Code(주황색),OpenAI Codex(보라색),GitHub Copilot(파란색),Cursor Agent(에메랄드색),OpenCode(황색),Pi(분홍색),Gemini CLI(하늘색) - 가장 최근 세션 활동 날짜
세션
프로젝트 내 모든 세션을 나열합니다. 각 세션에서 표시되는 정보:- 세션 ID
- 시작 및 종료 타임스탬프
- 도구 호출 횟수
- 훅 활동 횟수 (실행된 정책)
세션 뷰어
세션 뷰어는 자율 에이전트에게 가장 중요한 질문에 답합니다: 에이전트가 무엇을 했고, 올바른 방향으로 진행했는가? 헤더 옆의 CLI 배지는 해당 세션이 Claude Code, OpenAI Codex, GitHub Copilot CLI, Cursor Agent, OpenCode, Pi, Gemini CLI 트랜스크립트인지 나타냅니다. 세션에서 발생한 모든 일의 타임라인을 보여줍니다:- 메시지 - Claude의 텍스트 응답과 사용자 프롬프트
- 도구 호출 - Claude가 호출한 모든 도구와 입력 및 출력
- 정책 활동 - 각 도구 호출에 대해 어떤 정책이 실행되었고 어떤 결정을 내렸는지
session / messages / parts 테이블을 반영한 JSON 문서를 받습니다.
감사
과거 세션에서 에이전트가 실제로 어떻게 행동했는지에 대한 개성 있는 보고서입니다.failproofai audit CLI와 동일한 스캔을 실행하지만 6개 섹션의 대시보드로 렌더링됩니다:
- 정체성 — 실행된 감지기와 정책의 종류와 빈도에 따라 에이전트를 8가지 유형(
the optimist,the cowboy,the explorer,the goldfish,the paranoid architect,the precision builder,the hammer,the ghost) 중 하나로 분류합니다. 8×8 픽셀 시질, 유형 태그라인, “common in” / “primary risk” 프레이밍, 마무리 한 줄을 렌더링합니다. - 에이전트 자랑하기 — X / LinkedIn 게시에 적합한 1200×630 PNG로 정체성 카드를 캡처합니다(
make poster클릭). - 강점 — 라이브 감사 데이터에서 도출된 에이전트가 이미 잘 하고 있는 행동들을 녹색 체크로 표시합니다(깔끔한 도구 호출 비율, 평균 세션 길이, 자격 증명 유출 없음, 재시도 폭풍 없음 등).
- 점수 + 리더보드 — 0~100점 및 등급(S/A/B/C/D/F), 코호트에서의 위치를 보여주는 분포 히스토그램, 산문 설명(“B 등급은 71점부터 시작합니다. 당신은 13점 부족합니다.”), 내 행이 강조된 리더보드 테이블.
- 발견사항 — 영향도 순으로 정렬된 발견사항 카드. 각 카드는 발생한 일, 비용, 실제 캡처된 명령어가 포함된 증거 샘플, 동일한 패턴을 잡을 수 있는 failproofai 정책(
$ failproof policy add <slug>, 클릭으로 복사)을 보여줍니다. - 권장 정책 + 재실행 루프 — 격차를 해소할 수 있는 모든 미활성 내장 정책 그리드와 예상 점수 콜아웃, “7일 후 재감사” CTA.
failproofai audit 런타임으로 구동됩니다 — 기반 스캔 엔진, 지원 플래그, 트랜스크립트별 캐시 불변성에 대해서는 감사 CLI를 참조하세요. 대시보드는 최신 결과를 ~/.failproofai/audit-dashboard.json에 캐시하므로(모드 0600, 단일 슬롯, 새 실행이 덮어씀) 재방문 시 즉시 표시됩니다. [ Re-run ↻ ]을 클릭하면 /api/audit/run에 POST 요청을 보내고 대시보드는 실행이 완료될 때까지 1Hz로 /api/audit/status를 폴링합니다. 빈 상태(캐시 없음)와 세션 없음 상태(캐시는 있지만 스캔에서 트랜스크립트를 찾지 못함)는 별도로 표시됩니다.
정책
정책 관리 및 활동 검토를 위한 두 개의 탭 페이지입니다.- 정책 탭
- 활동 탭
- 단일 패널에서 failproofai가 보호할 에이전트 CLI를 다중 선택합니다 — Claude Code, OpenAI Codex, GitHub Copilot, Cursor Agent, OpenCode, Pi, Gemini CLI 각각에 설치 상태(
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 웹소켓이 없으므로 크로스 오리진 개발 리소스 문제가 발생하지 않습니다.
