ダッシュボードの起動
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 と同じスキャンを実行しますが、単一画面の共有可能なポスターと折り畳み以降の4つのセクションとしてレンダリングされます:
- ポスター — 最初のビューポートを埋めます。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 キャプチャ領域。キャプチャボックスのすぐ外に3つのシェアボタンがあります:post your archetype(X インテント)、share on linkedin、download poster。キャプチャはhtml-to-imageで実行されるため、PNG は画面表示とピクセル単位で一致します(破線ボーダー、SVG ロゴマスク、グラデーション、フォントメトリクスもすべて保持されます)。 - 強み — 監査データから導出された、エージェントがすでに正しく行っている動作の落ち着いた ✓ 行リスト(クリーンなツール呼び出し率、メインへの直接プッシュなし、認証情報の漏洩なし、リトライストームなし)— 関連するポリシーが監査ウィンドウ全体でクリーンな記録を持つ場合にのみ表示されます。
- クセ — 深刻度順にランク付けされた問題点のテーブル:
いつ・何が漏れた+それを検知するはずのポリシー・深刻度ピル・検出回数。再発回数はnew(1回)、N× seen(2〜9回)、recurring(10回以上)と表示されます。 - 改善方法 — 推奨ポリシーごとの落ち着いた行リスト:ポリシー名を白文字で、1行の説明、右側にインストールコマンド+コピーボタン。セクションヘッダーには
enable all N → projected <score> · <tier>(すべての修正を適用した場合に到達するスコア)が表示され、[install all]ボタンは推奨されるすべてのポリシーをまとめたfailproofai policy add a b c …コマンドをコピーします。 - 次回はもっとよく — 2つの横並びカード。左:リマインダーの設定(
3d/7d/14d/30dのケイデンスピッカー。認証後に/api/auth/reminder経由で保存されます)。右:failproof の特典を解除 —invite a friendはカンマ・スペース・改行区切りの友人のメールアドレスリスト(1回の送信で最大10件)を入力するモーダルを開き、/api/audit/inviteに POST します。api-server のPOST /v0/inviteに転送され、invite@failproof.aiから受信者1人ずつにメールが送信されます。送信者は CC されReply-Toが設定されるため、受信者は誰が招待したかがわかり、送信者も受信トレイにコピーが届きます。匿名ユーザーは先にAuthDialogを経由するため、招待送信前に送信者のメールアドレスが確認されます。エンタイトルメント/特典のフルフィルメントは今後対応予定です。
failproofai audit ランタイムで動作します。基盤となるスキャンエンジン、サポートされるフラグ、トランスクリプトごとのキャッシュの動作については Audit CLI を参照してください。ダッシュボードは最新の結果を ~/.failproofai/audit-dashboard.json(モード 0600、単一スロット、新しい実行で上書き)にキャッシュするため、再訪問は即時に表示されます。トランスクリプトごとのキャッシュと結果全体のキャッシュはいずれも、7日を超えると読み取り時に拒否されます。そのため、ダッシュボードが1週間前の古い結果を無音で提供することはありません。TTL を過ぎると /audit は空の状態にフォールスルーして再実行を促します。レポート下部の [ re-audit now ] をクリックすると noCache: true で /api/audit/run に POST されます。再監査はトランスクリプトごとのキャッシュをバイパスし、キャッシュ結果を返すのではなくすべてのトランスクリプトを最初からスキャンし直します。ダッシュボードは実行が完了するまで 1Hz で /api/audit/status をポーリングし、実行中はビューポート上部にスティッキーなピンクの進行状況バーと経過タイマーが表示されます。成功すると新しい結果がその場で差し替えられます(フルページリロードなし。再監査が失敗した場合は以前のレポートがそのまま残ります)。失敗時はバーが赤くなり、RerunError.kind(timeout / network / post_failed)に応じたメッセージが表示されます。空の状態(キャッシュなしまたは期限切れ)とセッションなしの状態(キャッシュは存在するがスキャンでトランスクリプトが見つからなかった)は別々に表示されます。
ポリシー
ポリシーの管理とアクティビティの確認を行う2タブのページです。- ポリシータブ
- アクティビティタブ
- 単一のパネルから 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 WebSocket は存在せず、クロスオリジン開発リソースの問題も発生しません。
