Engram について
Engramは、複数のエージェントがGit管理のMarkdownメモリを共有するためのセルフホスト型MCPサーバー兼ダッシュボードです。有効期間と権威情報を使って古い内容を検索結果から除外し、検索、変更監査、アクセス制御を提供します。
主な機能
- 01Git管理のMarkdownメモリを共有
- 02権威情報と有効期間に基づく検索
- 03除外したノートと理由の表示
- 04ファイル差分付きのGit変更履歴
- 05エージェントトークンによる読み書き制御
- 06検索・編集・ナレッジグラフのダッシュボード
活用シーン
- 01複数のコーディングエージェントでプロジェクト情報を共有
- 02期限切れの価格や文書の引用を防止
- 03エージェントによるノートの変更を確認
- 04既存のObsidian vaultを共有メモリとして利用
MCP 対応
Engramは単一のMCPエンドポイントからbrain_*の読み書きツールを公開し、トークンの権限に応じて利用可能なツールを制御します。トークン認証付きHTTPとローカルstdioに対応しています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm ghcr.io/rwnalds/engram:0.1.2ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/rwnalds/engram:0.1.2stdioツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Engram
AI エージェントが読み書きする、第二の脳。
▶ 全編動画を見る(リアルタイム、高画質)
↗ ライブデモを試す — 登録不要です。retainer priceを検索して、廃止されたノートが除外される様子をご覧ください。
Engram はセルフホスト可能なMCP サーバー+ダッシュボードです。Claude Code、Cursor、Hermes、その他あらゆる Model Context Protocol エージェントに、読み書き可能な共有の長期メモリを提供します。基盤となるのは、自分で管理するシンプルなGit 管理の Markdown フォルダーです。単一のエージェントではメモリが不足する状況、つまり複数のエージェントがひとつの脳を共有するチームのために作られています。
自律型エージェントはセッションが終わるたびにすべてを忘れてしまいます。それ以上に厄介なのは、記憶している内容が_今も正しいか_判断できないことです。エージェントは古い README、廃止された価格、数か月前に変更した API ドキュメントを取得し、自信満々に引用します。キーワード検索もベクトル検索も、真偽ではなく類似性で順位付けするためです。Engram は**「これは今も正しいか」を、明示的に記録できる第一級の属性として扱います。事実が置き換えられたか期限切れになったことを示すと、検索結果から除外され、何をなぜ除外したのかがエージェントに伝えられます。**エージェントごとの読み書きトークンと、誰が何を書いたかを記録する Git 監査履歴により、書き手があなた一人ではなく大勢になっても、管理しやすくなります。
ヘッドレスのメモリストアとは異なり、実際の動作を確認できます。高速なダッシュボードでは、脳内を検索し、エージェントやチームメイトが変更した内容を(ファイルごとの差分とともに)正確に確認し、最近のノートに戻り、すべてを整理できます。その間、エージェントはひとつの MCP エンドポイントを通じて、同じ保管庫を読み書きします。データベースは不要です。.mdファイルが信頼できる情報源であり、Git が永続ストアとなり、メモリ内インデックスが全文検索と Wikilink のナレッジグラフを支えます。
メモリの保存方法には明確な方針があります — Git 管理の Markdown、データベースなし、エージェントによる書き込み(読み取りだけではありません)、セルフホスト。何を保存するかについては制約しません — あらゆる Markdown 保管庫、あらゆるフォルダー構成、あらゆる MCP クライアントに対応します。新しいリポジトリにも、既存のObsidian 保管庫にも接続できます。インポート不要で、ロックインもありません。
用途 · 他との比較 · 機能 · 対応環境 · クイックスタート · MCP ツール · デプロイ · FAQ · コントリビューション
用途
- 複数のエージェントを運用するチームの共有メモリ — 1 つの保管庫を複数のエージェントが同時に読み書きできます。エージェントごとの読み取り/書き込みトークンと、誰が何を変更したかを記録する git の監査履歴も備えています。
- 何がまだ有効かを把握するメモリ — 価格、用語、変更された API ドキュメントを無効化すると、エージェントはそれを引用しなくなります。省かれた情報とその理由も伝えます。これは、単一エージェントのメモリでは決して解決できない問題です。
- Claude Code やその他のコーディングエージェント向けの長期メモリ — セッションのたびにプロジェクトについて説明し直す必要がなくなります。
- MCP 経由で公開される、セルフホスト可能で Obsidian 互換のセカンドブレイン — 自分のノート、自分のサーバー、自分の git リポジトリを使えます。
- ブラックボックスではなく、目で確認できるメモリ — エージェントが記憶している内容を検索、監視(差分付き)、整理できるダッシュボードを備えています。
- ベクトルデータベース不要の Markdown RAG — 人が読めるファイルに対する全文検索とリンクグラフを提供します。
他との比較
多くのエージェントメモリは、*「これについて何を保存したか」*に答えるように作られています。Engram が答えるのは *「これについて、今も有効なのは何か」*です。これは別の問いであり、数か月前に無効にした価格をエージェントが 引用したときに問題となる問いです。
| Engram | ベクトルストア型メモリ (mem0、Zep、…) | Markdown 型メモリ (Basic Memory、…) | ドキュメントを対象とする通常の RAG | |
|---|---|---|---|---|
| ストレージ | Markdown ファイル、データベースは git | ベクトル DB の埋め込み | Markdown ファイル | ベクトル DB の埋め込み |
| ランキング | 関連性 × 権威性 | 類似度 | 関連性 | 類似度 |
| 情報が無効になったことを把握 | ✅ superseded_by + valid_until、検索時に適用 | — | — | — |
| 除外した情報と理由を説明 | ✅ ノートごとの理由を含む excluded[] | — | — | — |
| 無効化と置き換えを一括処理 | ✅ brain_supersede、1 回のコミット | — | — | — |
| 矛盾する書き込みを拒否 | ✅ 読み取り時ではなく、書き込み時に拒否 | — | — | 該当なし(読み取り専用) |
| 監査履歴 | ✅ git、書き込みごとの帰属情報、ファイルごとの差分 | さまざま | コミットすれば git | — |
| エージェントごとのアクセス制御 | ✅ 読み取り/書き込みトークンのスコープ | さまざま | — | — |
| 人間向け UI | ✅ ダッシュボード、検索、差分、グラフ | さまざま | — | — |
| 実行環境 | 自分のマシン、単一コンテナ | 主にホスト型 SaaS | 自分のマシン | 自分のマシン |
重要なのは 3 行目です。類似度検索では、矛盾と重複を区別できません。無効になった価格と現在有効な価格は文章として同一なので、無効になった価格のほうが長く詳細であることから、現在有効な価格よりも上位にランクされることがよくあります。これは読み取り時には修正できないため、Engram は無効化が発生した時点でその記録を残します。
この 2 つのノートは sample-vault/ に同梱されています。bun dev を実行して acme price を検索し、
無効になったノートが理由とともに除外される様子を確認してください。
特定の製品を機能ごとに監査したものではなく、カテゴリごとの比較です。2026 年 7 月時点で、私の知る限り正確な情報を記載しています。ここで管理しているツールについて誤った記述があれば、PR を作成してください。修正します。
機能
- MCP サーバー — 1 つのベアラー認証 HTTP エンドポイント(
POST /api/mcp、ストリーミング可能な HTTP JSON-RPC)で 15 個のbrain_*ツールを提供します。任意の MCP クライアントを単一の URL に接続できます。エージェントごとのトークンスコープにより、読み取り専用トークンには書き込みツールが表示されることすらありません。 - 人間向けダッシュボード — 検索を最優先したホーム画面、ファイルツリー、Obsidian のコールアウト、ウィキリンク、バックリンクに対応したノートビューアー、自動保存付きのプレビュー/編集/分割エディター、⌘K 検索とページ内キーボードナビゲーション、「続きから再開」できる最近の項目、力指向のナレッジグラフを備えています。
- 信頼度を考慮した検索 — ランキングが判断するのは関連性であり、真実性ではありません。そのため、置き換えられたノートでも、現行のノートと同じように検索クエリの語句が繰り返し含まれていれば上位に表示されます。すべての検索結果には、ノートのフォルダーとフロントマターから導かれた権威性(
authoritative→current→provisional→superseded→archived)が付与されるため、エージェントは無効になった文書ではなく、確定済みの文書を引用します。昨日の回答を返さない Markdown RAG です。 - 時間的な有効性と理由がわかる除外 — 事実に別のノートを指定した
superseded_byを付けるか、valid_until日付を設定すると、検索では(lockedであっても)デフォルトでその事実を除外し、スキップした項目と理由("expired 2026-06-01"など)を含むexcludedリストをエージェントに返します。1 回のアトミックな**brain_supersede**で、古い事実を退役させ、新しいノートへのリンクを同時に作成するため、追加と退役が食い違うことはありません。これが、単に記憶しているエージェントと、今も真実であることを理解しているエージェントの違いです。 - 書き込み時の矛盾防止 — 権威性のランキングが読み取りを改善するのに対し、これらは矛盾がそもそもボルトに受け入れられるのを防ぎます。Engram は、既存の現行ノートが扱うテーマについて、2 つ目の現行ノートを作成することを拒否し(
acme-pricing-2026.mdがacme-pricing.mdと並ぶバグなど)、代わりにbrain_supersedeを使うようエージェントに案内します。また、呼び出し元が読んでいないノートの上書きを拒否し、ランキングモデルが認識しない語がstatus:に指定されている場合は警告するため、タイプミスによってノートの権威性が知らないうちに失われることもありません。 - 監査証跡とアクセス制御 — すべての書き込みについて、実行したトークンまたは人間が git の記録に残り、アクティビティフィードではファイルごとの差分を展開して確認できます。エージェントに読み取り専用トークンを付与すれば、書き込みツールが表示されることすらありません。書き込みトークンでは、作成、編集、移動、アーカイブが可能です。
- Curator (任意) — ボルト上で動く Engram 内蔵のエージェントハーネスです。ノートとチャットできます(根拠に基づく回答、ウィキリンクによる引用)。または、会議メモや音声の文字起こしなどの未整理データを
brain_captureに渡すと、エージェントのループが既存の内容を検索し、整理、統合、またはアーカイブして、変更した内容のマニフェストを返します。上書き前に読み取り、削除は決して行いません。Opus/Sonnet/Haiku に対応し、API キーはご自身のものを使用します。 - Markdown ネイティブ — プレーンな
.md+ YAML フロントマター +[[wikilinks]]を使用します。既存のObsidian ボルトを配置すれば、そのまま動作します。 - Git ベース — 変更のたびに自動でコミットおよびプッシュする機能を任意で利用できます。完全な履歴を保持し、ロックインはありません。データはご自身のリポジトリに保存されます。
- データベース不要 — ファイルが信頼できる情報源です。メモリ内の MiniSearch インデックスと移植されたウィキリンクグラフで、検索とバックリンクを実現します。事前に用意するものはありません。
- 複数のワークスペース — 複数のボルトリポジトリ(URL + トークン、または GitHub OAuth)を接続し、UI から名前の変更、アクティブなワークスペースの切り替え、削除ができます。
- セルフホスト可能 — Docker コンテナ 1 つで動作します。Railway/Render/Fly など、ボリュームを利用できる任意のホストに対応します。サーバーレスには対応しません(永続ボリューム、ファイルウォッチャー、長時間実行されるインデックスが必要です)。
- チーム認証 — ダッシュボードには Google SSO + メール許可リストを、MCP にはエージェントごとのベアラートークン、またはClaude.ai カスタムコネクター用の OAuthを使用します。トークンは UI から作成・失効できます。シークレットは保存時に暗号化されます。
- 実行時設定 — ホーム画面から git-sync と Curator を切り替えられます。コミット作成者、キー、OAuth は設定で管理でき、再デプロイは不要です。
対応クライアント
Model Context Protocol に対応するクライアントならどれでも使用できます。エンドポイントは1つで、ベアラートークン認証を使います。利用頻度の高い順:
- Claude Code — Anthropic のエージェント型コーディング CLI
- Codex — OpenAI のコーディングエージェント(CLI + IDE)
- Hermes — 常時稼働型の自律エージェントランタイム
- openclaw — オープンソースのコーディングエージェント
- Cursor — AI コードエディター
- Cline — VS Code エージェント
- Windsurf — エージェント型 IDE
- Claude Desktop — Anthropic のデスクトップアプリ
- …そのほか、Continue、Goose、Zed、Amp など、あらゆる MCP クライアントに対応しています
MCP に対応していれば、共有メモリーとして Engram の読み書きができます。
クイックスタート
まず試してみたいですか? ライブデモがあります — 誰でもすぐに利用でき、サインアップは不要で、1日に数回リセットされます。自由に試してみてください。
bun install
bun dev # http://localhost:3000 — runs against ./sample-vault
自分のボルトを指定するには、次のようにします。
VAULT_DIR=/path/to/your/obsidian-or-markdown/vault bun dev
2つの実行方法
-
ホストモード(チーム向け): 上記のダッシュボード + HTTP MCP サーバーです。一度セルフホストすれば、多数のエージェントやチームメンバーが
POST /api/mcp経由で接続できます。基本となるモードです。 -
ローカルモード(stdio): フォルダー上で動作するシンプルな stdio MCP サーバーです。HTTP/認証/git は不要で、単一マシン、Claude Desktop/Cursor、またはレジストリの Docker イントロスペクション向けです。
bun run mcp:stdio /path/to/your/vault # defaults to ./sample-vault同じ
brain_*ツールを使います。Dockerfile.mcpからビルドされます。
各モードはそれぞれ独立したイメージとして提供され、互換性はありません。
| イメージ | モード | 用途 |
|---|---|---|
ghcr.io/rwnalds/engram-app | HTTP — ダッシュボード + /api/mcp | Railway、Render、Fly、その他すべてのホスト向け。 デプロイするのはこちらです。 |
ghcr.io/rwnalds/engram | stdio — stdin/stdout 上の JSON-RPC | Claude Desktop、Cursor、MCP レジストリ向け。ポートは開きません。 |
stdio イメージをウェブサービスとしてデプロイするのは、特に注意すべき唯一の間違いです。待ち受けるものがないため、502 エラーになるだけです。このイメージは現在、PaaS 上での起動を拒否し、その旨を通知します。
MCP ツール
エージェントに表示されるのはアクティブなボルトだけです。リポジトリ、ワークスペース、GitHub のツールは公開されません。
read スコープのトークンで表示されるのは読み取りツールだけです。brain_capture が表示されるのは、Curator が full の場合に限られます。
| ツール | |
|---|---|
| 読み取り | brain_search · brain_read · brain_list · brain_recent · brain_tree · brain_backlinks · brain_graph · brain_schema |
書き込み(write スコープのトークンが必要) | brain_write · brain_edit · brain_append · brain_move · brain_supersede · brain_create_folder · brain_delete |
エージェントを接続します(ダッシュボードの Connect ページに、正確なコマンドとトークンが表示されます)。
claude mcp add --transport http engram https://<host>/api/mcp \
--header "Authorization: Bearer <token>"
デプロイ
永続ボリュームを使って Docker コンテナーを実行できる環境であれば、どこでも動作します。Railway、Render、Fly、または自分のサーバーで利用できます。サーバーレス(Vercel)では動作しません。Engram はボリューム、ファイルウォッチャー、メモリー内インデックスを保持するため、サーバーレス関数ではこれらを稼働させ続けられません。
- このリポジトリをデプロイし(ルートの
Dockerfile)、/dataにボリュームをマウントして、ENGRAM_DATA_DIR=/dataを設定します。 - ダッシュボード(Workspaces)でボルトのリポジトリを接続します。URL + トークン、または GitHub OAuth を使用します。
- Google でサインインし、Connect ページで MCP トークンを作成して、エージェントに URL を指定します。
実行時設定の大半(git-sync、AI キャプチャー、GitHub OAuth、アプリ名)は Settings ページで編集できます。ホスト上に置く必要があるのは、認証/インフラの初期設定用変数だけです。設定全体については DEPLOY.md をご覧ください。
- Railway: New Project → Deploy from GitHub repo →
/dataに Volume を追加します。 - Render: 同梱の
render.yamlを使ったワンクリックデプロイに対応しています(Docker +/dataディスク)。
リポジトリではなく、ビルド済みイメージからデプロイする場合は、ghcr.io/rwnalds/engram-app:latest を使用してください。HTTP に応答できない stdio サーバーの engram:latest は使用しないでください。ヘルスチェックには /api/health を設定します。
FAQ
Claude Code に長期記憶を持たせるにはどうすればよいですか?
Engram をデプロイし、Markdown の保管庫に接続して、エンドポイントを claude mcp add で追加します。brain_* ツールを使うと、Claude Code はセッションをまたいで永続的なメモを検索、読み取り、書き込みできます。
複数の AI エージェントで 1 つのナレッジベースを共有できますか?
はい。すべてのエージェントが同じ MCP URL を指定し、同じアクティブな保管庫を読み書きします。それが Engram の目的です。エージェントごとに個別のベアラートークン(read または write)を割り当ててください。読み取り専用トークンではメモを変更できません。
古い情報をエージェントが引用しないようにするにはどうすればよいですか?
情報を廃止すると、検索結果に表示されなくなります。値が変わったときは、brain_supersede(old, new) を呼び出します。1 回のアトミックなコミットで、古いメモに新しいメモの superseded_by を設定し、デフォルトでは検索結果から除外します(locked の場合も同様です)。または、メモに valid_until: 2026-12-31 を設定すると、期限切れになります。廃止された検索結果は黙って消えるわけではありません。brain_search は理由("expired 2026-06-01")とともに excluded リストで返すため、エージェントは引用する代わりに、何を無視したのか、またその理由を説明できます。
エージェントが矛盾するメモをもう 1 つ追加するのを防ぐにはどうすればよいですか?
Engram は書き込みを拒否します。「価格が X に変わった」と伝えられたエージェントは、読んだことのないメモを上書きできなくても、acme-pricing.md の隣に acme-pricing-2026.md を追加してしまいます。データは破損しませんが、1 つの数値について食い違う有効なメモが 2 つ存在することになります。この書き込みは brain_supersede への参照とともに拒否されます。brain_supersede を使うと、1 回のコミットで古いメモを廃止し、新しいメモを追加できます。両方のメモが本当に必要な場合は、allow_conflict: true を渡してください。
エージェントが変更した内容を確認するにはどうすればよいですか? すべての書き込みは、トークンまたは人間の作成者を記録して git にコミットされます。また、ダッシュボードのアクティビティフィードにはファイルごとの差分が表示されるため、自律型エージェントの監査証跡を組み込みで確認できます。
自分の Obsidian 保管庫で使えますか?
はい。フロントマターと [[wikilinks]] を含むプレーンな Markdown を読み取り、Obsidian 形式のコールアウトとバックリンクを表示します。インポートは不要です。
ベクトルデータベースは必要ですか? いいえ。Engram は人間が読める Markdown に対し、全文検索(MiniSearch)と Wiki リンクグラフを使用します。埋め込みサービスも、運用するベクトルストアも不要です。
メモとチャットできますか? はい。オプションの Curator を有効にしてください。Curator は保管庫を検索、読み取り、Wiki リンクの引用を付けて回答するチャットエージェントです(Opus/Sonnet/Haiku)。チャットでは読み取り専用のため、何も変更せずに考えを深めるのに役立ちます。また、ご自身の Anthropic キーで実行できます。
エージェントが変更した内容を確認できますか? はい。Activity ビューは保管庫の git 履歴を読み取り、エージェントとチームメイトのすべての変更を表示します。展開するとファイルごとの差分も確認できます。git を使っているだけなので、完全な監査証跡を追加料金なしで利用できます。
データがロックインされますか?
いいえ。データは、ご自身が所有する git リポジトリ内の .md ファイルです。Engram を停止しても、すべてのメモとその完全な履歴はそのまま残ります。
どこで実行されますか?/セルフホストできますか? ご自身でホストします。Railway/Render/Fly、またはボリュームを備えた任意の VM 上で、Docker コンテナを 1 つ実行します。キーもデータもご自身で管理できます。
貢献
Issue と PR を歓迎します。特に、私のものとは異なる構成の保管庫で有効性モデルがうまく機能しない場合は、ぜひお知らせください。
- CONTRIBUTING.md — セットアップ、規約、PR 前のチェックリスト。
- docs/curator.md — オプションの Curator エージェントループの仕組み。
- SECURITY.md — 脆弱性は Issue ではなく、非公開で報告してください。
bun install && bun dev
bun test # the ranking/authority suite, incl. the stale-truth fixtures
Engram が役に立った場合は、リポジトリにスターを付けていただけると、ほかの人が見つけやすくなります。
スタック
Next.js 16(App Router) · React 19 · TypeScript · Tailwind v4 · shadcn/ui · bun · MiniSearch · d3-force · MCP SDK。MIT ライセンスです。
キーワード: MCP サーバー · Model Context Protocol · AI エージェントのためのセカンドブレイン · エージェントのメモリ · Claude Code の長期メモリ · AI エージェント間で共有するメモリ · セルフホスト可能なナレッジベース · Obsidian 互換 · Markdown · ナレッジグラフ · ウィキリンク · PKM · Zettelkasten · Git 管理のノート · Hermes エージェントのメモリ · Cursor のメモリ · ベクトルデータベース不要の RAG · Markdown ノートとのチャット · Git 管理のエージェントアクティビティフィード · AI エージェントの監査証跡 · 権限を考慮した検索 · 読み取り専用と書き込み用の MCP トークン · エージェントのアクセス制御 · 自己組織化するノート · エージェントによるノートの記録 · ノートを整理してくれる AI · 時間的な有効性 · 古くなったメモリ · 古い情報を引用するエージェント · 置き換え · ノートの有効期限 · 複数のエージェント間で共有するメモリ · Basic Memory の代替 · mem0 の代替。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。