chat-recall について
chat-recallは、AIコーディングツールの会話記録を索引化し、検索可能な共有履歴、セキュリティ検出、コード改善案、タスク管理を提供します。複数のコーディングエージェントを使う開発者やチーム向けで、MCPツールを通じてツール間の共有知識を検索・更新できます。
主な機能
- 01コーディングセッション履歴の横断検索
- 02時間軸に沿ったチーム知識の共有
- 03会話記録内の漏えい認証情報を検出
- 04リポジトリの指摘事項を順位付けして追跡
- 05リポジトリ別ルール付き共有タスクボード
- 06過去の類似セッションに基づく再開ヒント
活用シーン
- 01過去のコーディングセッションの決定事項を検索
- 02漏えいした認証情報が有効か確認
- 03リポジトリの指摘事項をタスクとして追跡
- 04類似する過去の作業をエージェントに通知
MCP 対応
chat-recallは、セッション履歴の検索、再生、比較に加え、共有知識、セキュリティ検出、コード改善案、タスクを扱う63個のMCPツールを提供します。MCPサーバーは、対応するコーディングツールやクライアントに登録できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://chatrecall.dev/mcpclaude mcp add --transport http munhq-chat-recall https://chatrecall.dev/mcp{"mcpServers":{"munhq-chat-recall":{"type":"http","url":"https://chatrecall.dev/mcp"}}}Cursor で開く{"servers":{"munhq-chat-recall":{"type":"http","url":"https://chatrecall.dev/mcp"}}}VS Code で開く{"mcpServers":{"munhq-chat-recall":{"type":"http","url":"https://chatrecall.dev/mcp"}}}{"mcpServers":{"munhq-chat-recall":{"serverUrl":"https://chatrecall.dev/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
chatrecall.dev · 仕組み · MCP ツール · 料金 · セルフホスト · セキュリティ
AI コーディングツールがすでに書き残している内容を、チームで共有するナレッジ、漏えいしたシークレットのアラート、優先順位付けされたコードの指摘、追跡可能なタスクに変えます。
エージェントはすべて書き残しました。誰も読みませんでした。
実行しているすべてのコーディングエージェントは、作業の完全なトランスクリプトを保持しています。決定事項、推論、誰かが貼り付けたキー、発見したものの報告されなかった問題などです。それぞれが独自の形式で独自のディレクトリに書き込み、互いの内容を読めず、それらを読むものもありません。chat-recall は、63 個の MCP ツールを通じてそれを実現します。
| 機能 | ツール | |
|---|---|---|
| 共有 AI ナレッジ | あるエージェントが学習した決定事項、規約、プロジェクトの事実を、ほかのすべてのエージェントとチームメンバーが利用できます。時間を考慮するため、置き換えられた決定は置き換え済みとして扱われます | 16 |
| セキュリティの指摘 | 過去の会話に貼り付けられた認証情報をセッションごとに検出し、現在も有効かどうかを確認して、ローテーションまたは却下されるまで追跡します | 4 |
| コードの自動改善 | リポジトリで実際に修正する価値のあるものに優先順位を付け、リポジトリ自体のコードインテリジェンスを活用しながら、推奨事項を適用または却下します | 9 |
| タスク管理 | これらの指摘を取り込む共有ボードです。リポジトリごとにルールを設定でき、指摘を単なる報告ではなく作業につなげます | 5 |
この 4 つすべての基盤となるのは、ツールがすでに書き込んだすべてのセッションを収録する 1 つのインデックスと、それを検索、再生、差分表示する 28 個のツールです。このインデックスは仕組みであり、売り文句ではありません。これが購入の理由でもありません。
ツールをまたいで使えることが、機能の要です。単一ツールに組み込まれた履歴は、そのツールの境界で途切れます。これはそうではなく、チームも同じです。
動作を確認する
以下の画面はすべて、デモアカウントで実際のサーバーから取得した実際の出力です。モック、再生、タイミングの変更は一切ありません。
1 つのインデックスですべてのツールを網羅。 検索ではファイル名ではなく、セッション内で 何が話し合われたか によってセッションを見つけられます。また、memory status では、セッションと、それらを生成したスキル、MCP、コマンド、サブエージェント、フックを並べて、すべてのソース種別を 1 か所で確認できます。

