대시보드 시작하기
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클릭). - 강점 — 라이브 감사 데이터에서 도출된, 에이전트가 이미 올바르게 수행하는 동작들(깨끗한 도구 호출 비율, 평균 세션 길이, 자격 증명 유출 없음, 재시도 폭발 없음 등)을 초록색 체크와 함께 표시합니다.
- 점수 + 리더보드 — 등급 문자(S/A/B/C/D/F)와 함께 0–100 점수, 코호트 내 위치를 보여주는 분포 히스토그램, 산문(“B는 71점부터 시작합니다. 당신은 13점 부족합니다.”), 해당 행이 강조 표시된 리더보드 테이블을 제공합니다.
- 발견 사항 — 영향도 순으로 정렬된 발견 사항 카드. 각 카드에는 발생한 일, 비용, 실제 캡처된 명령어가 포함된 증거 샘플, 동일한 패턴을 포착할 failproofai 정책(
$ failproofai policy add <slug>, 클릭하여 복사)이 표시됩니다. - 권장 정책 + 재실행 루프 — 격차를 해소할 모든 미활성화 빌트인 정책의 그리드(예상 점수 콜아웃 포함), “7일 후 재감사” CTA.
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, 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 웹소켓이 없으므로 크로스 오리진 개발 리소스 문제가 발생하지 않습니다.
