Skip to content

HTTP API リファレンス

Chronicle は 1 つのローカルポート上で 3 つのマウントを公開します。/api(REST API)、/share(公開用のリダクション済みページ)、/mcp(集約型 MCP サーバー)です。このページは、コントリビューターや、稼働中のインスタンスに対してスクリプトを書く人のための、ルートレベルのリファレンスです。

すべては単一のオリジンから配信されます — dev(npm run dev)では http://localhost:4173、desktop/standalone では http://localhost:41730 — そして 3 つの実行モードすべてをまったく同じ Express アプリが支えています(アーキテクチャ概要 を参照)。リクエストはローカルのみで、standalone サーバーは 127.0.0.1 にバインドします。

マウント

マウントソース配信するもの
/apiserver/api.jsREST API — 特記なき限り以下のすべてのルート
/shareserver/shares.js公開・リダクション済み・トークン化されたセッションページ(HTML)
/mcpserver/mcp/hub.js集約型 MCP サーバー(Streamable HTTP、JSON-RPC)

注意: /mcp(MCP プロトコルのエンドポイント)は、/api/mcp/* ルート(サービスを一覧しテイクオーバーを駆動する管理用 REST API)とは別物です。下流の MCP クライアントは /mcp と話し、Chronicle UI は /api/mcp/* と話します。MCP と Skills の内部 を参照してください。

以下の表のすべてのパスは /api からの相対です — 例えば GET /projectsGET http://localhost:41730/api/projects です。

インポートとスキャン

メソッドパス目的
GET/scan6 つのツール全体でインポート可能なセッションを発見する(論理プロジェクト単位でグルーピング)
POST/import選択されたセッションを SQLite ストアにインポートする(セッションごとに replaceSession

プロジェクト

メソッドパス目的
GET/projectsライブの git ピル情報とともにプロジェクトを一覧する(repoInfo が呼び出しごとに git を実行)
GET/projects/:idプロジェクト分析ホーム。時間範囲を絞る ?days=N を受け付ける
PATCH/projects/:idプロジェクトをリネームする
DELETE/projects/:idプロジェクトとそのセッションを Chronicle から削除する
POST/projects/:id/associate仮想(例: Gemini)プロジェクトを実リポジトリのパスに関連付ける
POST/projects/:id/syncプロジェクトのすべてのセッションを再スキャン・再インポートする
POST/projects/:id/unlink関連付けを取り消す

セッション

メソッドパス目的
GET/sessions/:id/messagesセッションの完全なメッセージリスト
PATCH/sessions/:idセッションをリネームする(ユーザーの name 上書きを設定)
DELETE/sessions/:idセッションの Chronicle コピーを削除する
DELETE/sessions/:id/source-file基盤となるソースログを削除する(1 ファイル = 1 セッションの場合のみ)
POST/sessions/:id/syncこのセッションだけを再インポートする(UI では ⇧⌘U
GET/sessions/:id/causalityread→change の因果関係分析(analyzeCausality
GET/sessions/:id/liveSSE ストリーム — ライブメッセージの追尾(下記参照)
GET/sessions/:id/security-checkセッションをスキャンして秘密情報を探す(scanSession のペイロード)
GET/sessions/:id/export-redactedセッションをリダクション済み Markdown としてエクスポートする
POST/sessions/:id/share共有トークンを発行する(作成時に凍結されたリダクション済みコピー)
GET/sessions/:id/replay-planリプレイのステッププランを構築する(buildPlan

ライブ SSE ストリーム

GET /api/sessions/:id/live は JSON ではありませんtext/event-stream にアップグレードし、data: フレームをプッシュします。フレームは { type: 'status', status: 'live' | 'stopped', ... }{ type: 'messages', events: [...] } のいずれかです。ウォッチャーは接続が閉じると自動停止します。セキュリティ、ライブ、リプレイの内部 を参照してください。

Git

メソッドパス目的
GET/git/atタイムスタンプ以前で最も近いコミット(commitAt
GET/git/treeあるコミットでのファイルツリー(treeAt
GET/git/fileあるコミットでのファイル内容 + 差分用のその以前のバージョン(fileAt

これらは server/git.js に対する読み取り専用のラッパーで、git を呼び出します。Git スナップショットエンジン を参照してください。

検索

メソッドパス目的
GET/searchmessages.text + tool_input に対する LIKE ベースの全文検索。セッション単位でグルーピング(空クエリ → 最近のセッション)

ライブ

メソッドパス目的
GET/live/statusアクティブなライブウォッチャーを一覧する(liveStatus

セキュリティ

メソッドパス目的
GET/security/rulesリダクション/許可ルールを一覧する
POST/security/rulesカスタムルールを追加する
PATCH/security/rules/:idルールを有効化/無効化する
DELETE/security/rules/:idルールを削除する
GET/security/interceptions最近の pre-tool-use インターセプト記録
POST/security/pretooluseツール呼び出しをスキャンする。{ decision: 'allow' | 'block', ... } を返す(フックから呼ばれる)
POST/security/install-hookClaude Code の PreToolUse フックをインストールする(まず設定をバックアップ)

Skills

メソッドパス目的
GET/skills中央 skills を一覧する(ツールごとのリンク状態付き)
GET/skills/scanツールのディレクトリをスキャンし、importable/managed/duplicate/broken な skills を探す
POST/skills/importスキャンされた skill を中央ストアにインポートする
POST/skills/github公開 GitHub リポジトリから skills をインポートする(浅いクローン、SHA を記録)
GET/skills/:idskill の詳細 + SKILL.md の内容
PATCH/skills/:idローカルメタデータ(タグ、評価)を更新する
DELETE/skills/:idskill を削除する(中央ファイルも削除するには ?removeFiles=1
POST/skills/:id/linkskill をツールのディレクトリにシンボリックリンクする
POST/skills/:id/unlinkChronicle が作成したシンボリックリンクを削除する
GET/skills/:id/snapshotsバージョンスナップショットを一覧する
POST/skills/:id/restoreスナップショットを復元する
POST/skills/:id/check-upstream記録された SHA をリモートの tip と比較する(ls-remote

MCP 管理

これらはレジストリを管理し、ハブを駆動します。/mcp プロトコルエンドポイントとは別物です。

メソッドパス目的
GET/mcp/services登録されたサービスを一覧する(秘密情報はマスク済み)
POST/mcp/servicesサービスを追加/更新する
PATCH/mcp/services/:idサービスを更新する(有効化、スコープ、クレデンシャル、ツールポリシー)
DELETE/mcp/services/:idサービスを削除する
GET/mcp/scanツールの設定をスキャンし、New/Updated/Conflict/Unchanged に分類する
POST/mcp/takeoverスキャンされたサービスをインポートする(まずソース設定をバックアップ)
GET/mcp/statusハブのステータス(プロトコルバージョン、サービス/セッション数)
GET/mcp/tools集約されたツールリスト(aggregateTools('*')) — インスペクター
POST/mcp/call名前空間付きの service__tool を呼び出す — インスペクター
GET/mcp/logハブの JSON-RPC リングバッファログ — インスペクター

リプレイ

メソッドパス目的
GET/replay/preview来たるべきステップの差分をサンドボックス状態に対してプレビューする
POST/replay/startセッション開始スナップショットからサンドボックスを作成/シードする
POST/replay/step1 ステップを実行する(Bash には { confirmCommand } が必須)
POST/replay/openサンドボックスを OS のファイルブラウザで開く

フィードバック

メソッドパス目的
POST/feedback~/.chronicle/feedback.log に追記し、ホスト型リレーに転送する

共有の管理

メソッドパス目的
GET/shares共有トークンを一覧する(閲覧数、有効期限)
DELETE/shares/:id共有を失効させる

そして /share マウント上:

メソッドパス目的
GET/share/:token公開のリダクション済み HTML ページ(有効期限切れ/失効すると 404)

データ形状

メッセージ行とセッション行は正規化イベントモデルに従います — SQLite スキーマ、kind 列挙(user \| assistant \| thinking \| tool_use \| tool_result、加えて note)、そして replaceSession() がユーザー設定の name を保持しつつインポートを冪等にする仕組みについては データモデル を参照してください。

ここで特筆すべき形状が 1 つあります。セッションごとの sessions.usage カラムは、モデルをキーとし、キャッシュ書き込みのバケットが分割された JSON です。

json
{
  "claude-opus-4-8": {
    "input": 12000,
    "output": 3400,
    "cacheWrite5m": 800,
    "cacheWrite1h": 0,
    "cacheRead": 45000
  }
}

コストはこれから src/models.js(静的な価格表)によってローカルで計算されます — ログはトークンを保持するのであって、ドルは保持しません。

関連ページ

Released under the MIT License.