ダッシュボードの起動
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 プロジェクトは ~/.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 を取得することで検出されます。Hermes ゲートウェイセッションは ~/.hermes/state.db(HERMES_DB_PATH で設定可能)の SQLite ストアから直接読み込まれ、source(Slack/Telegram/cli/cron)で hermes-<source> プロジェクトにグループ化されます(ゲートウェイセッションには cwd がありません)。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 で使用されたプロジェクトは、該当するすべてのバッジを持つ1行として表示されます。テーブル上の 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 と同じスキャンを実行しますが、1画面で共有可能なポスター形式と、その下の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行の落ち着いた行リスト:白色のポリシー名、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に転送されます。api-server はinvite@failproof.aiから各受信者に1通のメールを送信し、送信者が Cc に追加されReply-Toが設定されるため、受信者には誰が招待したかが分かり、送信者もコピーを受信トレイで受け取れます。匿名ユーザーは招待が送信される前に送信者のメールアドレスを確認するため、最初にAuthDialogにルーティングされます。エンタイトルメント・特典の履行は今後のフォローアップ項目です。
failproofai audit ランタイムによって動作します — 基盤となるスキャンエンジン、サポートされるフラグ、トランスクリプトごとのキャッシュ不変条件については Audit CLI を参照してください。ダッシュボードは最新の結果を ~/.failproofai/audit-dashboard.json(モード 0600、単一スロット、新しい実行で上書き)にキャッシュするため、再訪問は即座に表示されます。トランスクリプトごとのキャッシュと全体結果のキャッシュは、7日以上経過すると読み取り時に拒否されます。これにより、ダッシュボードが1週間前の結果を無言で返すことはありません — TTL を過ぎると /audit は空の状態にフォールスルーして新しい実行を促します。レポート下部の [ re-audit now ] をクリックすると /api/audit/run に noCache: true で POST されます — 再監査はトランスクリプトごとのキャッシュをバイパスし、キャッシュされた結果を無言で返すのではなく、すべてのトランスクリプトを最初からスキャンし直します — ダッシュボードは実行が完了するまで 1Hz で /api/audit/status をポーリングします。実行中は経過タイマー付きのスティッキーなピンクのプログレスストリップがビューポート上部に固定表示され、成功すると新しい結果がページ全体をリロードせずにその場で置き換えられます(再監査が失敗した場合は以前のレポートがそのまま残ります)。失敗時はストリップが赤くなり、RerunError.kind(timeout / network / post_failed)に応じたコピーが表示されます。空の状態(キャッシュなしまたは期限切れ)とセッションゼロ状態(キャッシュは存在するがスキャンでトランスクリプトが見つからなかった)は別々に表示されます。
ポリシー
ポリシーの管理とアクティビティの確認のための2タブページです。- ポリシータブ
- アクティビティタブ
- 1つのパネルから 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 WebSocket やクロスオリジン開発リソースの問題は発生しません。