または、英語でそのまま尋ねるだけです — ツール名もセッション ID も必要ありません。エージェントが呼び出しを自分で選びます。

貼り付けた認証情報も検出し、まだ使えるかどうかを確認します。 無効なキーは整理の対象です。有効なキーはインシデントであり、有効なキーだけがアラートを発します。

インストール
npx chat-recall init
これにより、ディスク上にあるトランスクリプトがインデックス化され、インストールされている AI ツールが検出され、それぞれの設定に MCP サーバーが登録されます。
| ツール | 書き込み先のファイル |
|---|---|
| Claude Code | ~/.mcp.json |
| Codex | ~/.codex/config.toml |
| OpenCode | ~/.config/opencode/opencode.json |
| Cursor | ~/.cursor/mcp.json |
このマシンにあるツールの設定だけを変更し、手動で整えた項目を上書きすることはありません。また、chat-recall doctor はツールごとに 1 行を出力するため、登録漏れを確認できます。Claude Code 内では、代わりにスキルと MCP サーバーをまとめてインストールできます。
/plugin marketplace add munhq/chat-recall
/plugin install chat-recall@chat-recall
そのほかの MCP クライアント(Claude Desktop、Windsurf、Zed、Cline、または init が認識しないツール)では、同じサーバーを JSON 項目として登録します。実行ファイル名は chat-recall-mcp です。そのため、パッケージ名だけでは足りません。npx -y chat-recall は CLI を起動し、サーバーは起動しません。
{
"mcpServers": {
"chat-recall": {
"command": "npx",
"args": ["-y", "-p", "chat-recall", "chat-recall-mcp"]
}
}
}
claude mcp add 形式のクライアント向けに、同じコマンドを 1 行で記すと次のとおりです:npx -y -p chat-recall chat-recall-mcp。
次に:
chat-recall search "that auth bug" # search everything you have ever done
chat-recall recent # what was I working on
デフォルトでは、これはホステッドサーバー chatrecall.dev に同期します。クレジットカード不要の 7 日間トライアルが始まり、その後は有料サブスクリプションになります。詳しくは料金をご覧ください。すべてを自分のマシン上に置くには、サーバーを自分で実行してください。こちらは1 人なら永久に無料で、タスクボードと Toolkit を含むすべての機能をライセンスキーなしで利用できます。ライセンスが必要になるのは、2 人目のメンバー、履歴の共有、作業の割り当てといったコラボレーション機能を使う場合だけです。下記のセルフホストをご覧ください。どちらの場合も、CLI は同じバイナリでコマンドも同じです。異なるのはサーバー URL だけです。
API キーは必要ありません。検索には Postgres の全文検索を使用します。AI による要約は任意の拡張機能であり、必須ではありません。
マシンから外に出ないもの
このディスク上のすべての AI セッションをインデックス化するため、init を実行すると、アップロードされる内容(件数、ツール、プロジェクト名)が表示され、初回同期の前に確認を求めます。(--yes を指定した場合、または TTY がない場合は、同じ概要を表示して続行します。--skip-sync を指定すると、アップロードを完全に保留します。)シークレットはクライアント側でマスキングされ、プロジェクトのパスはハッシュとして送信されます。さらに、対象範囲は次のように設定できます。
chat-recall exclude project ~/work/client # a path, and everything under it, never syncs
chat-recall exclude tool cursor # one AI tool never syncs
chat-recall sync-only add git:github.com/me/app # invert it: ship ONLY what you list
chat-recall sources decline ~/.claude-work # a whole transcript profile stays out
# (--delete-remote purges what it already sent)
chat-recall exclude list # every rule in force
chat-recall delete <session-id> # purge one session on every server, tombstoned
chat-recall retention # how long the server keeps what you sent
chat-recall retention set 90 # delete anything older, on a timer (0 = keep everything)
一部のツールは、プロジェクトフォルダーではなくハッシュ名の下にトランスクリプトを保存するため、それらのセッションにはパスルールが照合できるパスがありません。こうしたセッションには exclude tool で対応します。init はその件数を表示します。保持期間を設定すると、サーバー上のデータがタイマーに従って削除されます。 retention set は削除対象のセッション数を表示し、その数を確認するよう求めます。取り消せるのは、元のトランスクリプトが手元のマシンにまだ残っている場合だけです。保持期間を延ばして chat-recall sync --full を実行すると、対象に含まれるデータを再送信します。手放したノート PC、AI ツールによってローテーションされた履歴、削除したファイルの場合、当社のコピーが唯一のコピーです。必要であれば、先にエクスポートしてください。
除外設定はデータを保持するマシン上にあるため、CLI が管理します。次回の同期から適用され、すでに同期済みの行は削除するまで残ります。ダッシュボードの Sync rules パネルでは、すべてのデバイスに適用されるルールを追加できます。ローカルのルールと統合されるため、保護が強化されることはあっても、弱まることはありません。制限を含むモデルの全容については、セキュリティをご覧ください。
実際にできることは4つです
- ツールを横断した統合メモリ。 Claude Code(
~/.claude/projects/)、Codex(~/.codex/)、OpenCode(~/.local/share/opencode/)、Antigravity(~/.gemini/antigravity-cli/)、Cursor(CLI は~/.cursor/、IDE は~/.config/Cursor/)、Hermes Agent(~/.hermes/)、Pi(~/.pi/agent/)を、単一のインデックス、検索、UI で利用できます。セッション、プラン、タスク、CLAUDE.md ファイル、ペーストキャッシュ、シェル履歴、エージェントの日誌は、すべてプラグイン可能なMemorySourceインターフェイスを共有します。 - エージェントが自分で過去を思い出します。 63 個の MCP ツールにより、Claude Code は、前回何があったかをユーザーに尋ねる代わりに、
recall_smart_resume、recall_search(類似した作業を探すlike_session付き)、recall_edits_timeline、recall_subagent_search、recall_redundant_filesを利用できます。recall_decision_record、recall_kg_add、recall_setを使って、情報を書き戻すこともできます。 - 同じ作業のやり直しを事前に警告します。
UserPromptSubmitフックは、プロンプトを受け取るたびに類似する過去のセッションを検索し、「以前、セッション X で同じことをしています」という短いメモをエージェントのコンテキストに挿入します。 - 時間情報を扱うナレッジグラフ。 決定事項やツールへの言及は、
valid_from/valid_toの期間を持つエンティティ・リレーションシップのトリプルになります。これにより、3月に何が決定されたか、またその決定が現在も有効かを尋ねることができます。
独自の AI ツールを追加する
新しいバックエンドは、エンジンを変更せずに、1つのファイルと1行の追加だけで作成できます。使用中のツールがトランスクリプトをディスクに書き込むのであれば、ここでインデックス化できます。実現するには、プルリクエストを送るのが最も早い方法です。
オプション:ウェブダッシュボード
React ダッシュボードは サーバー(SaaS またはセルフホストの Docker Compose)の一部であり、CLI 自体に UI はありません。ダッシュボードを開発するには、次の手順に従ってください。
npm run web:install # install web deps
npm run web:dev # API on :5000, UI on :5174
サーバーをセルフホストする(Docker Compose)
すべてを自分のマシン上で実行できます。アカウントは不要で、データがどこかに送信されることもありません。
git clone https://github.com/munhq/chat-recall && cd chat-recall
echo "ADMIN_KEY=$(openssl rand -hex 24)" >> .env
echo "POSTGRES_PASSWORD=$(openssl rand -hex 24)" >> .env
docker compose up -d --build # FIRST RUN BUILDS FROM SOURCE (minutes)
次にデバイストークンを発行してマシンを接続します。トラブルシューティングを含む手順の全体は、docs/SELF_HOSTING.md をご覧ください。
コンテナは2つです。サーバーと、同梱の pgvector/pgvector Postgres で構成されるため、通常の docker compose up だけで完結します。Postgres を自分で用意する構成にも対応しています(ホスト型サービスでもこの構成を使用しています)。外部の Postgres 16 以降を使う場合は、DATABASE_URL を設定してください。
インデックスを常に最新の状態に保つ(サーバー同期は任意)
デーモンは必要ありません。Claude Code が MCP サーバーを起動し、そのプロセスが自動で 3 分ごとに同期します。つまり、バイナリ自体がデーモンです。アシスタントを実行していないヘッドレスマシンでは、バックグラウンドサービスを有効にできます。
chat-recall watch # foreground daemon: watches every tool, summaries, precompute
chat-recall watch --install-service # systemd user unit (Linux) · launchd (macOS) · Scheduled Task (Windows)
意図的に、init ではインストールされません。どちらの方法も、同じクロスプラットフォームのインデックスロックのもとで同じ syncIncremental() を実行するため、台帳にアクセスする書き込み元は常に 1 つだけです。変更する前に、docs/SYNC.md を確認してください。シークレットは、マシンの外部に送信される前にクライアント側でマスクされます。chat-recall sync を実行すると、同じ同期を必要に応じて一度だけ行います。
Claude Code に接続する
chat-recall init が設定を行います。~/.mcp.json で手動設定する場合は、次のとおりです。
{
"mcpServers": {
"chat-recall": {
"command": "chat-recall-mcp"
}
}
}
chat-recall-mcp はリレーであり、サーバーではありません。ツールプロファイル用のバックグラウンドデーモンを探し、見つからない場合は起動して、バイト列をデーモンに渡します。そのため、マシン上のすべてのセッションがそれぞれ独自のエンジンを読み込むのではなく、読み込み済みのエンジンを共有します。単一の共有デーモンと比べて、セッションあたりのメモリ使用量は約 87 MB から約 50 MB になり、バックグラウンド同期も、すべてのセッションでロックを奪い合うのではなく、1 つのプロセスで実行されます。最後のセッションが終了してから 15 分後に、デーモンは終了します。
任意で設定できる項目は 2 つあります。
CHAT_RECALL_NO_DAEMON=1 # load the whole server in each session instead
CHAT_RECALL_DAEMON_IDLE_SECS=0 # keep the daemon resident (default 900)
何らかの理由でデーモンに接続できない場合、セッションはサーバーを自身で読み込んで、従来どおり動作します。速度は低下しますが、機能が損なわれることはありません。
続いて、フックをインストールします(1 つのコマンドで、自動保存、コンパクション前のバックアップ、作業のやり直しを防ぐための警告を表示する再開ヒントを設定できます)。
chat-recall install-hooks # registers all five events, in every Claude profile
chat-recall install-hooks --no-resume-hint # skip the resume warning
chat-recall install-hooks --no-wakeup # skip the session-start wake-up bundle
chat-recall install-hooks --no-escalate # skip the session-end escalation
chat-recall install-hooks --uninstall # remove all of ours, leave third-party hooks alone
| フック | 実行タイミング | 動作 |
|---|---|---|
SessionStart | 新しいセッション(startup / clear) | プロジェクトに対応した起動時の情報を注入します |
UserPromptSubmit | プロンプトを入力したとき | 過去のセッションを検索し、類似するセッションがあれば、「以前もこれに取り組みました」という情報をエージェントのコンテキストに注入します |
Stop | アシスタントの各ターンの後 | トピック、決定事項、ツールを ~/.chat-recall/memory/ に自動保存します |
PreCompact | Claude Code がコンテキストをコンパクト化する前 | コンパクト化で情報が失われないよう、緊急保存します |
SessionEnd | セッション終了時 | セッションで得た知見をバックグラウンドで昇格させ、遅延が生じないようにします |
判断ガード
誰にも読まれない判断は、ただの提案です。chat-recall guard はツール呼び出しの前に実行され、その呼び出しがすでに却下されたものに手を伸ばしたときに知らせます。
chat-recall: this reaches for something already decided against.
- keycloak was ruled out — BetterAuth is the decision (2026-03-14) · session 8f2c1a4e
Proceed only if this is a deliberate reversal. If it is, record it:
recall_decision_record with the area, so the old decision is closed rather than contradicted.
インストール、インポート、マニフェストの編集で作動します。たとえば、npm install auth0、新しい import 行、package.json への名前の追加です。文章には作動しません。「Auth0を使う手もあります」という文で何かを止めてはいけません。そうでないと、ガードは無効にされてしまいます。
警告を出しますが、ブロックはしません。 誤ったブロックはユーザーの手番を奪い、ガードをアンインストールされる原因になります。誤った警告で失われるのは、コンテキストの1行だけです。マシンごとに CHAT_RECALL_GUARD_ENFORCE=1 を設定すると、代わりにブロックします。CHAT_RECALL_GUARD=0 にすると無効になります。
chat-recall install-hooks は、5つすべてのツールに登録します。各ツールは実行前フックをそれぞれ別のファイルに保持するため、インストーラーは5種類の形式を書き込み、マシンにないツールはスキップします(すべてスキップするには --no-guard を指定します)。
| ツール | 場所 | イベント |
|---|---|---|
| Claude Code | ~/.claude/hooks.json、すべてのプロファイル | PreToolUse |
| Codex | ~/.codex/hooks.json | PreToolUse |
| Antigravity | ~/.gemini/antigravity-cli/hooks.json | PreToolUse — 実際の ask 判定を行える唯一のツールなので、プロンプトを表示できます |
| Cursor | ~/.cursor/hooks.json | beforeShellExecution + afterFileEdit |
| OpenCode | ~/.config/opencode/plugins/chat-recall-guard.js | tool.execute.before |
Codexではもう1つ手順が必要です。 フックは、信頼する設定にした後でのみ実行されます。Codexを開き、/hooks を1回実行してください。chat-recall doctor は各ツールの登録状況を報告します。
このうち2つは網羅性が完全ではありません。誤解を招く表現は避け、その点もドキュメントに明記しています。Cursor が公開しているのは beforeShellExecution と afterFileEdit のみなので、編集で追加されたインポートは書き込み後に報告され、事前には防止されません。OpenCode のプラグインフックはサブエージェントのツール呼び出しでは作動しないため(#5894)、処理を委任するエージェントはそのチェックを回避します。
関連ツール:codeindex(自動検出)
munhq が開発した codeindex という別のMCPサーバー(Zig製バイナリ、約56 MB)が、エージェントにコードレベルの検索機能を提供します。この2つは組み合わせて使えます。
- chat-recall = セッションメモリ。何に取り組んだか? 何を決めたか?
- codeindex = コードメモリ。このシンボルはどこにあるか? 何から呼び出されるか? 変更すると何が壊れるか?
組み合わせることで、エージェントは作業をやり直す前に、「これを以前に作ったことがあるか?」そして「このコードベースにすでに存在するか?」に答えられます。
chat-recallでの扱い方: chat-recall init は、codeindex が PATH 上(または ~/.local/bin/codeindex)にあるかどうかを検出します。存在する場合は、ダウンロードや予期しない動作を伴わず、自動的に ~/.mcp.json へMCPサーバーとして登録します。存在しない場合は、入手方法を1行で案内します。
chat-recall init # default — detect and register if installed
chat-recall init --with-codeindex # additionally force-download the binary
chat-recall init --skip-codeindex # don't even check
chat-recall companions install # download manually (after init)
chat-recall companions status # show what was detected
chat-recall companions uninstall # remove the binary + MCP registration
codeindex は github.com/munhq/codeindex で公開されているオープンソース(MIT)です。インストールは任意です。chat-recallはこれがなくても完全に動作しますが、コードレベルのツールは利用できません。
インデックス対象
| ソース | 保存元 | 備考 |
|---|---|---|
| セッション(Claude) | ~/.claude/projects/<hash>/<uuid>.jsonl | 全トランスクリプト、トークン、コスト、変更したファイル、使用したモデル |
| セッション(OpenCode) | ~/.local/share/opencode/opencode.db(SQLite) | コスト、トークン、TODO |
| サブエージェントのトランスクリプト | <session-dir>/<id>/subagents/*.jsonl | Explore、aside、および acompact-*(孤立した圧縮済み履歴) |
| 計画 | ~/.claude/plans/*.md | エージェントの計画ドキュメント。## ごとに分割 |
| タスク | ~/.claude/tasks/<session>/*.json | 親セッションに関連付け |
| CLAUDE.md | プロジェクトのハッシュから自動検出 | 同じプロジェクト内のセッションに関連付け |
| 履歴 | ~/.claude/history.jsonl | シェル履歴。任意でセッションに関連付け |
| 貼り付け | ~/.claude/paste-cache/*.txt | 大きな貼り付けデータ |
| 日記 | ~/.chat-recall/index/diary/<agent>/*.json | recall_diary_write を通じて、エージェントが未来の自分に伝えた内容 |
MCP ツール(62 個。コンパニオンバイナリのインストール時に登録されるコードインテリジェンスツール 4 個を含む)
検索と取得 — recall_search、recall_memory_search、recall_recent、recall_show、recall_context、recall_summary、recall_smart_resume、recall_project_context、recall_weekly_digest、recall_analytics_summary、recall_wake_up。
パターン検出 — like_session: <id> を指定した recall_search(指定したセッションに似た作業を検索)、recall_redundant_files(新しいファイル名が過去の作業と重複する場合に警告)、files_only: true を指定した recall_diff(セッション X が実際に変更したファイル)、group_by: "session" を指定した recall_edits_timeline(auth.rs を編集したセッション)。
サブエージェントとフィルター — recall_subagent_search(非表示の Explore/aside/compact トランスクリプト内を検索)、recall_user_prompts(バナーを除去した、人間が入力した内容のみ)。
重要度順の調査結果 — recall_claude_suggestions(エージェントへの指示の変更につながるすべての調査結果。アカウントのスコープとインデックス済みのすべてのプロジェクトにわたる CLAUDE.md のルールとスキルのインストールを統合)と、recall_improvements(それ以外のすべてを、緊急度の高い順に表示。create_tasks: true を指定すると、項目ごとにチームタスクを 1 件作成します)。この 2 つは同じ推奨エンジンの結果を分割しているため、同じ項目が両方に表示されることはありません。
ナレッジグラフ — recall_kg_query、recall_kg_add、recall_kg_invalidate、recall_kg_timeline、recall_kg_stats。さらに、recall_decision_record を使うと、1 回の呼び出しで決定をトリプルと日記エントリの両方として記録できます。
KV 状態 — recall_set、recall_get(キーを指定しない場合はスコープを一覧表示します)。名前空間付き文字列をキーにした、小さな永続値です。「現在の PR URL」「作業中のブランチ」「ユーザー設定」などに使えます。
日記とステータス — recall_diary_write、recall_diary_read、recall_status(メモリの内訳を含む)、recall_index。計画/タスクは、recall_memory_search(source_types:['plan','task']) で検索し、recall_show で読み取ります。
データの削除 — recall_forget は、サーバー上の会話を完全に削除し、後から同期しても復元されないように tombstone を設定します(自分のトランスクリプトファイルには影響しません)。recall_exclude_path は、このマシンとアカウントの両方で、指定したパスの同期を停止します。「あの会話を忘れて」「このリポジトリの同期を停止して」という依頼は会話の途中で伝えられるものであり、ダッシュボードを開いて行うものではないため、これらはツールとして用意されています。どちらも confirm: true が必要で、破壊的操作として注釈されており、自動承認されることはありません。毎回、クライアントが確認を求めます。意図的に一方向の境界を設けており、エージェントは保存対象を狭めることはできますが、再び広げるツールはありません(除外解除、許可リスト、保持期間の設定はありません)。対象を広げる操作は利用者自身が行います。chat-recall exclude remove を実行するか、ダッシュボードを使ってください。
codeindex コンパニオンをインストールすると、エージェントは別の MCP サーバーからコードレベルのツールも 16 個利用できます(find_symbol、find_callers、get_imports、plan_change、get_change_impact、analyze など)。これらは連携して使えます。chat-recall はこれまでに行った作業を見つけ、codeindex は現在存在するものを把握します。
検索アーキテクチャ
検索はサーバー上で実行され、Postgres の全文検索を使用します。ランキング付きのキーワード照合と、pg_trgm による誤字への対応を行います。埋め込みモデル、API キー、追加サービスは必要ありません。
CLI は、機密情報を除去したチャンクをサーバーに送信し、サーバーがインデックスを作成します。
コストの追跡
セッション内に、サーバーが料金を把握しているモデルが 1 つ以上ある場合、トークン使用量から米ドルでのコストを計算します。それ以外のモデル(ローカルモデル、セルフホスト可能なモデル、料金表にまだ掲載されていない新しいモデルなど)については、数値を捏造せず、ダッシュボードに — と表示します。概要には sessionsWithoutPricing カウンターが表示されるため、合計値がどの程度をカバーしているか確認できます。
起動時のコンテキスト
chat-recall memory wake-up
AI セッション向けの小さなバンドルを作成します。任意の概要、分類器が重要度 4 以上の意思決定・好み・マイルストーンとして判定したチャンクの上位 10 件、現在有効なナレッジグラフの事実のスナップショットが含まれます。特別な圧縮処理は行わず、インデクサーがすでにタグ付けしている中から、最も有用な項目だけをまとめます。
データの保存場所
CLI がローカルに保持するものはほとんどなく、サーバーに接続するために必要なものだけです。
| パス | 内容 |
|---|---|
~/.chat-recall/credentials.json | サーバーの接続先とデバイストークン(モード 0600) |
~/.chat-recall/sync-ledger.json | サーバーごとの同期ウォーターマーク(すでに送信済みの内容) |
~/.chat-recall/hooks/ | インストール済みのフック(install-hooks の実行後) |
~/.chat-recall/index/diary/ | recall_diary_write が書き込むエージェントの日誌 |
~/.chat-recall/shadow/ | セッションごとに、これまでに確認された中で最も完全なトランスクリプトの Gzip 圧縮コピー。これにより、上流の --resume による切り詰めで履歴が失われるのを防ぎます |
~/.chat-recall/cache.db | ローカルダッシュボード用のローカルな結果/メタデータキャッシュ。インデックスではなく、サーバーモードでは使用されません |
インデックス化されたコンテンツ(チャンク、FTS、ベクトル、ナレッジグラフ、秘密情報の検出結果、日誌)は、すべてサーバー上(セルフホストと SaaS の場合は Postgres)に保存されます。リセットするには、~/.chat-recall 内のデータではなく、サーバーの Postgres データを削除してください。
プライバシー
セッションはチャットリコールサーバーに同期されます。サーバーは、自分でセルフホストするもの(自分のマシン上の、自分の Postgres)か、SaaS のどちらかです。CLI から送信される前に、データはマスキングされます。秘密情報はクライアント側でマスクされるため、サーバーが認証情報の生データを受け取ることはありません。セルフホストすれば、すべてのデータを自分の管理下にあるインフラストラクチャに保存できます。SaaS はホスト型の代替手段です。
テレメトリーはありません。データはご自身のサーバーの Postgres に保存されます。バックアップ方法は自由に選べます。SaaS ではホスト型の Postgres に保存されます。すべてを自分のインフラストラクチャ上に置きたい場合は、セルフホストしてください。
アーキテクチャ
packages/
├── engine/src/
│ ├── core/
│ │ ├── backends/ ToolBackend per AI tool (claude, opencode, codex, agy, cursor)
│ │ ├── tool-backend.ts Registry interface — single source of truth for tool identity
│ │ ├── tool-paths.ts Env-overridable default paths for each tool
│ │ ├── generic-engine.ts Shared turn extraction / edit scan / replay (canonical events)
│ │ └── … Indexing, storage, embeddings, summaries, KG, classifier
│ └── parsers/ *-source.ts plugins per content type (sessions, plans, tasks, …)
├── cli/
│ ├── src/cli.ts CLI
│ ├── src/mcp.ts MCP server
│ ├── auto-indexer/ chokidar-based watcher daemon (systemd-friendly)
│ └── hooks/ Claude Code hooks (install via `chat-recall install-hooks`)
└── server/
├── src/ Express API
├── client/ React + Vite UI — the dashboard
└── cloud/migrations/ Empty by design — pg-schema.ts owns the schema
docker/ Dockerfile + entrypoint for the server image
e2e/ Playwright tests for the dashboard
どちらもレジストリー駆動型の拡張ポイントが 2 つあります。
- 新しいコンテンツタイプの追加(インデックス化する別のファイル形式など) —
MemorySource(discover→parse→extractLinks)を実装し、SourceRegistryに登録します。 - 新しい AI ツールの追加(Claude/OpenCode/Codex/Antigravity/Cursor/Hermes に続く 7 つ目のバックエンド) —
ToolBackend(パス、ID の処理、readEvents、fileToolMap、extractEditDelta)を実装し、packages/engine/src/core/backends/index.tsに登録します。すべてのパスはCHAT_RECALL_{CLAUDE,CODEX,AGY,CURSOR,CURSOR_IDE,HERMES}_HOME/CHAT_RECALL_OPENCODE_DBで環境変数から上書きできます。
必要条件
- Node.js 22 以降。Docker イメージと CI では 24 を実行します。
- サポート対象ツールによって標準の場所に書き込まれたセッション:
~/.claude/、~/.codex/、~/.local/share/opencode/、~/.gemini/antigravity-cli/。
必要なものはこれだけです。インストール、インデックス化、検索に API キーは必要ありません。
機能のうち 1 つはオプトイン方式で、選択したバックエンドが必要です。
| 機能 | 接続できるバックエンド |
|---|---|
| AI 要約 | Ollama、すでにログイン済みの CLI(SUMMARY_CLI_CMD)、OpenAI 互換エンドポイント、または ANTHROPIC_API_KEY |
これを設定しない場合、セッションに自動生成の要約は付きません。それ以外の機能は同じように動作します。
ライセンス
リポジトリ全体に適用される Elastic License 2.0。
簡単に言えば、自由に使用、変更、実行できます。自分で使う場合も、社内で使う場合も、無料で、許可を求める必要はありません。ただし、第三者にホスト型サービスまたはマネージドサービスとして提供することはできません。それこそが製品だからです。また、ライセンスキーのチェックや著作権表示を削除することもできません。
これはソース公開であり、OSI 承認のオープンソースではありません。この README で事実を偽ることはありません。このライセンスは、CLI とエンジンが MIT、サーバーが BSL 1.1 という分割ライセンスに代わるものです。以前は 1 つのリポジトリ内で「これは使ってよいのか」という問いに、3 通りの答えがありました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。