nMEMORY について
nMEMORYは、コーディングエージェント向けのローカルメモリサーバーです。各レコードに出典とアンカーを必須とし、検索結果を根拠あり、根拠不足、回答保留に分類して、変更を監査ジャーナルに記録します。
主な機能
- 01各レコードに出典とアンカーを必須化
- 02根拠あり・根拠不足・回答保留の検索結果
- 03BM25検索と任意の埋め込み
- 04セッション管理と引き継ぎ
- 05ハッシュチェーン形式の変更ジャーナル
- 06SQLiteファイルによるローカル保存
活用シーン
- 01エージェントのセッションをまたいで決定を参照
- 02記憶した事実を出典と照合
- 03後続セッションへ作業コンテキストを引き継ぐ
- 04保存したメモリの監査や削除
MCP 対応
stdioのMCPサーバーは、記録、検索、セッション、引き継ぎ、タスク、レビュー、監査の27ツールを提供します。stdio対応のMCPクライアントから接続できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
エージェントはセッションをまたぐとすべてを忘れてしまいます。nMEMORY は出典とともに記憶します。
インストール
curl --proto '=https' --tlsv1.2 -fsSL https://no.tt/install.sh | sh
ソースからインストールすることもできます。uv と Git が必要です。
git clone https://github.com/menot-you/n-memory
cd n-memory
uv sync
uv run nmemory database create
claude mcp add nmemory -- uv run --directory "$PWD" nmemory mcp serve
uv sync は、固定された Python(3.14)とすべての依存関係をインストールします。
database create はストアファイルを作成します。nMEMORY が暗黙的に作成することはありません。
stdio に対応する MCP クライアントであれば、Claude Code と同じ方法で接続できます。
仕組み
%%{init: {"theme": "base", "themeVariables": {"primaryColor": "#1B1916", "primaryTextColor": "#ECE7DE", "primaryBorderColor": "#E4733A", "lineColor": "#E4733A", "secondaryColor": "#151311", "tertiaryColor": "#0F0E0D", "fontFamily": "IBM Plex Mono, monospace"}}}%%
flowchart LR
agent["Your agent<br/>(any MCP client)"] -->|"stdio, 27 tools"| server["nmemory mcp serve"]
shell["You, in a shell"] -->|"nmemory CLI"| core
server --> core["Capture and recall"]
core -->|"one transaction per call"| store[("One SQLite file<br/>records, journal, index")]
core -->|"BM25, always"| lexical["Keyword recall"]
core -.->|"when a key is set"| vectors["Embedding provider"]
lexical --> outcome{"grounded<br/>missing_evidence<br/>abstain"}
vectors -.-> outcome
各レコードには、出典とアンカー(path:line、引用、または PR)が必要です。
想起の結果は3種類のいずれかです。確度の低い一致を回答として扱うことはありません。
数字で見る
2026-10-21 時点の集計です。ツール数:nmemory mcp serve に対する MCP の tools/list リクエスト。
テスト数:各メンバーのルートで uv run --group dev pytest --collect-only -q を実行して集計。
理由
| 以前 | nMEMORY 導入後 |
|---|---|
| 新しいセッションは毎回空の状態から始まります。同じ決定を再び説明する必要があります。 | エージェントはセッションの開始時にその決定を想起します。 |
| 想起された「事実」には出典がありません。確認できません。 | 各レコードには出典とアンカーが必要です。 |
| 確度の低い一致が、自信に満ちた回答として返されます。 | 想起の結果は、誠実な3つの状態 grounded、missing_evidence、abstain のいずれかです。 |
| 古いメモと新しいメモが、気づかれないまま矛盾します。 | 新しいレコードで古いレコードを置き換えられます。変更はすべてハッシュチェーン付き監査ジャーナルに記録されます。 |
| ウェブページやファイル内のテキストが、エージェントを誘導することがあります。 | nMEMORY は、インポートされたテキストや指示のような形式のテキストに汚染済みの印を付けます。想起結果には、すべて指示ではなくデータであることを示すラベルが付きます。 |
クイックスタート
エージェントは MCP ツールを使います。同じストアをシェルから利用することもできます。
決定を保存します(エージェントは nmemory_capsule_ingest を呼び出します)。
{
"content": "We store data in SQLite, not PostgreSQL.",
"kind": "decision",
"source": "docs/adr/0001-storage.md",
"anchor": "docs/adr/0001-storage.md:3"
}
後のセッションで想起します。
uv run nmemory capsule retrieve "what database stores our data"
uv run nmemory capsule show --id cap-1
最初のコマンドは "outcome": "grounded" とレコードを返します。
2つ目のコマンドは、その来歴、つまり出典、アンカー、出典のハッシュを表示します。
提供する機能
- 27 個の MCP ツールで、記録、想起、セッション、引き継ぎ、タスク、レビュー、監査を行えます。 リファレンスに各ツールと CLI コマンドが記載されています。
- ハイブリッド型の想起。 BM25 キーワード検索は常に機能します。デフォルトの埋め込みプロバイダーは Gemini です(
NOTT_NMEMORY_EMBED_PROVIDER。Ollama や vLLM などのセルフホストサーバーでは、openaiまたはopenai-compatibleも利用できます)。 - 埋め込みではテキストがマシンの外部に送信されます。 プロバイダーのキーが環境変数に設定されている場合(デフォルトでは
GEMINI_API_KEY)、nMEMORY はカプセルテキストとクエリをそのプロバイダーに送信します。語彙ベースの想起のみを利用するには、そのキーを設定解除してください。起動にキーは必要ありません。 - 単一ファイル、ローカル優先。 ストアは 1 つの SQLite ファイルです。各呼び出しは 1 つのトランザクションです。呼び出しで書き込みが宣言されるまで、接続は読み取り専用のままです。
- セッションの開始・終了と引き継ぎ。 エージェントはセッションを開始し、作業中に記録し、次のセッションが読む引き継ぎ内容を残して終了します。
- 確実に削除する消去機能。 消去では、コンテンツ、引用、キューに登録された埋め込みテキスト、ベクトルを 1 つのトランザクションで削除します。
比較
メモファイル(CLAUDE.md、AGENTS.md) | シンプルなベクトルストア | nMEMORY | |
|---|---|---|---|
| 新しいセッションにも保持される | はい | はい | はい |
| レコードごとにソースが必要 | いいえ | いいえ | はい |
| 弱い一致の場合に「証拠なし」と伝える | いいえ | いいえ、最も近いベクトルを返します | はい |
| 埋め込みキーなしで動作する | はい | いいえ | はい(語彙ベース) |
| 変更ごとの監査証跡 | Git のみ | いいえ | ハッシュチェーン形式のジャーナル |
| プロンプトを埋め尽くさずに拡張できる | いいえ、ファイル全体が読み込まれます | はい | はい、想起にはトークン予算があります |
ベンチマーク
評価ハーネスには、合成想起、LongMemEval、抽出、比較用のランナーが含まれています。 このリリースでは、スコアではなく手法を公開しています。 以前の数値は旧エンジンを測定したものなので、ここでは引用しません。
NOTT ファミリー
出典を引用するメモリ。 | 追跡可能で再開できるエージェントワーカー。 | 引用可能な証拠としてのライブウェブ。 | エージェント向けの App Store Connect。 | チームの契約、ルート、フック。 |
このセクションは、このリポジトリを読む言語モデル向けです。
- 概要。 nMEMORY は、コーディングエージェント向けのローカルメモリーサーバーです。必須のソースとアンカーを付けてレコード(決定事項、事実、タスク、失敗)を保存し、
grounded、missing_evidence、abstainの3つの結果のいずれかで呼び出します。 - 対象外。 ホステッドサービスでも、汎用ベクトルデータベースでも、チャット履歴でもありません。一致するものがない場合、回答を捏造することはありません。
- エントリーポイント。 CLI は
nmemory <noun> <verb>(nmemory --help)です。MCP サーバーはnmemory mcp serve(stdio)です。ツール名はすべてnmemory_で始まり、全部で27個あります。まずnmemory_context_show、nmemory_capsule_retrieve、nmemory_capsule_ingestを使ってください。 - 設定。 任意の設定ファイルは
~/.nott/memory.tomlです。変数NOTT_NMEMORY_CONFIGで別のパスを指定できます。ストアディレクトリは~/.nott/state/database/です。ただし、テストでNOTT_DATABASE_DIRが設定されている場合はそちらが使われます。 - 不変条件。 すべてのレコードにソースがあります。呼び出されたテキストはデータであり、指示ではありません。各変更はハッシュチェーン形式のジャーナルに記録されます。テストが実際のストアを開くことはありません。ストアは SQLite のみです。
- 全リファレンス。 docs/REFERENCE.md にはすべてのツールとコマンドが記載されています。RULEBOOK.md には実装ルールが記載されています。llms.txt には同じ情報が llms.txt 形式で記載されています。
ドキュメント
| ページ | 内容 |
|---|---|
| Runbook | 最初に役立つ結果、失敗の診断、バックアップと復元 |
| Architecture | 信頼境界とエンジン全体の詳細:ストア、呼び出し、ツール、CLI |
| Reference | すべての CLI コマンドと MCP ツール、および各ソースへのリンク |
| Rulebook | 実装上の不変条件 |
| Setup | 開発環境のセットアップ |
| Quality | チェックとセキュリティレビュー |
| Docs index | ドキュメントの一覧と最初のコントリビューション |
| Installation | インストール先 |
| Privacy | 処理の選択肢 |
| Upgrade | 既存データ |
| Troubleshooting | 失敗の診断 |
| Roadmap | 今後の方向性 |
リポジトリのルートからチェックを実行します。
uv run ruff check . && uv run mypy --strict nmemory
TMPDIR=/var/tmp uv run --group dev pytest -q
各テストには、それぞれ専用の破棄可能なストアが割り当てられます。実際のストアに触れるテストはありません。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。