@agentmemory/agentmemory 0.9.28 → 0.9.29

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/.env.example +15 -6
  2. package/AGENTS.md +6 -6
  3. package/README.md +220 -152
  4. package/dist/.env.example +15 -6
  5. package/dist/cli.d.mts.map +1 -1
  6. package/dist/cli.mjs +233 -35
  7. package/dist/cli.mjs.map +1 -1
  8. package/dist/{connect-JnsJXc68.mjs → connect-Qaeq15TQ.mjs} +599 -41
  9. package/dist/connect-Qaeq15TQ.mjs.map +1 -0
  10. package/dist/docker-compose.yml +2 -2
  11. package/dist/hooks/antigravity-bridge.d.mts +8 -0
  12. package/dist/hooks/antigravity-bridge.d.mts.map +1 -0
  13. package/dist/hooks/antigravity-bridge.mjs +114 -0
  14. package/dist/hooks/antigravity-bridge.mjs.map +1 -0
  15. package/dist/hooks/notification.mjs +19 -4
  16. package/dist/hooks/notification.mjs.map +1 -1
  17. package/dist/hooks/post-commit.mjs +13 -1
  18. package/dist/hooks/post-commit.mjs.map +1 -1
  19. package/dist/hooks/post-tool-failure.mjs +14 -3
  20. package/dist/hooks/post-tool-failure.mjs.map +1 -1
  21. package/dist/hooks/post-tool-use.mjs +14 -3
  22. package/dist/hooks/post-tool-use.mjs.map +1 -1
  23. package/dist/hooks/pre-compact.mjs +12 -2
  24. package/dist/hooks/pre-compact.mjs.map +1 -1
  25. package/dist/hooks/pre-tool-use.mjs +1 -1
  26. package/dist/hooks/pre-tool-use.mjs.map +1 -1
  27. package/dist/hooks/prompt-submit.mjs +14 -3
  28. package/dist/hooks/prompt-submit.mjs.map +1 -1
  29. package/dist/hooks/session-end.mjs +82 -18
  30. package/dist/hooks/session-end.mjs.map +1 -1
  31. package/dist/hooks/session-start.mjs +22 -4
  32. package/dist/hooks/session-start.mjs.map +1 -1
  33. package/dist/hooks/stop.mjs +1 -7
  34. package/dist/hooks/stop.mjs.map +1 -1
  35. package/dist/hooks/subagent-start.mjs +14 -3
  36. package/dist/hooks/subagent-start.mjs.map +1 -1
  37. package/dist/hooks/subagent-stop.mjs +14 -3
  38. package/dist/hooks/subagent-stop.mjs.map +1 -1
  39. package/dist/hooks/task-completed.mjs +14 -3
  40. package/dist/hooks/task-completed.mjs.map +1 -1
  41. package/dist/{image-refs-C2YU7BIm.mjs → image-refs-CJgZmb9X.mjs} +2 -2
  42. package/dist/{image-refs-C2YU7BIm.mjs.map → image-refs-CJgZmb9X.mjs.map} +1 -1
  43. package/dist/index.mjs +1557 -755
  44. package/dist/index.mjs.map +1 -1
  45. package/dist/schema-BFZhNTF7.mjs +197 -0
  46. package/dist/schema-BFZhNTF7.mjs.map +1 -0
  47. package/dist/{src-CzgoepGU.mjs → src-G7yt8gGm.mjs} +1531 -883
  48. package/dist/src-G7yt8gGm.mjs.map +1 -0
  49. package/dist/{standalone-YsZFFQBM.mjs → standalone-BqNJDJ04.mjs} +26 -15
  50. package/dist/standalone-BqNJDJ04.mjs.map +1 -0
  51. package/dist/standalone.d.mts.map +1 -1
  52. package/dist/standalone.mjs +50 -14
  53. package/dist/standalone.mjs.map +1 -1
  54. package/dist/{tools-registry-D3NEoe5m.mjs → tools-registry-BV_2bu7z.mjs} +293 -3
  55. package/dist/tools-registry-BV_2bu7z.mjs.map +1 -0
  56. package/dist/viewer/favicon.svg +35 -1
  57. package/dist/viewer/index.html +473 -83
  58. package/docker-compose.yml +2 -2
  59. package/integrations/pi/README.md +77 -0
  60. package/integrations/pi/index.ts +403 -0
  61. package/integrations/pi/package.json +32 -0
  62. package/integrations/pi/security.ts +35 -0
  63. package/package.json +3 -4
  64. package/plugin/.claude-plugin/plugin.json +2 -2
  65. package/plugin/.codex-plugin/plugin.json +2 -2
  66. package/plugin/.devin-plugin/plugin.json +32 -0
  67. package/plugin/cursor/hooks.json +41 -0
  68. package/plugin/cursor/mcp.json +12 -0
  69. package/plugin/hooks/hooks.antigravity.json +43 -0
  70. package/plugin/hooks/hooks.devin.json +67 -0
  71. package/plugin/hooks/hooks.droid.json +55 -0
  72. package/plugin/opencode/README.md +1 -1
  73. package/plugin/opencode/agentmemory-capture.ts +73 -13
  74. package/plugin/opencode/plugin.json +1 -1
  75. package/plugin/plugin.json +2 -2
  76. package/plugin/scripts/antigravity-bridge.d.mts +8 -0
  77. package/plugin/scripts/antigravity-bridge.d.mts.map +1 -0
  78. package/plugin/scripts/antigravity-bridge.mjs +114 -0
  79. package/plugin/scripts/antigravity-bridge.mjs.map +1 -0
  80. package/plugin/scripts/notification.mjs +19 -4
  81. package/plugin/scripts/notification.mjs.map +1 -1
  82. package/plugin/scripts/post-commit.mjs +13 -1
  83. package/plugin/scripts/post-commit.mjs.map +1 -1
  84. package/plugin/scripts/post-tool-failure.mjs +14 -3
  85. package/plugin/scripts/post-tool-failure.mjs.map +1 -1
  86. package/plugin/scripts/post-tool-use.mjs +14 -3
  87. package/plugin/scripts/post-tool-use.mjs.map +1 -1
  88. package/plugin/scripts/pre-compact.mjs +12 -2
  89. package/plugin/scripts/pre-compact.mjs.map +1 -1
  90. package/plugin/scripts/pre-tool-use.mjs +1 -1
  91. package/plugin/scripts/pre-tool-use.mjs.map +1 -1
  92. package/plugin/scripts/prompt-submit.mjs +14 -3
  93. package/plugin/scripts/prompt-submit.mjs.map +1 -1
  94. package/plugin/scripts/session-end.mjs +82 -18
  95. package/plugin/scripts/session-end.mjs.map +1 -1
  96. package/plugin/scripts/session-start.mjs +22 -4
  97. package/plugin/scripts/session-start.mjs.map +1 -1
  98. package/plugin/scripts/stop.mjs +1 -7
  99. package/plugin/scripts/stop.mjs.map +1 -1
  100. package/plugin/scripts/subagent-start.mjs +14 -3
  101. package/plugin/scripts/subagent-start.mjs.map +1 -1
  102. package/plugin/scripts/subagent-stop.mjs +14 -3
  103. package/plugin/scripts/subagent-stop.mjs.map +1 -1
  104. package/plugin/scripts/task-completed.mjs +14 -3
  105. package/plugin/scripts/task-completed.mjs.map +1 -1
  106. package/plugin/skills/agentmemory-agents/REFERENCE.md +6 -3
  107. package/plugin/skills/agentmemory-config/REFERENCE.md +4 -1
  108. package/plugin/skills/agentmemory-mcp-tools/REFERENCE.md +3 -2
  109. package/plugin/skills/agentmemory-rest-api/REFERENCE.md +14 -1
  110. package/plugin/skills/forget/SKILL.md +4 -1
  111. package/plugin/skills/lesson/SKILL.md +64 -0
  112. package/plugin/skills/memory-discipline/SKILL.md +57 -0
  113. package/plugin/skills/recall/SKILL.md +4 -1
  114. package/plugin/skills/remember/SKILL.md +6 -1
  115. package/dist/config-ChC9EtgV.mjs +0 -259
  116. package/dist/config-ChC9EtgV.mjs.map +0 -1
  117. package/dist/connect-JnsJXc68.mjs.map +0 -1
  118. package/dist/schema-CNiCWzV9.mjs +0 -78
  119. package/dist/schema-CNiCWzV9.mjs.map +0 -1
  120. package/dist/src-CzgoepGU.mjs.map +0 -1
  121. package/dist/standalone-YsZFFQBM.mjs.map +0 -1
  122. package/dist/tools-registry-D3NEoe5m.mjs.map +0 -1
  123. package/plugin/scripts/diagnostics.d.mts +0 -17
  124. package/plugin/scripts/diagnostics.d.mts.map +0 -1
  125. package/plugin/scripts/diagnostics.mjs.map +0 -1
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <p align="center">
2
- <img src="assets/banner.png" alt="agentmemory — Persistent memory for AI coding agents" width="720" />
2
+ <img src="assets/banner.png" alt="agentmemory: persistent memory for AI coding agents" width="720" />
3
3
  </p>
4
4
 
5
5
  <p align="center">
@@ -30,7 +30,7 @@
30
30
  </p>
31
31
 
32
32
  <p align="center">
33
- <a href="https://gist.github.com/rohitg00/2067ab416f7bbe447c1977edaaa681e2"><img src="https://img.shields.io/badge/Viral%20GitHub%20Gist-1.3k%20stars%20%2F%20182%20forks-FF6B35?style=for-the-badge&logo=github&logoColor=white&labelColor=1a1a1a" alt="Design doc: 1.3k stars / 182 forks on the gist" /></a>
33
+ <a href="https://gist.github.com/rohitg00/2067ab416f7bbe447c1977edaaa681e2"><img src="https://img.shields.io/badge/Viral%20GitHub%20Gist-1.6k%20stars%20%2F%20230%20forks-FF6B35?style=for-the-badge&logo=github&logoColor=white&labelColor=1a1a1a" alt="Design doc: 1.6k stars / 230 forks on the gist" /></a>
34
34
  </p>
35
35
 
36
36
  <p align="center">
@@ -47,10 +47,10 @@
47
47
  <p align="center">
48
48
  <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-recall.svg"><img src="assets/tags/stat-recall.svg" alt="95.2% retrieval R@5" height="38" /></picture>
49
49
  <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-tokens.svg"><img src="assets/tags/stat-tokens.svg" alt="92% fewer tokens" height="38" /></picture>
50
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-tools.svg"><img src="assets/tags/stat-tools.svg" alt="53 MCP tools" height="38" /></picture>
50
+ <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-tools.svg"><img src="assets/tags/stat-tools.svg" alt="54 MCP tools" height="38" /></picture>
51
51
  <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-hooks.svg"><img src="assets/tags/stat-hooks.svg" alt="12 auto hooks" height="38" /></picture>
52
52
  <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-deps.svg"><img src="assets/tags/stat-deps.svg" alt="0 external DBs" height="38" /></picture>
53
- <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-tests.svg"><img src="assets/tags/stat-tests.svg" alt="1,428+ tests passing" height="38" /></picture>
53
+ <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-tests.svg"><img src="assets/tags/stat-tests.svg" alt="1,674+ tests passing" height="38" /></picture>
54
54
  </p>
55
55
 
56
56
  <p align="center">
@@ -66,7 +66,6 @@
66
66
  <a href="#how-it-works">How It Works</a> &bull;
67
67
  <a href="#mcp-server">MCP</a> &bull;
68
68
  <a href="#real-time-viewer">Viewer</a> &bull;
69
- <a href="#iii-console">iii Console</a> &bull;
70
69
  <a href="#powered-by-iii">Powered by iii</a> &bull;
71
70
  <a href="#configuration">Config</a> &bull;
72
71
  <a href="#api">API</a>
@@ -76,34 +75,58 @@
76
75
 
77
76
  ## Install
78
77
 
79
- Fastest path if you use a coding agent: hand it this one instruction and it installs, wires, and verifies agentmemory end to end.
78
+ One command:
80
79
 
81
- > Retrieve and follow the instructions at: https://raw.githubusercontent.com/rohitg00/agentmemory/main/INSTALL_FOR_AGENTS.md
80
+ ```bash
81
+ npx @agentmemory/agentmemory
82
+ ```
82
83
 
83
- On Windows the fast path is WSL2. Native Windows engine setup is manual (about 10 to 20 minutes) and `agentmemory connect` is currently unsupported there. See the [Windows notes](#windows) below for the step-by-step.
84
+ The first run is an interactive setup: pick the agents to wire (Claude Code, Cursor, Codex, Gemini CLI, OpenCode, ...), pick an LLM provider or stay keyless, and it seeds the config, starts the memory server on `:3111`, and offers to install globally so the bare `agentmemory` command works everywhere afterwards.
85
+
86
+ Then prove recall works and give your agent its skills:
84
87
 
85
88
  ```bash
86
- npm install -g @agentmemory/agentmemory # once — bare `agentmemory` on PATH
87
- # If you hit EACCES on macOS/Linux system Node installs, retry with:
88
- # sudo npm install -g @agentmemory/agentmemory
89
- agentmemory # start the memory server on :3111
90
- agentmemory demo # seed sample sessions + prove recall
91
- agentmemory demo --serve # one command: boot server, run demo, tear down (no second terminal)
92
- agentmemory connect claude-code # wire MCP into your agent (also: copilot-cli, codex, cursor, gemini-cli, ...)
93
- npx skills add rohitg00/agentmemory -y # install 15 native skills (8 you can invoke, 7 reference) so your agent knows when to use the tools
89
+ agentmemory demo --serve # seed sample sessions + watch recall find them
90
+ npx skills add rohitg00/agentmemory -y # 17 native skills so your agent knows when to reach for memory
94
91
  ```
95
92
 
96
- Or via `npx` (no install):
93
+ Prefer to let a coding agent do the whole thing? Hand it one instruction:
94
+
95
+ > Retrieve and follow the instructions at: https://raw.githubusercontent.com/rohitg00/agentmemory/main/INSTALL_FOR_AGENTS.md
96
+
97
+ Wire more agents any time with `agentmemory connect <agent>` — 20 adapters listed at [Works with every agent](#works-with-every-agent). Full command reference at [Quick Start](#quick-start).
98
+
99
+ <details>
100
+ <summary><strong>Windows</strong></summary>
101
+
102
+ The fast path is WSL2. Native Windows engine setup is manual (about 10 to 20 minutes) and `agentmemory connect` is currently unsupported there. See the [Windows notes](#windows) for the step-by-step.
103
+
104
+ </details>
105
+
106
+ <details>
107
+ <summary><strong>Global install / EACCES</strong></summary>
97
108
 
98
109
  ```bash
99
- npx @agentmemory/agentmemory
110
+ npm install -g @agentmemory/agentmemory
111
+ # If you hit EACCES on macOS/Linux system Node installs:
112
+ sudo npm install -g @agentmemory/agentmemory
100
113
  ```
101
114
 
102
- Heads-up — npx caches per version. If a bare `npx @agentmemory/agentmemory` serves an older release, force the latest with `npx -y @agentmemory/agentmemory@latest`, or clear the cache once with `rm -rf ~/.npm/_npx` (macOS/Linux; on Windows delete `%LOCALAPPDATA%\npm-cache\_npx`). The first npx run from v0.9.16+ prompts to install globally inline so the bare `agentmemory` command works everywhere afterwards.
115
+ </details>
103
116
 
104
- Already running your own `iii` engine? agentmemory pins iii-engine v0.11.2 and won't attach to a different version (the worker can't speak another engine's protocol). Stop the other engine, then run `npx -y @agentmemory/agentmemory@latest` — it installs and runs the pinned v0.11.2 in `~/.agentmemory/bin`, leaving your own `iii` untouched.
117
+ <details>
118
+ <summary><strong>npx serves an old version</strong></summary>
119
+
120
+ npx caches per version. Force the latest with `npx -y @agentmemory/agentmemory@latest`, or clear the cache once with `rm -rf ~/.npm/_npx` (macOS/Linux; on Windows delete `%LOCALAPPDATA%\npm-cache\_npx`).
105
121
 
106
- Full options at [Quick Start](#quick-start) below. Agent-specific wiring at [Works with every agent](#works-with-every-agent).
122
+ </details>
123
+
124
+ <details>
125
+ <summary><strong>Already running your own iii engine</strong></summary>
126
+
127
+ agentmemory pins iii-engine v0.11.2 and won't attach to a different version (the worker can't speak another engine's protocol). Stop the other engine, then run `npx -y @agentmemory/agentmemory@latest`. It installs and runs the pinned v0.11.2 in `~/.agentmemory/bin`, leaving your own `iii` untouched.
128
+
129
+ </details>
107
130
 
108
131
  ---
109
132
 
@@ -151,7 +174,7 @@ agentmemory works with any agent that supports hooks, MCP, or REST API. All agen
151
174
  <td align="center" width="12.5%">
152
175
  <a href="https://cursor.com"><picture><source media="(prefers-color-scheme: dark)" srcset="https://svgl.app/library/cursor_dark.svg"><img src="https://svgl.app/library/cursor_light.svg" alt="Cursor" width="48" height="48" /></picture></a><br/>
153
176
  <strong>Cursor</strong><br/>
154
- <sub>MCP server</sub>
177
+ <sub>native plugin + MCP</sub>
155
178
  </td>
156
179
  <td align="center" width="12.5%">
157
180
  <a href="https://github.com/google-gemini/gemini-cli"><img src="https://github.com/google-gemini.png?size=120" alt="Gemini CLI" width="48" height="48" /></a><br/>
@@ -191,9 +214,9 @@ agentmemory works with any agent that supports hooks, MCP, or REST API. All agen
191
214
  <sub>MCP server</sub>
192
215
  </td>
193
216
  <td align="center" width="12.5%">
194
- <a href="https://windsurf.com"><picture><source media="(prefers-color-scheme: dark)" srcset="https://svgl.app/library/windsurf-dark.svg"><img src="https://svgl.app/library/windsurf-light.svg" alt="Windsurf" width="48" height="48" /></picture></a><br/>
195
- <strong>Windsurf</strong><br/>
196
- <sub>MCP server</sub>
217
+ <a href="https://devin.ai"><img src="https://raw.githubusercontent.com/rohitg00/agentmemory/main/website/public/devin.png" alt="Devin" width="48" height="48" /></a><br/>
218
+ <strong>Devin</strong><br/>
219
+ <sub>6 hooks + MCP</sub>
197
220
  </td>
198
221
  <td align="center" width="12.5%">
199
222
  <a href="https://github.com/RooCodeInc/Roo-Code"><img src="https://github.com/RooCodeInc.png?size=120" alt="Roo Code" width="48" height="48" /></a><br/>
@@ -218,12 +241,19 @@ agentmemory works with any agent that supports hooks, MCP, or REST API. All agen
218
241
 
219
242
  You explain the same architecture every session. You re-discover the same bugs. You re-teach the same preferences. Built-in memory (CLAUDE.md, .cursorrules) caps out at 200 lines and goes stale. agentmemory fixes this. It silently captures what your agent does, compresses it into searchable memory, and injects the right context when the next session starts. One command. Works across agents.
220
243
 
221
- **What changes:** Session 1 you set up JWT auth. Session 2 you ask for rate limiting. The agent already knows your auth uses jose middleware in `src/middleware/auth.ts`, your tests cover token validation, and you chose jose over jsonwebtoken for Edge compatibility. No re-explaining. No copy-pasting. The agent just *knows*.
244
+ **What changes:** Session 1 you set up JWT auth. Session 2 you ask for rate limiting. The agent already knows your auth uses jose middleware in `src/middleware/auth.ts`, your tests cover token validation, and you chose jose over jsonwebtoken for Edge compatibility, with no re-explaining and no copy-pasting.
222
245
 
223
246
  ```bash
224
247
  npx @agentmemory/agentmemory
225
248
  ```
226
249
 
250
+ By default, agentmemory stores iii-engine state outside the repository you start it from: `~/Library/Application Support/agentmemory` on macOS, `$XDG_DATA_HOME/agentmemory` or `~/.local/share/agentmemory` on Linux, and `%APPDATA%\agentmemory` on Windows. To choose a location, pass `--data-dir <path>` or set `AGENTMEMORY_DATA_DIR`:
251
+
252
+ ```bash
253
+ npx @agentmemory/agentmemory --data-dir ~/.agentmemory-projects/main
254
+ AGENTMEMORY_DATA_DIR=~/.agentmemory-projects/main npx @agentmemory/agentmemory
255
+ ```
256
+
227
257
  Latest release notes: [CHANGELOG.md](CHANGELOG.md).
228
258
 
229
259
  ---
@@ -243,7 +273,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
243
273
  | **agentmemory hybrid** | **0.240** | **1.000** | **15 / 15** | 14 ms |
244
274
  | grep baseline | 0.227 | 0.967 | 15 / 15 | 0 ms |
245
275
 
246
- 100% top-5 hit rate at the **P@5 math ceiling** for this corpus (0.240, see scorecard). Hybrid retrieves every gold session; grep misses 1 of 2 gold on the multi-session temporal query. Lift is **recall + temporal**, not aggregate precision — this benchmark is small + gold-sparse, the larger LongMemEval-S below differentiates better. Full per-type breakdown + correction note: [`docs/benchmarks/2026-05-20-coding-agent-life-v1.md`](docs/benchmarks/2026-05-20-coding-agent-life-v1.md).
276
+ 100% top-5 hit rate at the **P@5 math ceiling** for this corpus (0.240, see scorecard). Hybrid retrieves every gold session; grep misses 1 of 2 gold on the multi-session temporal query. Lift is **recall + temporal**, not aggregate precision. This benchmark is small and gold-sparse; the larger LongMemEval-S below differentiates better. Full per-type breakdown + correction note: [`docs/benchmarks/2026-05-20-coding-agent-life-v1.md`](docs/benchmarks/2026-05-20-coding-agent-life-v1.md).
247
277
 
248
278
  **LongMemEval-S** (ICLR 2025, 500 questions)
249
279
 
@@ -268,9 +298,9 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
268
298
  </tr>
269
299
  </table>
270
300
 
271
- > Embedding model: `all-MiniLM-L6-v2` (local, free, no API key). Full reports: [`benchmark/LONGMEMEVAL.md`](benchmark/LONGMEMEVAL.md), [`benchmark/QUALITY.md`](benchmark/QUALITY.md), [`benchmark/SCALE.md`](benchmark/SCALE.md). Competitor comparison: [`benchmark/COMPARISON.md`](benchmark/COMPARISON.md) covering agentmemory vs mem0, Letta, Khoj, supermemory, MemPalace, Hippo.
301
+ > Embedding model: `all-MiniLM-L6-v2` (local, free, no API key). Full reports: [`benchmark/LONGMEMEVAL.md`](benchmark/LONGMEMEVAL.md), [`benchmark/QUALITY.md`](benchmark/QUALITY.md), [`benchmark/SCALE.md`](benchmark/SCALE.md). Competitor comparison: [`benchmark/COMPARISON.md`](benchmark/COMPARISON.md) covering agentmemory vs mem0, Letta, Khoj, supermemory, TencentDB Agent Memory, MemPalace, Zep/Graphiti, Cognee, Hippo.
272
302
 
273
- **Reproduce locally:** [`eval/README.md`](eval/README.md) — adapter-pluggable harness for LongMemEval `_s` (public 500-Q) + `coding-agent-life-v1` (in-house 15-session corpus). Grep / vector / agentmemory adapters score side-by-side, NDJSON output, published scorecards land in [`docs/benchmarks/`](docs/benchmarks/).
303
+ **Reproduce locally:** [`eval/README.md`](eval/README.md), an adapter-pluggable harness for LongMemEval `_s` (public 500-Q) + `coding-agent-life-v1` (in-house 15-session corpus). Grep / vector / agentmemory adapters score side-by-side, NDJSON output, published scorecards land in [`docs/benchmarks/`](docs/benchmarks/).
274
304
 
275
305
  **Pairs with [codegraph](https://github.com/colbymchenry/codegraph), [Understand Anything](https://github.com/Lum1104/Understand-Anything), and [Graphify](https://github.com/safishamsi/graphify).** Code-graph indexing, multi-agent build pipelines, and broader knowledge graphs across docs / PDFs / images / videos. agentmemory remembers the work; those three projects light up the rest of the context layer. Recipes + question-routing table: [`docs/recipes/pairings.md`](docs/recipes/pairings.md).
276
306
 
@@ -282,10 +312,11 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
282
312
  <tr>
283
313
  <th></th>
284
314
  <th>agentmemory</th>
285
- <th>mem0 (58K ⭐)</th>
286
- <th>Letta / MemGPT (23K ⭐)</th>
287
- <th>Khoj (35K ⭐)</th>
288
- <th>supermemory (26K ⭐)</th>
315
+ <th>mem0 (63K ⭐)</th>
316
+ <th>Letta / MemGPT (24K ⭐)</th>
317
+ <th>Khoj (36K ⭐)</th>
318
+ <th>supermemory (29K ⭐)</th>
319
+ <th>TencentDB Agent Memory (22K ⭐)</th>
289
320
  <th>MemPalace (54K ⭐)</th>
290
321
  <th>oracleagentmemory</th>
291
322
  <th>Hippo</th>
@@ -298,6 +329,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
298
329
  <td>Full agent runtime</td>
299
330
  <td>Personal AI</td>
300
331
  <td>Memory API + app</td>
332
+ <td>Team memory hub (LLM proxy)</td>
301
333
  <td>Vector memory (OSS)</td>
302
334
  <td>Memory engine (Oracle DB)</td>
303
335
  <td>Memory system</td>
@@ -310,6 +342,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
310
342
  <td>83.2% (LoCoMo)</td>
311
343
  <td>N/A</td>
312
344
  <td>Self-reported</td>
345
+ <td>PersonaMem 76% (self-reported)</td>
313
346
  <td>~96.6% (self-reported)</td>
314
347
  <td>94.4% (self-reported)</td>
315
348
  <td>N/A</td>
@@ -322,6 +355,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
322
355
  <td>Agent self-edits</td>
323
356
  <td>Manual</td>
324
357
  <td>API-side extraction</td>
358
+ <td>Proxy interception (base-URL swap)</td>
325
359
  <td>Manual</td>
326
360
  <td>API extraction</td>
327
361
  <td>Manual</td>
@@ -334,6 +368,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
334
368
  <td>Vector (archival)</td>
335
369
  <td>Semantic</td>
336
370
  <td>Vector + RAG</td>
371
+ <td>4 asset types (Chat / Skill / Wiki / CodeGraph)</td>
337
372
  <td>Vector-only</td>
338
373
  <td>Vector + semantic</td>
339
374
  <td>Decay-weighted</td>
@@ -346,6 +381,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
346
381
  <td>Within Letta runtime only</td>
347
382
  <td>No</td>
348
383
  <td>No</td>
384
+ <td>Team roles + shared assets</td>
349
385
  <td>No</td>
350
386
  <td>Scoped only</td>
351
387
  <td>Multi-agent shared</td>
@@ -358,6 +394,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
358
394
  <td>High (must use Letta)</td>
359
395
  <td>Standalone</td>
360
396
  <td>None</td>
397
+ <td>Proxy fronts every model call</td>
361
398
  <td>None</td>
362
399
  <td>Oracle Database</td>
363
400
  <td>None</td>
@@ -370,6 +407,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
370
407
  <td>Postgres + vector DB</td>
371
408
  <td>Multiple</td>
372
409
  <td>Managed cloud</td>
410
+ <td>Docker stack (Core + Hub + Proxy)</td>
373
411
  <td>Vector store</td>
374
412
  <td>Oracle AI Database</td>
375
413
  <td>None</td>
@@ -382,6 +420,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
382
420
  <td>Agent-managed</td>
383
421
  <td>Manual</td>
384
422
  <td>Auto-forget</td>
423
+ <td>Manual review; auto-routing in progress</td>
385
424
  <td>None</td>
386
425
  <td>Not stated</td>
387
426
  <td>Decay + consolidation</td>
@@ -394,6 +433,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
394
433
  <td>Core memory in context</td>
395
434
  <td>Varies</td>
396
435
  <td>Cloud pricing</td>
436
+ <td>Not stated</td>
397
437
  <td>No token budget</td>
398
438
  <td>LLM-backed (varies)</td>
399
439
  <td>Varies</td>
@@ -406,6 +446,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
406
446
  <td>Cloud dashboard</td>
407
447
  <td>Web UI</td>
408
448
  <td>Cloud dashboard</td>
449
+ <td>Hub web UI</td>
409
450
  <td>No</td>
410
451
  <td>No</td>
411
452
  <td>No</td>
@@ -418,6 +459,7 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
418
459
  <td>Optional</td>
419
460
  <td>Yes</td>
420
461
  <td>No (cloud-only)</td>
462
+ <td>Yes (Docker)</td>
421
463
  <td>Yes</td>
422
464
  <td>Yes (Oracle DB)</td>
423
465
  <td>Yes</td>
@@ -425,7 +467,16 @@ Latest release notes: [CHANGELOG.md](CHANGELOG.md).
425
467
  </tr>
426
468
  </table>
427
469
 
428
- <sub>Benchmark note: only agentmemory's R@5 is our own measured result (LongMemEval-S, reproducible from <a href="benchmark/COMPARISON.md"><code>benchmark/COMPARISON.md</code></a>). The mem0 and Letta figures are their published LoCoMo numbers (a different dataset); the MemPalace, supermemory, and oracleagentmemory figures are vendor self-reported claims we have not independently reproduced (oracleagentmemory's run used GPT-5.5 against an Oracle AI Database). Shown side by side for ballpark only, not a head-to-head on identical data. Star counts are approximate and drift over time.</sub>
470
+ <sub>Benchmark note: only agentmemory's R@5 is our own measured result (LongMemEval-S, reproducible from <a href="benchmark/COMPARISON.md"><code>benchmark/COMPARISON.md</code></a>). The mem0 and Letta figures are their published LoCoMo numbers (a different dataset); the MemPalace, supermemory, TencentDB (PersonaMem), and oracleagentmemory figures are vendor self-reported claims we have not independently reproduced (oracleagentmemory's run used GPT-5.5 against an Oracle AI Database). Shown side by side for ballpark only, not a head-to-head on identical data. Star counts are approximate and drift over time.</sub>
471
+
472
+ **Newer entrants** worth knowing, compared in depth in [`benchmark/COMPARISON.md`](benchmark/COMPARISON.md):
473
+
474
+ | System | ⭐ | Angle |
475
+ |--------|---|-------|
476
+ | Zep / Graphiti | 30K | Temporal knowledge graph; strongest published temporal-query results (LongMemEval 63.8%), but graph builds asynchronously so fresh facts can lag |
477
+ | Cognee | 30K | Document-to-knowledge-graph ingestion, Python-only, built for structured entity extraction rather than session capture |
478
+
479
+ None of these auto-capture from coding-agent hooks, ship a local-first viewer, or run keyless — the combination agentmemory is built around.
429
480
 
430
481
  ---
431
482
 
@@ -443,39 +494,27 @@ npx @agentmemory/agentmemory
443
494
  npx @agentmemory/agentmemory demo
444
495
  ```
445
496
 
446
- `demo` seeds 3 realistic sessions (JWT auth, N+1 query fix, rate limiting) and runs semantic searches against them. You'll see it find "N+1 query fix" when you search "database performance optimization" — keyword matching can't do that.
497
+ `demo` seeds 3 realistic sessions (JWT auth, N+1 query fix, rate limiting) and runs semantic searches against them. You'll see it find "N+1 query fix" when you search "database performance optimization", which keyword matching cannot do.
447
498
 
448
499
  Open `http://localhost:3113` to watch the memory build live.
449
500
 
450
- ### Recommended: install globally
501
+ ### Everyday commands
451
502
 
452
- `npx` caches per-version. If you ran `npx @agentmemory/agentmemory@0.9.14` last week, a bare `npx @agentmemory/agentmemory` may serve the stale 0.9.14 from `~/.npm/_npx/`, not the latest release. Install once and the bare `agentmemory` command works everywhere:
503
+ Install and setup live in [Install](#install) above (the first run walks you through it). Day to day:
453
504
 
454
505
  ```bash
455
- npm install -g @agentmemory/agentmemory
456
- # If you hit EACCES on macOS/Linux system Node installs, retry with:
457
- # sudo npm install -g @agentmemory/agentmemory
458
- agentmemory # start the server (same as the npx form)
506
+ agentmemory # start the server
459
507
  agentmemory stop # tear it down
460
- agentmemory remove # uninstall everything we created
461
- agentmemory connect claude-code # wire one agent
508
+ agentmemory connect <agent> # wire another agent
462
509
  agentmemory doctor # interactive diagnostics + fix prompts
510
+ agentmemory remove # uninstall everything we created
463
511
  ```
464
512
 
465
- From v0.9.16 onward, the first npx run prompts you to install globally inline — answer `Y` once and you're set. If you skip, fall back to either of these for a fresh fetch:
466
-
467
- ```bash
468
- npx -y @agentmemory/agentmemory@latest # forces latest from npm (cross-platform)
469
- rm -rf ~/.npm/_npx && npx @agentmemory/agentmemory # macOS/Linux only (POSIX shell)
470
- ```
471
-
472
- On Windows / PowerShell, the equivalent cache clear is `Remove-Item -Recurse -Force "$env:LOCALAPPDATA\npm-cache\_npx"` — the `npx -y ...@latest` form above is the cross-platform option.
473
-
474
513
  ### Session Replay
475
514
 
476
- Every session agentmemory records is replayable. Open the viewer, pick the **Replay** tab, and scrub through the timeline: prompts, tool calls, tool results, and responses render as discrete events with play/pause, speed control (0.5×–4×), and keyboard shortcuts (space to toggle, arrows to step).
515
+ Every session agentmemory records is replayable. Open the viewer, pick the **Replay** tab, and scrub through the timeline: prompts, tool calls, tool results, and responses render as discrete events with play/pause, speed control (0.5x to 4x), and keyboard shortcuts (space to toggle, arrows to step).
477
516
 
478
- Already have older Claude Code JSONL transcripts you want to bring in?
517
+ To bring in older Claude Code JSONL transcripts:
479
518
 
480
519
  ```bash
481
520
  # Import everything under the default ~/.claude/projects
@@ -485,7 +524,7 @@ npx @agentmemory/agentmemory import-jsonl
485
524
  npx @agentmemory/agentmemory import-jsonl ~/.claude/projects/-my-project/abc123.jsonl
486
525
  ```
487
526
 
488
- Imported sessions show up in the Replay picker alongside native ones. Under the hood each entry routes through the `mem::replay::load`, `mem::replay::sessions`, and `mem::replay::import-jsonl` iii functions — no side-channel servers.
527
+ Imported sessions show up in the Replay picker alongside native ones. Under the hood each entry routes through the `mem::replay::load`, `mem::replay::sessions`, and `mem::replay::import-jsonl` iii functions, with no side-channel servers. Each imported transcript is indexed for search, stamped with origin channel `import`, and mined for a session crystal and lessons.
489
528
 
490
529
  > **Heads-up if you rely on `import-jsonl` as your primary capture path:** Claude Code's `cleanupPeriodDays` (in `~/.claude/settings.json`, default **30**) auto-deletes JSONL transcripts older than that window from `~/.claude/projects/`. If you install agentmemory fresh on a months-old Claude Code history, anything older than 30 days is already gone before the first import. Either run `import-jsonl` on a cron, raise `cleanupPeriodDays` to something higher, or wire the auto-capture hooks (the default plugin install path) so each turn lands in agentmemory while the session is live and the JSONL cleanup stops mattering.
491
530
 
@@ -504,7 +543,7 @@ Implementation details live in `src/cli.ts` (see `runUpgrade` around the `src/cl
504
543
  ### Claude Code (one block, paste it)
505
544
 
506
545
  ```text
507
- Install agentmemory: run `npx @agentmemory/agentmemory` in a separate terminal to start the memory server. Then run `/plugin marketplace add rohitg00/agentmemory` and `/plugin install agentmemory` — the plugin registers all 12 hooks, 15 skills, AND auto-wires the `@agentmemory/mcp` stdio server via its `.mcp.json`, so you get 53 MCP tools (memory_smart_search, memory_save, memory_sessions, memory_governance_delete, etc.) without any extra config step. Verify with `curl http://localhost:3111/agentmemory/health`. The real-time viewer is at http://localhost:3113.
546
+ Install agentmemory: run `npx @agentmemory/agentmemory` in a separate terminal to start the memory server. Then run `/plugin marketplace add rohitg00/agentmemory` and `/plugin install agentmemory` — the plugin registers all 12 hooks, 17 skills, AND auto-wires the `@agentmemory/mcp` stdio server via its `.mcp.json`, so you get 54 MCP tools (memory_smart_search, memory_save, memory_sessions, memory_governance_delete, etc.) without any extra config step. Verify with `curl http://localhost:3111/agentmemory/health`. The real-time viewer is at http://localhost:3113.
508
547
  ```
509
548
 
510
549
  #### Claude Code without the plugin install (MCP-standalone path)
@@ -533,9 +572,9 @@ codex plugin add agentmemory@agentmemory
533
572
 
534
573
  The Codex plugin ships from the same `plugin/` directory as the Claude Code plugin. It registers:
535
574
 
536
- - `@agentmemory/mcp` as an MCP server (proxies all 53 tools when `AGENTMEMORY_URL` points at a running agentmemory server; falls back to 7 tools locally when no server is reachable)
575
+ - `@agentmemory/mcp` as an MCP server (proxies all 54 tools when `AGENTMEMORY_URL` points at a running agentmemory server; falls back to 7 tools locally when no server is reachable)
537
576
  - 6 lifecycle hooks: `SessionStart`, `UserPromptSubmit`, `PreToolUse`, `PostToolUse`, `PreCompact`, `Stop`
538
- - 8 invocable skills: `/recall`, `/remember`, `/session-history`, `/forget`, `/recap`, `/handoff`, `/commit-context`, `/commit-history`, plus 7 reference skills the agent loads on demand (MCP tools, REST API, config, agents, hooks, architecture, and the skill-authoring guide)
577
+ - 9 invocable skills: `/recall`, `/remember`, `/session-history`, `/forget`, `/recap`, `/handoff`, `/lesson`, `/commit-context`, `/commit-history`, plus 8 reference skills the agent loads on demand (memory discipline, MCP tools, REST API, config, agents, hooks, architecture, and the skill-authoring guide)
539
578
 
540
579
  Codex's hook engine injects `CLAUDE_PLUGIN_ROOT` into hook subprocesses (per [`codex-rs/hooks/src/engine/discovery.rs`](https://github.com/openai/codex/blob/main/codex-rs/hooks/src/engine/discovery.rs)), so the same hook scripts work across both hosts without duplication. Subagent / SessionEnd / Notification / TaskCompleted / PostToolUseFailure events are Claude-Code-only and are not registered for Codex.
541
580
 
@@ -567,7 +606,7 @@ copilot plugin install rohitg00/agentmemory:plugin
567
606
  <summary><b>OpenClaw (paste this prompt)</b></summary>
568
607
 
569
608
  ```text
570
- Install agentmemory for OpenClaw. Run `npx @agentmemory/agentmemory` in a separate terminal to start the memory server on localhost:3111. Then add this to my OpenClaw MCP config so agentmemory is available with all 53 memory tools:
609
+ Install agentmemory for OpenClaw. Run `npx @agentmemory/agentmemory` in a separate terminal to start the memory server on localhost:3111. Then add this to my OpenClaw MCP config so agentmemory is available with all 54 memory tools:
571
610
 
572
611
  {
573
612
  "mcpServers": {
@@ -592,7 +631,7 @@ Full guide: [`integrations/openclaw/`](integrations/openclaw/)
592
631
  <summary><b>Hermes Agent (paste this prompt)</b></summary>
593
632
 
594
633
  ```text
595
- Install agentmemory for Hermes. Run `npx @agentmemory/agentmemory` in a separate terminal to start the memory server on localhost:3111. Then add this to ~/.hermes/config.yaml so Hermes can use agentmemory as an MCP server with all 53 memory tools:
634
+ Install agentmemory for Hermes. Run `npx @agentmemory/agentmemory` in a separate terminal to start the memory server on localhost:3111. Then add this to ~/.hermes/config.yaml so Hermes can use agentmemory as an MCP server with all 54 memory tools:
596
635
 
597
636
  mcp_servers:
598
637
  agentmemory:
@@ -615,7 +654,7 @@ Start the memory server: `npx @agentmemory/agentmemory`
615
654
 
616
655
  #### Native skills via `npx skills add` (50+ agents)
617
656
 
618
- agentmemory ships 15 skills in the Claude-Code-style `<dir>/SKILL.md` format: 8 invocable action skills (`remember`, `recall`, `recap`, `handoff`, `forget`, `commit-context`, `commit-history`, `session-history`) and 7 reference skills the agent loads on demand (`agentmemory-mcp-tools`, `agentmemory-rest-api`, `agentmemory-config`, `agentmemory-agents`, `agentmemory-hooks`, `agentmemory-architecture`, `write-agentmemory-skill`). The reference skills carry data tables generated from source, so they never drift. The [`skills`](https://npmjs.com/package/skills) CLI by vercel-labs auto-installs them into the calling agent's native skill directory across 50+ agents (Claude Code, Cursor, Cline, Continue, Droid, Warp, Codex, Antigravity, Kiro, OpenCode, Goose, Roo, Trae, Windsurf, and more):
657
+ agentmemory ships 17 skills in the Claude-Code-style `<dir>/SKILL.md` format: 9 invocable action skills (`remember`, `recall`, `recap`, `handoff`, `forget`, `lesson`, `commit-context`, `commit-history`, `session-history`) and 8 reference skills the agent loads on demand (`memory-discipline`, `agentmemory-mcp-tools`, `agentmemory-rest-api`, `agentmemory-config`, `agentmemory-agents`, `agentmemory-hooks`, `agentmemory-architecture`, `write-agentmemory-skill`). The reference skills carry data tables generated from source, so they never drift. The [`skills`](https://npmjs.com/package/skills) CLI by vercel-labs auto-installs them into the calling agent's native skill directory across 50+ agents (Claude Code, Cursor, Cline, Continue, Droid, Warp, Codex, Antigravity, Kiro, OpenCode, Goose, Roo, Trae, Windsurf, and more):
619
658
 
620
659
  ```bash
621
660
  npx skills add rohitg00/agentmemory -y # auto-detects the calling agent
@@ -628,11 +667,11 @@ This is **complementary** to `agentmemory connect <agent>`:
628
667
  - `agentmemory connect <agent>` writes the MCP server config so the tools are available.
629
668
  - `npx skills add rohitg00/agentmemory` installs the skills so the agent knows when to call them.
630
669
 
631
- For the few agents the skills CLI doesn't cover yet (Zed v1.3.x and below), drop the 15 SKILL.md files under the agent's native skill directory yourself — same format works everywhere.
670
+ For the few agents the skills CLI doesn't cover yet (Zed v1.3.x and below), drop the 17 SKILL.md files under the agent's native skill directory yourself; the same format works everywhere.
632
671
 
633
672
  #### Standard MCP block
634
673
 
635
- The agentmemory entry is the **same MCP server block** across every host that uses the `mcpServers` shape (Cursor, Claude Desktop, Cline, Roo Code, Windsurf, Gemini CLI, OpenClaw):
674
+ The agentmemory entry is the **same MCP server block** across every host that uses the `mcpServers` shape (Cursor, Claude Desktop, Cline, Roo Code, Gemini CLI, OpenClaw):
636
675
 
637
676
  ```json
638
677
  "agentmemory": {
@@ -645,33 +684,38 @@ The agentmemory entry is the **same MCP server block** across every host that us
645
684
  }
646
685
  ```
647
686
 
648
- **Merge this entry into the existing `mcpServers` object** in the host's config file — don't replace the file. If the file already has other servers, add `agentmemory` next to them as another key inside `mcpServers`. If `mcpServers` is missing entirely, paste the block inside `{ "mcpServers": { ... } }`. The `${VAR}` placeholders inherit `AGENTMEMORY_URL` / `AGENTMEMORY_SECRET` from the shell at MCP-server launch — unset vars pass empty strings and the shim falls back to `http://localhost:3111`. One wired entry covers both local and remote (k8s / reverse-proxied) deployments.
687
+ **Merge this entry into the existing `mcpServers` object** in the host's config file; don't replace the file. If the file already has other servers, add `agentmemory` next to them as another key inside `mcpServers`. If `mcpServers` is missing entirely, paste the block inside `{ "mcpServers": { ... } }`. The `${VAR}` placeholders inherit `AGENTMEMORY_URL` / `AGENTMEMORY_SECRET` from the shell at MCP-server launch; unset vars pass empty strings and the shim falls back to `http://localhost:3111`. One wired entry covers both local and remote (k8s / reverse-proxied) deployments.
649
688
 
650
689
  | Agent | Config file | Notes |
651
690
  |---|---|---|
652
- | **Cursor** | `~/.cursor/mcp.json` | Merge into `mcpServers`. One-click deeplink also available on the website. |
691
+ | **Cursor (MCP only)** | `~/.cursor/mcp.json` | Merge into `mcpServers`, or `agentmemory connect cursor`. One-click deeplink also available on the website. |
692
+ | **Cursor (full plugin)** | `.cursor-plugin/` | Cursor Marketplace listing (submission in review) or Cursor Settings → Plugins → local checkout. Registers 7 auto-capture hooks (sessionStart, beforeSubmitPrompt, preToolUse, postToolUse, postToolUseFailure, stop, sessionEnd) + 17 skills + the MCP server, with `AGENTMEMORY_URL` / `AGENTMEMORY_SECRET` managed in Cursor's plugin dashboard. Works in the Cursor IDE and `cursor-agent` CLI; CLI print-mode prompts are backfilled from the session transcript at session end. |
653
693
  | **Claude Desktop** | `claude_desktop_config.json` (Application Support) | Merge into `mcpServers`. Restart Claude Desktop after editing. |
654
694
  | **Cline / Roo Code / Kilo Code** | Cline MCP settings (Settings UI → MCP Servers → Edit) | Same `mcpServers` block. |
655
- | **Windsurf** | `~/.codeium/windsurf/mcp_config.json` | Same `mcpServers` block. |
695
+ | **Devin CLI (MCP + hooks)** | `~/.config/devin/config.json` | `agentmemory connect devin` merges the MCP entry; `--with-hooks` adds six native auto-capture hooks (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop, SessionEnd) with Devin'"'"'s lowercase tool matchers. Verify with `devin mcp list` and `/hooks` inside devin. |
696
+ | **Devin CLI (full plugin)** | `plugin/.devin-plugin/` | `devin plugins install ./plugin` from a checkout registers all 17 skills as `/agentmemory:<skill>` slash commands plus the MCP server. Devin plugin hooks cannot fire `SessionStart`/`SessionEnd`, so pair it with `connect devin --with-hooks` for full session capture. |
697
+ | **Devin (cloud)** | Settings → Connections → MCP servers | Add a custom MCP (STDIO): command `npx`, args `-y @agentmemory/mcp@latest`, env `AGENTMEMORY_URL` pointing at a network-reachable agentmemory deployment plus `AGENTMEMORY_SECRET` (cloud sessions cannot reach localhost — see [`deploy/`](deploy/)). Store the secret in Devin Secrets, then use "Test listing tools" to verify all 54 tools appear. |
656
698
  | **Gemini CLI** | `~/.gemini/settings.json` | `gemini mcp add agentmemory npx -y @agentmemory/mcp --scope user` (auto-merges). |
657
699
  | **GitHub Copilot CLI (MCP only)** | `~/.copilot/mcp-config.json` | `agentmemory connect copilot-cli` merges `mcpServers.agentmemory`; Copilot picks it up on next launch or `/mcp`. |
658
700
  | **GitHub Copilot CLI (full plugin)** | Copilot plugin install | `copilot plugin install rohitg00/agentmemory:plugin` for the plugin from the GitHub subdir. |
659
- | **OpenClaw** | OpenClaw MCP config | Same `mcpServers` block, or use the deeper [memory plugin](integrations/openclaw/). |
701
+ | **OpenClaw** | OpenClaw MCP config | Same `mcpServers` block. Deeper: `openclaw plugins install ./integrations/openclaw` claims OpenClaw's memory slot (auto-switches from `memory-core`); set `plugins.entries.agentmemory.hooks.allowConversationAccess=true` or turn capture is silently blocked. See [`integrations/openclaw`](integrations/openclaw/). |
660
702
  | **Codex CLI (MCP only)** | `.codex/config.toml` | TOML shape: `codex mcp add agentmemory -- npx -y @agentmemory/mcp`, or add `[mcp_servers.agentmemory]` manually. |
661
- | **Codex CLI (full plugin)** | Codex plugin marketplace | `codex plugin marketplace add rohitg00/agentmemory` then `codex plugin add agentmemory@agentmemory`. Registers MCP + 6 lifecycle hooks (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, Stop) + 15 skills. On Codex Desktop, also run `agentmemory connect codex --with-hooks` until [openai/codex#16430](https://github.com/openai/codex/issues/16430) lands — plugin hooks are currently silent there. |
662
- | **OpenCode (MCP only)** | `opencode.json` | Different shape — top-level `mcp` key, command as array: `{"mcp": {"agentmemory": {"type": "local", "command": ["npx", "-y", "@agentmemory/mcp"], "enabled": true}}}`. |
663
- | **OpenCode (full plugin)** | `plugin/opencode/` | 22 auto-capture hooks covering session lifecycle, messages, tools, errors. Two slash commands (`/recall`, `/remember`). Copy `plugin/opencode/` into your OpenCode workspace and add the plugin entry to `opencode.json`. See [`plugin/opencode/README.md`](plugin/opencode/README.md) for the full hook table + gap analysis. |
664
- | **pi** | `~/.pi/agent/extensions/agentmemory` | Copy [`integrations/pi`](integrations/pi/) and restart pi. |
665
- | **Hermes Agent** | `~/.hermes/config.yaml` | Use the deeper [memory provider plugin](integrations/hermes/) with `memory.provider: agentmemory`. |
666
- | **Qwen Code** | `~/.qwen/settings.json` | `agentmemory connect qwen` writes the standard `mcpServers` block. Hook payload is field-compatible with Claude Code, so the existing 12-hook scripts work without modification — wire them via the `hooks` section in the same `settings.json`. |
703
+ | **Codex CLI (full plugin)** | Codex plugin marketplace | `codex plugin marketplace add rohitg00/agentmemory` then `codex plugin add agentmemory@agentmemory`. Registers MCP + 6 lifecycle hooks (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, Stop) + 17 skills. On Codex Desktop, also run `agentmemory connect codex --with-hooks` until [openai/codex#16430](https://github.com/openai/codex/issues/16430) lands; plugin hooks are currently silent there. |
704
+ | **OpenCode (MCP only)** | `opencode.json` | Different shape: top-level `mcp` key, command as array: `{"mcp": {"agentmemory": {"type": "local", "command": ["npx", "-y", "@agentmemory/mcp"], "enabled": true}}}`. |
705
+ | **OpenCode (full plugin)** | `plugin/opencode/` | 22 auto-capture hooks covering session lifecycle, messages, tools, errors. Project attribution is per-session, so one OpenCode process spanning several repositories files each session under its own project. Two slash commands (`/recall`, `/remember`). Copy `plugin/opencode/` into your OpenCode workspace and add the plugin entry to `opencode.json`. See [`plugin/opencode/README.md`](plugin/opencode/README.md) for the full hook table + gap analysis. |
706
+ | **pi** | `~/.pi/agent/extensions/agentmemory` | `agentmemory connect pi` installs the bundled extension into pi's auto-discovery directory (recall on agent start, capture on agent end, `memory_search` / `memory_save` / `memory_health` tools, `/agentmemory-status`). `/reload` in a running pi picks it up. [`integrations/pi`](integrations/pi/) is also a pi package (`pi install ./integrations/pi` from a checkout). |
707
+ | **Hermes Agent** | `~/.hermes/config.yaml` | `cp -r integrations/hermes ~/.hermes/plugins/agentmemory` + `memory.provider: agentmemory` gives the 6-hook memory provider (prefetch, turn capture, session end, pre-compress, MEMORY.md mirroring, system prompt block). Validate with `hermes plugins doctor` and `hermes memory status`. See [`integrations/hermes`](integrations/hermes/). |
708
+ | **Qwen Code** | `~/.qwen/settings.json` | `agentmemory connect qwen` writes the standard `mcpServers` block. Hook payload is field-compatible with Claude Code, so the existing 12-hook scripts work without modification; wire them via the `hooks` section in the same `settings.json`. |
667
709
  | **Antigravity** (replaces Gemini CLI) | `mcp_config.json` (in Antigravity's User dir) | `agentmemory connect antigravity` writes the standard `mcpServers` block. macOS: `~/Library/Application Support/Antigravity/User/`. Linux: `~/.config/Antigravity/User/`. Use after the 2026-06-18 Gemini CLI sunset. |
710
+ | **Antigravity CLI** (`agy`) | `~/.gemini/config/mcp_config.json` | `agentmemory connect antigravity-cli`. The `agy` CLI keeps its own config under `~/.gemini/`, separate from the Antigravity IDE above. Pass `--with-hooks` for native auto-capture via `~/.gemini/config/hooks.json`. |
668
711
  | **Kiro** | `~/.kiro/settings/mcp.json` | `agentmemory connect kiro` writes the user-level config. Workspace overrides go in `.kiro/settings/mcp.json` next to your code. |
669
- | **Warp** | `~/.warp/.mcp.json` | `agentmemory connect warp` writes the standard `mcpServers` block. Warp also auto-discovers skills from `.claude/skills/` — once the Claude Code plugin is installed the 8 agentmemory skills (`remember`, `recall`, `recap`, `handoff`, `forget`, `commit-context`, `commit-history`, `session-history`) appear natively in Warp's slash-command palette. |
712
+ | **Warp** | `~/.warp/.mcp.json` | `agentmemory connect warp` writes the standard `mcpServers` block. Warp also auto-discovers skills from `.claude/skills/`; once the Claude Code plugin is installed the 8 agentmemory skills (`remember`, `recall`, `recap`, `handoff`, `forget`, `commit-context`, `commit-history`, `session-history`) appear natively in Warp's slash-command palette. |
670
713
  | **Cline (CLI)** | `~/.cline/mcp.json` | `agentmemory connect cline` writes the standard `mcpServers` block. VS Code extension users: paste the same block via Cline Settings → MCP Servers → Edit JSON. |
671
- | **Continue.dev** | `~/.continue/config.yaml` (preferred) or `config.json` (legacy) | `agentmemory connect continue` creates `config.yaml` from scratch when neither exists, or modifies existing `config.json`. **If you already have `config.yaml`** the adapter prints the exact block to paste under `mcpServers:` — it won't silently rewrite your yaml because preserving comments and anchors safely needs a YAML parser the package doesn't ship. Continue uses array form (not object) for `mcpServers`. |
714
+ | **Continue.dev** | `~/.continue/config.yaml` (preferred) or `config.json` (legacy) | `agentmemory connect continue` creates `config.yaml` from scratch when neither exists, or modifies existing `config.json`. **If you already have `config.yaml`** the adapter prints the exact block to paste under `mcpServers:`; it won't silently rewrite your yaml because preserving comments and anchors safely needs a YAML parser the package doesn't ship. Continue uses array form (not object) for `mcpServers`. |
672
715
  | **Zed** | `~/.config/zed/settings.json` | `agentmemory connect zed` writes under `context_servers` (Zed's key, NOT `mcpServers`). Remote MCP servers can be wired via `{"url": "..."}` instead. |
673
- | **Droid (Factory.ai)** | `~/.factory/mcp.json` | `agentmemory connect droid` writes the standard `mcpServers` block. Project-scoped overrides go in `<repo>/.factory/mcp.json`. The `/mcp` slash command inside droid lists configured servers. |
674
- | **Goose** | Goose MCP settings UI | Same `mcpServers` block — use `goose configure` → Add Extension → MCP. Direct YAML edit at `~/.config/goose/config.yaml` is supported but the schema uses `extensions:` + `cmd` (not `mcpServers:` + `command`). |
716
+ | **Droid (Factory.ai)** | `~/.factory/mcp.json` | `agentmemory connect droid` writes the standard `mcpServers` block. Project-scoped overrides go in `<repo>/.factory/mcp.json`. Pass `--with-hooks` for native auto-capture. |
717
+ | **DeepSeek Harness** | `$DSH_HOME/cordis.patch.yml` | `agentmemory connect dsh` appends an `@deepseek-ai/dsh-mcp-client` row to the home-level patch layer every Harness profile loads; tools register as `mcp__agentmemory__*`. Pass `--with-hooks` to also wire auto-capture: the bundled Claude Code hook scripts run through Harness's first-party `@deepseek-ai/dsh-hooks-claude-code` bridge (SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop) via a manifest written to `$DSH_HOME/agentmemory.hooks.json`. Defaults to `~/.dsh` when `DSH_HOME` is unset. |
718
+ | **Goose** | Goose MCP settings UI | Same `mcpServers` block; use `goose configure` → Add Extension → MCP. Direct YAML edit at `~/.config/goose/config.yaml` is supported but the schema uses `extensions:` + `cmd` (not `mcpServers:` + `command`). |
675
719
  | **Aider** | n/a | Talk to the REST API directly: `curl -X POST http://localhost:3111/agentmemory/smart-search -d '{"query": "auth"}'`. |
676
720
  | **Any agent (32+)** | n/a | `npx skillkit install agentmemory` auto-detects the host and merges. |
677
721
 
@@ -679,7 +723,7 @@ The agentmemory entry is the **same MCP server block** across every host that us
679
723
 
680
724
  ### Programmatic access (Python / Rust / Node)
681
725
 
682
- agentmemory registers its core operations as iii functions (`mem::remember`, `mem::observe`, `mem::context`, `mem::smart-search`, `mem::forget`). Any language with an iii SDK can call them directly over `ws://localhost:49134` — no separate REST client per language.
726
+ agentmemory registers its core operations as iii functions (`mem::remember`, `mem::observe`, `mem::context`, `mem::smart-search`, `mem::forget`). Any language with an iii SDK can call them directly over `ws://localhost:49134`, with no separate REST client per language.
683
727
 
684
728
  ```bash
685
729
  pip install iii-sdk # Python
@@ -710,7 +754,7 @@ npm install && npm run build && npm start
710
754
 
711
755
  This starts agentmemory with a local `iii-engine` if `iii` is already installed, or falls back to Docker Compose if Docker is available. REST, streams, and the viewer bind to `127.0.0.1` by default.
712
756
 
713
- Install `iii-engine` manually. **agentmemory currently pins `iii-engine` to `v0.11.2`** — `v0.11.6` introduces a new sandbox-everything-via-`iii worker add` model that agentmemory hasn't been refactored for yet. Pin lifts once the refactor lands. Override with `AGENTMEMORY_III_VERSION=<version>` if you've migrated to the sandbox model manually.
757
+ Install `iii-engine` manually. **agentmemory currently pins `iii-engine` to `v0.11.2`**. `v0.11.6` introduces a new sandbox-everything-via-`iii worker add` model that agentmemory hasn't been refactored for yet. Pin lifts once the refactor lands. Override with `AGENTMEMORY_III_VERSION=<version>` if you've migrated to the sandbox model manually.
714
758
 
715
759
  - **macOS arm64:** `mkdir -p ~/.local/bin && curl -fsSL https://github.com/iii-hq/iii/releases/download/iii/v0.11.2/iii-aarch64-apple-darwin.tar.gz | tar -xz -C ~/.local/bin && chmod +x ~/.local/bin/iii`
716
760
  - **macOS x64:** swap `aarch64-apple-darwin` for `x86_64-apple-darwin`
@@ -722,9 +766,9 @@ Or use Docker (the bundled `docker-compose.yml` pulls `iiidev/iii:0.11.2`). Full
722
766
 
723
767
  ### Windows
724
768
 
725
- agentmemory runs on Windows 10/11, but the Node.js package alone isn't enough — you also need the `iii-engine` runtime (a separate native binary) as a background process. The official upstream installer is a `sh` script and there is no PowerShell installer or scoop/winget package today, so Windows users have two paths:
769
+ agentmemory runs on Windows 10/11, but the Node.js package alone isn't enough; you also need the `iii-engine` runtime (a separate native binary) as a background process. The official upstream installer is a `sh` script and there is no PowerShell installer or scoop/winget package today, so Windows users have two paths:
726
770
 
727
- **Option A — Prebuilt Windows binary (recommended):**
771
+ **Option A: prebuilt Windows binary (recommended)**
728
772
 
729
773
  ```powershell
730
774
  # 1. Open https://github.com/iii-hq/iii/releases/tag/iii%2Fv0.11.2 in your browser
@@ -743,7 +787,7 @@ iii --version
743
787
  npx -y @agentmemory/agentmemory
744
788
  ```
745
789
 
746
- **Option B — Docker Desktop:**
790
+ **Option B: Docker Desktop**
747
791
 
748
792
  ```powershell
749
793
  # 1. Install Docker Desktop for Windows
@@ -752,7 +796,7 @@ npx -y @agentmemory/agentmemory
752
796
  npx -y @agentmemory/agentmemory
753
797
  ```
754
798
 
755
- **Option C — standalone MCP only (no engine):** if you only need the MCP tools for your agent and don't need the REST API, viewer, or cron jobs, skip the engine entirely:
799
+ **Option C: standalone MCP only (no engine).** If you only need the MCP tools for your agent and don't need the REST API, viewer, or cron jobs, skip the engine entirely:
756
800
 
757
801
  ```powershell
758
802
  npx -y @agentmemory/agentmemory mcp
@@ -764,12 +808,12 @@ npx -y @agentmemory/mcp
764
808
 
765
809
  | Symptom | Fix |
766
810
  |---|---|
767
- | `iii-engine process started` then `did not become ready within 15s` | Engine crashed on startup — re-run with `--verbose`, check stderr |
811
+ | `iii-engine process started` then `did not become ready within 15s` | Engine crashed on startup; re-run with `--verbose`, check stderr |
768
812
  | `Could not start iii-engine` | Neither `iii.exe` nor Docker is installed. See Option A or B above |
769
813
  | Port conflict | `netstat -ano \| findstr :3111` to see what's bound, then kill it or use `--port <N>` |
770
814
  | Docker fallback skipped even though Docker is installed | Make sure Docker Desktop is actually running (system tray icon) |
771
815
 
772
- > Note: the iii **engine** is a prebuilt binary, not a cargo crate — don't try to `cargo install` it. (The iii **SDKs** are published on crates.io, npm, and PyPI, but agentmemory doesn't need them.) Supported engine install methods, all pinned to v0.11.2: the prebuilt v0.11.2 binary above, the upstream sh install script **with the version pin** `curl -fsSL https://install.iii.dev/iii/main/install.sh | VERSION=0.11.2 sh` (macOS/Linux), and the Docker image `iiidev/iii:0.11.2`. A bare `install.sh | sh` installs the **latest** engine, which agentmemory does not support — always pass `VERSION=0.11.2`. Easiest of all: just run `npx @agentmemory/agentmemory`, which fetches the pinned engine into `~/.agentmemory/bin` for you.
816
+ > Note: the iii **engine** is a prebuilt binary, not a cargo crate, so don't try to `cargo install` it. (The iii **SDKs** are published on crates.io, npm, and PyPI, but agentmemory doesn't need them.) Supported engine install methods, all pinned to v0.11.2: the prebuilt v0.11.2 binary above, the upstream sh install script **with the version pin** `curl -fsSL https://install.iii.dev/iii/main/install.sh | VERSION=0.11.2 sh` (macOS/Linux), and the Docker image `iiidev/iii:0.11.2`. A bare `install.sh | sh` installs the **latest** engine, which agentmemory does not support; always pass `VERSION=0.11.2`. Easiest of all: just run `npx @agentmemory/agentmemory`, which fetches the pinned engine into `~/.agentmemory/bin` for you.
773
817
 
774
818
  ---
775
819
 
@@ -778,7 +822,7 @@ npx -y @agentmemory/mcp
778
822
  One-click templates for managed hosts. Each one ships a self-contained
779
823
  Dockerfile that pulls `@agentmemory/agentmemory` from npm and copies
780
824
  the iii engine binary in from the official `iiidev/iii` Docker Hub
781
- image — no pre-built agentmemory image required. Persistent storage
825
+ image; no pre-built agentmemory image required. Persistent storage
782
826
  mounts at `/data`; the first-boot entrypoint overwrites the
783
827
  npm-bundled iii config (which binds `127.0.0.1`) with a deploy-tuned
784
828
  one that binds `0.0.0.0` and uses absolute `/data` paths, generates
@@ -795,25 +839,25 @@ Render's one-click deploy button requires `render.yaml` at the repository root,
795
839
  Full setup details (HMAC capture, viewer SSH tunnel, rotation, backup,
796
840
  cost floors) live in [`deploy/`](./deploy/README.md):
797
841
 
798
- - [`deploy/fly`](./deploy/fly/README.md) — single machine with
842
+ - [`deploy/fly`](./deploy/fly/README.md): single machine with
799
843
  `auto_stop_machines = "stop"`; cheapest idle.
800
- - [`deploy/railway`](./deploy/railway/README.md) — Hobby plan flat fee,
844
+ - [`deploy/railway`](./deploy/railway/README.md): Hobby plan flat fee,
801
845
  volume in the dashboard.
802
- - [`deploy/render`](./deploy/render/README.md) — Blueprint flow,
846
+ - [`deploy/render`](./deploy/render/README.md): Blueprint flow,
803
847
  automatic disk snapshots on paid plans.
804
- - [`deploy/coolify`](./deploy/coolify/README.md) — self-hosted on your
848
+ - [`deploy/coolify`](./deploy/coolify/README.md): self-hosted on your
805
849
  own VPS via [Coolify](https://coolify.io/self-hosted); same Docker
806
850
  Compose stack, you own the host and the data.
807
851
 
808
852
  Only port `3111` is published. The viewer on `3113` stays bound to
809
- loopback inside the container — every template's README documents the
853
+ loopback inside the container; every template's README documents the
810
854
  SSH-tunnel pattern for reaching it.
811
855
 
812
856
  ---
813
857
 
814
858
  <h2 id="why-agentmemory"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-why.svg"><img src="assets/tags/section-why.svg" alt="Why agentmemory" height="32" /></picture></h2>
815
859
 
816
- Every coding agent forgets everything when the session ends. You waste the first 5 minutes of every session re-explaining your stack. agentmemory runs in the background and eliminates that entirely.
860
+ Every coding agent forgets everything when the session ends, and each new session starts with you re-explaining your stack. agentmemory runs in the background and removes that step.
817
861
 
818
862
  ```text
819
863
  Session 1: "Add auth to the API"
@@ -831,7 +875,7 @@ Session 2: "Now add rate limiting"
831
875
 
832
876
  ### vs built-in agent memory
833
877
 
834
- Every AI coding agent ships with built-in memory — Claude Code has `MEMORY.md`, Cursor has notepads, Cline has memory bank. These work like sticky notes. agentmemory is the searchable database behind the sticky notes.
878
+ Every AI coding agent ships with built-in memory: Claude Code has `MEMORY.md`, Cursor has notepads, Cline has memory bank. These work like sticky notes. agentmemory is the searchable database behind the sticky notes.
835
879
 
836
880
  | | Built-in (CLAUDE.md) | agentmemory |
837
881
  |---|---|---|
@@ -871,7 +915,7 @@ SessionStart hook fires
871
915
 
872
916
  ### 4-Tier Memory Consolidation
873
917
 
874
- Inspired by how human brains process memory — not unlike sleep consolidation.
918
+ Modeled on how human brains process memory, including sleep consolidation.
875
919
 
876
920
  | Tier | What | Analogy |
877
921
  |------|------|---------|
@@ -900,9 +944,13 @@ Memories decay over time (Ebbinghaus curve). Frequently accessed memories streng
900
944
 
901
945
  | Capability | Description |
902
946
  |---|---|
903
- | **Automatic capture** | Every tool use recorded via hooks — zero manual effort |
947
+ | **Automatic capture** | Every tool use recorded via hooks, no manual effort |
904
948
  | **Semantic search** | BM25 + vector + knowledge graph with RRF fusion |
905
949
  | **Memory evolution** | Versioning, supersession, relationship graphs |
950
+ | **Recall hygiene** | Superseded memory versions leave the search indexes; the version chain in KV keeps full history |
951
+ | **Near-duplicate hints** | Saves report an advisory `similarTo` match when new content closely resembles an existing memory |
952
+ | **Per-agent scoping** | `agentId` threads through save and recall across REST, MCP, and the search index, in shared or isolated mode |
953
+ | **Write-time provenance** | Every observation and memory carries an immutable origin channel (user, agent, tool, import, or shared) stamped at capture, save, and import |
906
954
  | **Auto-forgetting** | TTL expiry, contradiction detection, importance eviction |
907
955
  | **Privacy first** | API keys, secrets, `<private>` tags stripped before storage |
908
956
  | **Self-healing** | Circuit breaker, provider fallback chain, health monitoring |
@@ -926,6 +974,8 @@ Triple-stream retrieval combining three signals:
926
974
 
927
975
  Fused with Reciprocal Rank Fusion (RRF, k=60) and session-diversified (max 3 results per session).
928
976
 
977
+ Hybrid ranking applies to the primary recall path, not just `smart-search`: `mem::search` (behind `memory_recall`) ranks through the same BM25 + vector + graph fusion once the vector index is populated. Lesson recall runs on a dedicated in-memory BM25 index instead of scanning the whole corpus per query. Superseded memory versions are excluded from every recall path; the version chain keeps their history.
978
+
929
979
  BM25 tokenizes Greek, Cyrillic, Hebrew, Arabic, and accented Latin out of the box. For Chinese / Japanese / Korean memories, install the optional segmenters (`npm install @node-rs/jieba tiny-segmenter`) to split CJK runs into word-level tokens; without them, agentmemory soft-falls to whole-run tokenization and prints a one-time hint on stderr.
930
980
 
931
981
  ### Embedding providers
@@ -933,7 +983,7 @@ BM25 tokenizes Greek, Cyrillic, Hebrew, Arabic, and accented Latin out of the bo
933
983
  agentmemory auto-detects your provider. For best results, install local embeddings (free):
934
984
 
935
985
  ```bash
936
- npm install @xenova/transformers
986
+ npm install @huggingface/transformers
937
987
  ```
938
988
 
939
989
  | Provider | Model | Cost | Notes |
@@ -949,33 +999,38 @@ npm install @xenova/transformers
949
999
 
950
1000
  <h2 id="mcp-server"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-mcp.svg"><img src="assets/tags/section-mcp.svg" alt="MCP Server" height="32" /></picture></h2>
951
1001
 
952
- 53 tools, 6 resources, 3 prompts, and 15 skills, the most comprehensive MCP memory toolkit for any agent.
1002
+ 54 tools, 6 resources, 3 prompts, and 17 skills.
1003
+
1004
+ > **MCP shim vs full server:** the published `@agentmemory/mcp` package is a thin shim. It exposes the full 54-tool surface **only when it can reach a running agentmemory server** via `AGENTMEMORY_URL` (proxy mode). With no server reachable, the shim falls back to a 7-tool local set (`memory_save`, `memory_recall`, `memory_smart_search`, `memory_sessions`, `memory_export`, `memory_audit`, `memory_governance_delete`). The `AGENTMEMORY_TOOLS=core|all` env var is a *server-side* flag; setting it in the shim's `env` block has no effect. If you see only 7 tools in Cursor / OpenCode / Gemini CLI, start `npx @agentmemory/agentmemory` (or the Docker stack) and set `AGENTMEMORY_URL=http://localhost:3111`.
953
1005
 
954
- > **MCP shim vs full server:** the published `@agentmemory/mcp` package is a thin shim. It exposes the full 53-tool surface **only when it can reach a running agentmemory server** via `AGENTMEMORY_URL` (proxy mode). With no server reachable, the shim falls back to a 7-tool local set (`memory_save`, `memory_recall`, `memory_smart_search`, `memory_sessions`, `memory_export`, `memory_audit`, `memory_governance_delete`). The `AGENTMEMORY_TOOLS=core|all` env var is a *server-side* flag — setting it in the shim's `env` block has no effect. If you see only 7 tools in Cursor / OpenCode / Gemini CLI, start `npx @agentmemory/agentmemory` (or the Docker stack) and set `AGENTMEMORY_URL=http://localhost:3111`.
1006
+ ### 54 Tools
955
1007
 
956
- ### 53 Tools
1008
+ Three tool surfaces, smallest to largest: `AGENTMEMORY_TOOLS=core` trims visibility to 8 essentials (`memory_save`, `memory_recall`, `memory_consolidate`, `memory_smart_search`, `memory_sessions`, `memory_diagnose`, `memory_lesson_save`, `memory_reflect`); the base set below is the registry's 14 foundational tools; the default (`AGENTMEMORY_TOOLS=all`) exposes all 54.
957
1009
 
958
1010
  <details>
959
- <summary>Core tools (always available)</summary>
1011
+ <summary>Base tools (14)</summary>
960
1012
 
961
1013
  | Tool | Description |
962
1014
  |------|-------------|
963
1015
  | `memory_recall` | Search past observations |
964
1016
  | `memory_compress_file` | Compress markdown files while preserving structure |
965
1017
  | `memory_save` | Save an insight, decision, or pattern |
966
- | `memory_patterns` | Detect recurring patterns |
967
- | `memory_smart_search` | Hybrid semantic + keyword search |
968
1018
  | `memory_file_history` | Past observations about specific files |
1019
+ | `memory_patterns` | Detect recurring patterns |
969
1020
  | `memory_sessions` | List recent sessions |
1021
+ | `memory_smart_search` | Hybrid semantic + keyword search |
1022
+ | `memory_vision_search` | Search image observations |
970
1023
  | `memory_timeline` | Chronological observations |
971
1024
  | `memory_profile` | Project profile (concepts, files, patterns) |
972
1025
  | `memory_export` | Export all memory data |
973
1026
  | `memory_relations` | Query relationship graph |
1027
+ | `memory_commit_lookup` | Sessions behind a git commit |
1028
+ | `memory_commits` | Commits recorded for a session |
974
1029
 
975
1030
  </details>
976
1031
 
977
1032
  <details>
978
- <summary>Extended tools (53 total — set AGENTMEMORY_TOOLS=all)</summary>
1033
+ <summary>Extended tools (54 total, the default surface)</summary>
979
1034
 
980
1035
  | Tool | Description |
981
1036
  |------|-------------|
@@ -1013,14 +1068,16 @@ npm install @xenova/transformers
1013
1068
 
1014
1069
  </details>
1015
1070
 
1016
- ### 6 Resources · 3 Prompts · 4 Skills
1071
+ ### 6 Resources · 3 Prompts · 17 Skills
1017
1072
 
1018
1073
  | Type | Name | Description |
1019
1074
  |------|------|-------------|
1020
1075
  | Resource | `agentmemory://status` | Health, session count, memory count |
1021
1076
  | Resource | `agentmemory://project/{name}/profile` | Per-project intelligence |
1077
+ | Resource | `agentmemory://project/{name}/recent` | Recent observations for a project |
1022
1078
  | Resource | `agentmemory://memories/latest` | Latest 10 active memories |
1023
1079
  | Resource | `agentmemory://graph/stats` | Knowledge graph statistics |
1080
+ | Resource | `agentmemory://team/{id}/profile` | Shared team profile |
1024
1081
  | Prompt | `recall_context` | Search + return context messages |
1025
1082
  | Prompt | `session_handoff` | Handoff data between agents |
1026
1083
  | Prompt | `detect_patterns` | Analyze recurring patterns |
@@ -1029,9 +1086,11 @@ npm install @xenova/transformers
1029
1086
  | Skill | `/session-history` | Recent session summaries |
1030
1087
  | Skill | `/forget` | Delete observations/sessions |
1031
1088
 
1089
+ The table shows the four core skills. The full set is 9 invocable skills plus 8 reference skills; see the Native skills section above.
1090
+
1032
1091
  ### Standalone MCP
1033
1092
 
1034
- Run without the full server — for any MCP client. Either of these works:
1093
+ Run without the full server, for any MCP client. Either of these works:
1035
1094
 
1036
1095
  ```bash
1037
1096
  npx -y @agentmemory/agentmemory mcp # canonical (always available)
@@ -1040,7 +1099,7 @@ npx -y @agentmemory/mcp # shim package alias
1040
1099
 
1041
1100
  Or add to your agent's MCP config:
1042
1101
 
1043
- Most agents (Cursor, Claude Desktop, Cline, Roo Code, Windsurf, Gemini CLI):
1102
+ Most agents (Cursor, Claude Desktop, Cline, Roo Code, Gemini CLI):
1044
1103
  ```json
1045
1104
  {
1046
1105
  "mcpServers": {
@@ -1082,7 +1141,7 @@ cp plugin/opencode/commands/*.md ~/.config/opencode/commands/
1082
1141
 
1083
1142
  <h2 id="real-time-viewer"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-viewer.svg"><img src="assets/tags/section-viewer.svg" alt="Real-Time Viewer" height="32" /></picture></h2>
1084
1143
 
1085
- Auto-starts on port `3113`. Live observation stream, session explorer, memory browser, knowledge graph visualization, and health dashboard.
1144
+ Auto-starts on port `3113`. Live observation stream with a stream status indicator, a two-pane session explorer (list beside a sticky detail panel on wide screens), memory and lesson rows that expand to the full stored record including raw JSON and origin provenance, a knowledge graph that clusters nodes by type while relations are sparse, session replay, and a health dashboard.
1086
1145
 
1087
1146
  ```bash
1088
1147
  open http://localhost:3113
@@ -1094,19 +1153,19 @@ The viewer server binds to `127.0.0.1` by default. The REST-served `/agentmemory
1094
1153
 
1095
1154
  <h2 id="iii-console"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-viewer.svg"><img src="assets/tags/section-viewer.svg" alt="iii Console" height="32" /></picture></h2>
1096
1155
 
1097
- The viewer at `:3113` shows what your agent **remembered**. The [iii console](https://iii.dev/docs/console) shows what your agent **did** — every memory op as an OpenTelemetry trace, every KV entry editable, every function invocable, every stream tappable. Two windows on the same memory: one product-shaped, one engine-shaped.
1156
+ The viewer at `:3113` shows what your agent **remembered**. The [iii console](https://iii.dev/docs/console) shows what your agent **did**: every memory op as an OpenTelemetry trace, every KV entry editable, every function invocable, every stream tappable. Two windows on the same memory: one product-shaped, one engine-shaped.
1098
1157
 
1099
1158
  Watch a `memory_smart_search` fire and see the BM25 scan → embedding lookup → RRF fusion → reranker as a waterfall. Edit a stuck consolidation timer in the KV browser. Replay a `PostToolUse` hook with a tweaked payload. Pin the WebSocket stream and watch observations land live.
1100
1159
 
1101
- agentmemory ships this for free because every function call and trigger fires through iii — nothing custom, nothing to instrument.
1160
+ agentmemory ships this for free because every function call and trigger fires through iii; nothing custom, nothing to instrument.
1102
1161
 
1103
1162
  <p align="center">
1104
- <img src="assets/iii-console/workers.png" alt="iii console Workers page — connected workers including agentmemory instances with live function counts and runtime metadata" width="720" />
1163
+ <img src="assets/iii-console/workers.png" alt="iii console Workers page: connected workers including agentmemory instances with live function counts and runtime metadata" width="720" />
1105
1164
  <br/>
1106
- <em>Workers page: every connected worker — including agentmemory itself — with PID, function count, runtime, and last-seen.</em>
1165
+ <em>Workers page: every connected worker, including agentmemory itself, with PID, function count, runtime, and last-seen.</em>
1107
1166
  </p>
1108
1167
 
1109
- **Already installed.** The console ships with `iii` — no separate installer.
1168
+ **Already installed.** The console ships with `iii`; no separate installer.
1110
1169
 
1111
1170
  **Launch alongside agentmemory:**
1112
1171
 
@@ -1131,15 +1190,15 @@ iii console --port 3114 \
1131
1190
 
1132
1191
  | Page | Use it to |
1133
1192
  |------|-----------|
1134
- | **Workers** | See every connected worker and its live metrics — including the agentmemory worker itself. |
1135
- | **Functions** | Invoke any of agentmemory's functions directly with a JSON payload — handy for testing `memory.recall`, `memory.consolidate`, `graph.query` without wiring a client. |
1136
- | **Triggers** | Replay HTTP, cron, event, and state triggers — fire the consolidation cron manually, retry an HTTP route, emit a state change. |
1137
- | **States** | KV browser with full CRUD — sessions, memory slots, lifecycle timers, embeddings index — edit values in place. |
1193
+ | **Workers** | See every connected worker and its live metrics, including the agentmemory worker itself. |
1194
+ | **Functions** | Invoke any of agentmemory's functions directly with a JSON payload; handy for testing `memory.recall`, `memory.consolidate`, `graph.query` without wiring a client. |
1195
+ | **Triggers** | Replay HTTP, cron, event, and state triggers: fire the consolidation cron manually, retry an HTTP route, emit a state change. |
1196
+ | **States** | KV browser with full CRUD over sessions, memory slots, lifecycle timers, and the embeddings index; edit values in place. |
1138
1197
  | **Streams** | Live WebSocket monitor for memory writes, hook events, and observation updates as they flow through iii streams. |
1139
1198
  | **Queues** | Durable queue topics + dead-letter management. Replay or drop failed embedding / compression jobs. |
1140
1199
  | **Traces** | OpenTelemetry waterfall / flame / service-breakdown views. Filter by `trace_id` to see exactly which functions, DB calls, and embedding requests a single `memory.search` produced. |
1141
1200
  | **Logs** | Structured OTEL logs filtered and correlated to trace/span IDs. |
1142
- | **Config** | Runtime configuration — see exactly which workers, providers, and ports your engine is running with. |
1201
+ | **Config** | Runtime configuration: see exactly which workers, providers, and ports your engine is running with. |
1143
1202
  | **Flow** | (Optional, `--enable-flow`) Interactive architecture graph of every worker, trigger, and stream. |
1144
1203
 
1145
1204
  <p align="center">
@@ -1150,17 +1209,17 @@ iii console --port 3114 \
1150
1209
 
1151
1210
  **Traces are already on:**
1152
1211
 
1153
- `iii-config.yaml` ships with the `iii-observability` worker enabled (`exporter: memory`, `sampling_ratio: 1.0`, metrics + logs). No extra config needed — the moment agentmemory starts, every memory operation emits a trace span and a structured log the console can read.
1212
+ `iii-config.yaml` ships with the `iii-observability` worker enabled (`exporter: memory`, `sampling_ratio: 1.0`, metrics + logs). No extra config needed; the moment agentmemory starts, every memory operation emits a trace span and a structured log the console can read.
1154
1213
 
1155
1214
  If you want to export to Jaeger/Honeycomb/Grafana Tempo instead, change `exporter: memory` to `exporter: otlp` and set the collector endpoint per iii's observability docs.
1156
1215
 
1157
- > **Heads-up:** no auth is enforced on the console itself — keep it bound to `127.0.0.1` (the default) and never expose it publicly.
1216
+ > **Heads-up:** no auth is enforced on the console itself; keep it bound to `127.0.0.1` (the default) and never expose it publicly.
1158
1217
 
1159
1218
  ---
1160
1219
 
1161
1220
  <h2 id="powered-by-iii"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-architecture.svg"><img src="assets/tags/section-architecture.svg" alt="Powered by iii" height="32" /></picture></h2>
1162
1221
 
1163
- agentmemory is **already a running [iii](https://iii.dev) instance**. Three primitives — worker, function, trigger — compose the runtime; KV state, streams, and OTEL traces come from iii-state, iii-stream, and iii-observability workers that ship with iii. You didn't install Postgres, Redis, Express, pm2, or Prometheus, because iii replaces them.
1222
+ agentmemory is **already a running [iii](https://iii.dev) instance**. Three primitives (worker, function, trigger) compose the runtime; KV state, streams, and OTEL traces come from iii-state, iii-stream, and iii-observability workers that ship with iii. You didn't install Postgres, Redis, Express, pm2, or Prometheus, because iii replaces them.
1164
1223
 
1165
1224
  That means one more command extends agentmemory with an entire new capability.
1166
1225
 
@@ -1176,19 +1235,19 @@ iii worker add iii-database # swap in a SQL-backed state adapter
1176
1235
  iii worker add mcp # generic MCP host alongside the agentmemory MCP
1177
1236
  ```
1178
1237
 
1179
- Each `iii worker add` registers new functions and triggers into the same engine agentmemory is already running on. The viewer and console pick them up immediately — no reload, no new integration, no new container.
1238
+ Each `iii worker add` registers new functions and triggers into the same engine agentmemory is already running on. The viewer and console pick them up immediately: no reload, no new integration, no new container.
1180
1239
 
1181
1240
  | `iii worker add` | What you get on top of agentmemory |
1182
1241
  |---|---|
1183
1242
  | [`iii-pubsub`](https://workers.iii.dev/workers/iii-pubsub) | Multi-instance memory: every `remember` fans out, every `search` reads the union |
1184
- | [`iii-cron`](https://workers.iii.dev/workers/iii-cron) | Scheduled lifecycle — nightly consolidation, weekly snapshots, decay on a fixed clock |
1243
+ | [`iii-cron`](https://workers.iii.dev/workers/iii-cron) | Scheduled lifecycle: nightly consolidation, weekly snapshots, decay on a fixed clock |
1185
1244
  | [`iii-queue`](https://workers.iii.dev/workers/iii-queue) | Durable retries: failed embedding + compression jobs survive restart, no lost observations |
1186
- | [`iii-observability`](https://workers.iii.dev/workers/iii-observability) | OTEL traces, metrics, logs on every function — wired in `iii-config.yaml` from day one |
1245
+ | [`iii-observability`](https://workers.iii.dev/workers/iii-observability) | OTEL traces, metrics, logs on every function, wired in `iii-config.yaml` from day one |
1187
1246
  | [`iii-sandbox`](https://workers.iii.dev/workers/iii-sandbox) | Code that came out of `memory_recall` runs inside a throwaway VM, not your shell |
1188
1247
  | [`iii-database`](https://workers.iii.dev/workers/iii-database) | SQL-backed state adapter when you outgrow the in-memory KV defaults |
1189
1248
  | [`mcp`](https://workers.iii.dev/workers/mcp) | Stand up extra MCP servers next to agentmemory's, share the same engine |
1190
1249
 
1191
- Full registry: [workers.iii.dev](https://workers.iii.dev). Every worker there composes through the same primitives agentmemory uses — and the agentmemory you already have is one of them.
1250
+ Full registry: [workers.iii.dev](https://workers.iii.dev). Every worker there composes through the same primitives agentmemory uses, and the agentmemory you already have is one of them.
1192
1251
 
1193
1252
  ### What iii replaces
1194
1253
 
@@ -1201,7 +1260,7 @@ Full registry: [workers.iii.dev](https://workers.iii.dev). Every worker there co
1201
1260
  | Prometheus / Grafana | iii OTEL + health monitor |
1202
1261
  | Custom plugin systems | `iii worker add <name>` |
1203
1262
 
1204
- **175 source files · ~39,200 LOC · 1,428+ tests · 261 functions · 52 KV scopes** — all on three primitives. No `agentmemory plugin install`. The plugin system is iii itself.
1263
+ **184 source files · ~42,200 LOC · 1,674 tests · 264 functions · 50 KV scopes**, all on three primitives. No `agentmemory plugin install`. The plugin system is iii itself.
1205
1264
 
1206
1265
  ---
1207
1266
 
@@ -1218,18 +1277,18 @@ agentmemory auto-detects from your environment. By default, no LLM calls are mad
1218
1277
  | MiniMax | `MINIMAX_API_KEY` | Anthropic-compatible |
1219
1278
  | Gemini | `GEMINI_API_KEY` | Also enables embeddings |
1220
1279
  | OpenRouter | `OPENROUTER_API_KEY` | Any model |
1221
- | OpenAI API | `OPENAI_API_KEY` | Default `gpt-4o-mini`, override with `OPENAI_MODEL` |
1222
- | **Local (Ollama / LM Studio / vLLM / llama.cpp)** | `OPENAI_API_KEY=local` + `OPENAI_BASE_URL=http://localhost:11434/v1` (Ollama) or `http://localhost:1234/v1` (LM Studio) + `OPENAI_MODEL=<your model>` | Anything OpenAI-API-compatible. Zero cost, runs on your hardware. See [Local models](#local-models-ollama-lm-studio-vllm) below. |
1223
- | Claude subscription fallback | `AGENTMEMORY_ALLOW_AGENT_SDK=true` | Opt-in only. Spawns `@anthropic-ai/claude-agent-sdk` sessions — used to cause unbounded Stop-hook recursion so it is no longer the default. |
1280
+ | OpenAI API | `OPENAI_API_KEY` | Default `gpt-5.6-luna`, override with `OPENAI_MODEL` |
1281
+ | **Local (Ollama / LM Studio / vLLM / llama.cpp)** | `OPENAI_API_KEY=local` + `OPENAI_BASE_URL=http://localhost:11434/v1` (Ollama) or `http://localhost:1234/v1` (LM Studio) + `OPENAI_MODEL=<your model>` | Anything OpenAI-API-compatible. Zero cost, runs on your hardware. See [Local models](#local-models-ollama--lm-studio--vllm) below. |
1282
+ | Claude subscription fallback | `AGENTMEMORY_ALLOW_AGENT_SDK=true` | Opt-in only. Spawns `@anthropic-ai/claude-agent-sdk` sessions; it used to cause unbounded Stop-hook recursion, so it is no longer the default. |
1224
1283
 
1225
1284
  ### Local models (Ollama / LM Studio / vLLM)
1226
1285
 
1227
- agentmemory talks to any OpenAI-API-compatible server, so anything that exposes `/v1/chat/completions` works without code changes. No paid keys, no cloud, no rate limits — runs entirely on your hardware.
1286
+ agentmemory talks to any OpenAI-API-compatible server, so anything that exposes `/v1/chat/completions` works without code changes. No paid keys, no cloud, no rate limits; runs entirely on your hardware.
1228
1287
 
1229
1288
  **Ollama** (default port `11434`):
1230
1289
 
1231
1290
  ```bash
1232
- ollama pull qwen2.5-coder:7b # or llama3.2:3b, mistral:7b, etc.
1291
+ ollama pull qwen3:8b # or qwen3:4b, gpt-oss:20b, qwen3-coder:30b, etc.
1233
1292
  ollama serve
1234
1293
  ```
1235
1294
 
@@ -1237,34 +1296,37 @@ ollama serve
1237
1296
  # ~/.agentmemory/.env
1238
1297
  OPENAI_API_KEY=ollama # any non-empty string; Ollama ignores it
1239
1298
  OPENAI_BASE_URL=http://localhost:11434/v1
1240
- OPENAI_MODEL=qwen2.5-coder:7b
1299
+ OPENAI_MODEL=qwen3:8b
1241
1300
  ```
1242
1301
 
1243
1302
  **LM Studio** (default port `1234`):
1244
1303
 
1245
- Open LM Studio → Local Server tab → Start Server. Pick any chat model from the picker (Qwen 2.5 Coder, Llama 3.2, DeepSeek, etc.).
1304
+ Open LM Studio → Local Server tab → Start Server. Pick any chat model from the picker (Qwen 3, gpt-oss, DeepSeek R1, etc.).
1246
1305
 
1247
1306
  ```env
1248
1307
  # ~/.agentmemory/.env
1249
1308
  OPENAI_API_KEY=lmstudio # any non-empty string; LM Studio ignores it
1250
1309
  OPENAI_BASE_URL=http://localhost:1234/v1
1251
- OPENAI_MODEL=qwen2.5-coder-7b-instruct # match the model name from LM Studio
1310
+ OPENAI_MODEL=qwen3-8b # match the model name from LM Studio
1252
1311
  ```
1253
1312
 
1254
- **vLLM / llama.cpp / Text Generation Inference**: same shape — point `OPENAI_BASE_URL` at whatever URL your server exposes, set `OPENAI_MODEL` to a name your server will accept.
1313
+ **vLLM / llama.cpp / Text Generation Inference**: same shape. Point `OPENAI_BASE_URL` at whatever URL your server exposes and set `OPENAI_MODEL` to a name your server will accept.
1255
1314
 
1256
1315
  **Model picks for memory work**: compression and summarization are short tasks (<2K tokens in, <500 tokens out) where a 7B instruct model is plenty. Recommendations:
1257
1316
 
1258
1317
  | Model | Size | Why |
1259
1318
  |-------|------|-----|
1260
- | `qwen2.5-coder:7b` | ~4.7 GB | Best at code-shaped sessions; trained on programming + tool-use traces |
1261
- | `llama3.2:3b` | ~2 GB | Smallest sane option — fine for compression, weaker for graph extraction |
1262
- | `mistral:7b-instruct` | ~4.4 GB | Good general-purpose baseline if you don't want code-specific |
1263
- | `deepseek-r1:7b` | ~4.7 GB | Reasoning-tier quality at 7B; slower but cleaner extractions |
1319
+ | `qwen3:8b` | ~5.2 GB | Balanced default on a 16 GB machine; strong at extraction and tool-shaped text |
1320
+ | `qwen3:4b` | ~2.6 GB | Smallest sane option; fine for compression, weaker for graph extraction |
1321
+ | `qwen3-coder:30b` | ~19 GB | Best local pick for code-shaped sessions (30B MoE, 3.3B active) on 24-32 GB hardware |
1322
+ | `gpt-oss:20b` | ~14 GB | Strong general model that fits 16 GB RAM |
1323
+ | `deepseek-r1:8b` | ~5.2 GB | Reasoning distill; slower but cleaner extractions |
1324
+
1325
+ Qwen 3 models think by default and can burn the whole token budget on reasoning before any output. Set `AGENTMEMORY_LLM_NOTHINK=1` to append `/no_think` to graph-extraction prompts, and raise `MAX_TOKENS` (16384 works) if extractions come back empty.
1264
1326
 
1265
1327
  Reasoning-class models (`o1`-style with `<think>` blocks) can return empty `content` with a `reasoning` field your local server may not surface. If extractions come back blank, switch to a non-reasoning model first. The `OPENAI_REASONING_EFFORT=none` env can also disable thinking on Ollama Cloud thinking models that mirror the OpenAI reasoning schema.
1266
1328
 
1267
- Local embeddings ship out of the box via `@xenova/transformers` — `EMBEDDING_PROVIDER=local` (default) gives you BGE-small entirely on-device. No extra config needed.
1329
+ Local embeddings ship out of the box via `@huggingface/transformers`: `EMBEDDING_PROVIDER=local` (default) gives you `Xenova/all-MiniLM-L6-v2` (384-dim) entirely on-device. No extra config needed.
1268
1330
 
1269
1331
  ### Cost-aware model selection
1270
1332
 
@@ -1272,18 +1334,20 @@ Background compression runs on every observation, so model choice meaningfully c
1272
1334
 
1273
1335
  | Tier | Model | Input / 1M | Output / 1M | Cost for the captured 35h | Notes |
1274
1336
  |------|-------|------------|-------------|---------------------------|-------|
1337
+ | Recommended | `deepseek/deepseek-v4-flash-0731` | $0.07 | $0.14 | ~$0.07 (est.) | Latest DeepSeek; cheapest recommended pick for compression workloads. |
1275
1338
  | Recommended | `deepseek/deepseek-v4-pro` | $0.435 | $0.87 | ~$0.46 | Solid compression + summarization quality at ~10× lower cost than Sonnet. |
1276
- | Recommended | `deepseek/deepseek-chat` | $0.27 | $1.10 | ~$0.40 | Older but still fine for compression-only workloads. |
1277
1339
  | Recommended | `qwen/qwen3-coder` | $0.45 | $1.80 | ~$0.55 | Strong code reasoning if your sessions are heavily code-shaped. |
1278
- | Premium | `anthropic/claude-sonnet-4.6` | $3.00 | $15.00 | ~$5.02 | High quality but expensive for always-on background work. |
1279
- | Premium | `openai/gpt-4o` | $2.50 | $10.00 | ~$4.20 | Similar tier to Sonnet. |
1280
- | Avoid | `anthropic/claude-opus-4.6` | $15.00 | $75.00 | ~$25+ | Reasoning-class model; massive overspend for compression. |
1340
+ | Premium | `anthropic/claude-sonnet-5` | $3.00 | $15.00 | ~$5.02 (est.) | Same list price as the measured Sonnet 4.6 run; $2/$10 intro pricing through 2026-08-31. |
1341
+ | Premium | `openai/gpt-5.6-sol` | $5.00 | $30.00 | ~$9 (est.) | Flagship tier; expensive for always-on background work. |
1342
+ | Avoid | `anthropic/claude-opus-5` | $5.00 | $25.00 | ~$8.40 (est.) | Flagship-class model; overspend for compression. |
1343
+
1344
+ Measured rows come from the captured run; (est.) rows scale the same token mix by each model's list price.
1281
1345
 
1282
1346
  agentmemory prints a runtime warning when `OPENROUTER_MODEL` matches a premium-tier pattern. Set `AGENTMEMORY_SUPPRESS_COST_WARNING=1` to silence once you've made an informed choice.
1283
1347
 
1284
- Quality vs cost tradeoff for memory work: compression is a summarization task with relatively loose quality bars (the agent re-reads the summary, not the user). DeepSeek-V4-Pro / Qwen3-Coder land within rounding error of Sonnet on this task while costing ~10× less. Save the premium-tier models for queries you read directly.
1348
+ Quality vs cost tradeoff for memory work: compression is a summarization task with relatively loose quality bars (the agent re-reads the summary, not the user). DeepSeek V4 Flash / V4 Pro / Qwen3-Coder land within rounding error of Sonnet on this task while costing 10-70× less. Save the premium-tier models for queries you read directly.
1285
1349
 
1286
- Sources: [OpenRouter pricing for Sonnet 4.6](https://openrouter.ai/anthropic/claude-sonnet-4.6/pricing), [DeepSeek V4 Pro](https://openrouter.ai/deepseek/deepseek-v4-pro), [DeepSeek pricing notes](https://api-docs.deepseek.com/quick_start/pricing/).
1350
+ Sources: [OpenRouter pricing for Claude Sonnet 5](https://openrouter.ai/anthropic/claude-sonnet-5), [DeepSeek V4 Flash](https://openrouter.ai/deepseek/deepseek-v4-flash-0731), [DeepSeek pricing notes](https://api-docs.deepseek.com/quick_start/pricing/).
1287
1351
 
1288
1352
  ### Multi-agent memory (`AGENT_ID` + `AGENTMEMORY_AGENT_SCOPE`)
1289
1353
 
@@ -1307,7 +1371,7 @@ What gets tagged when `AGENT_ID` is set: `Session.agentId`, `RawObservation.agen
1307
1371
 
1308
1372
  What gets filtered in isolated mode: `mem::smart-search`, `/agentmemory/memories`, `/agentmemory/observations`, `/agentmemory/sessions`. Each endpoint accepts `?agentId=<role>` to override per-request, and `?agentId=*` to opt out of the env scope entirely. `/memories` also accepts `?includeOrphans=true` to surface pre-AGENT_ID memories whose `agentId` is undefined.
1309
1373
 
1310
- Per-call override at the SDK / REST layer: every mutating endpoint (`/session/start`, `/remember`) accepts an `agentId` field in the request body that wins over the env. Useful for runtimes routing many roles through one server process.
1374
+ Per-call override at the SDK / REST layer: every mutating endpoint (`/session/start`, `/remember`) accepts an `agentId` field in the request body that wins over the env. Useful for runtimes routing many roles through one server process. The MCP `memory_save` tool exposes the same `agentId` field, the standalone stdio server forwards both `agentId` and `project`, and saved memories carry `agentId` into the search index, so agent-scoped search covers memories as well as observations.
1311
1375
 
1312
1376
  When `AGENT_ID` is unset, memory remains unscoped (legacy behavior, no tags, no filters).
1313
1377
 
@@ -1320,7 +1384,7 @@ agentmemory + iii-engine bind four ports by default. If a restart fails with `po
1320
1384
  | `3111` | agentmemory | REST API + MCP HTTP + `/agentmemory/health` + `/agentmemory/livez` | `III_REST_PORT` |
1321
1385
  | `3112` | iii-engine | Internal streams worker (consumed by agentmemory + viewer) | `III_STREAMS_PORT` |
1322
1386
  | `3113` | agentmemory | Real-time viewer (`http://localhost:3113`) | `AGENTMEMORY_VIEWER_PORT` |
1323
- | `49134` | iii-engine | WebSocket — workers register here, OTel telemetry flows over it | `III_ENGINE_URL` (full URL, default `ws://localhost:49134`) |
1387
+ | `49134` | iii-engine | WebSocket; workers register here, OTel telemetry flows over it | `III_ENGINE_URL` (full URL, default `ws://localhost:49134`) |
1324
1388
 
1325
1389
  Stale-process cleanup when ports stay bound after a crashed run:
1326
1390
 
@@ -1335,7 +1399,7 @@ netstat -ano | findstr ":3111 :3112 :3113 :49134"
1335
1399
  taskkill /F /PID <pid>
1336
1400
  ```
1337
1401
 
1338
- `agentmemory stop` reaps both the worker and the engine pidfile cleanly on graceful shutdown. The manual cleanup above is only for the post-crash case where neither pidfile is left behind.
1402
+ `agentmemory stop` reaps both the worker and the engine pidfile cleanly on graceful shutdown. In Docker mode it tears down only agentmemory's own compose services and reaps the native worker before the Docker teardown; the CLI also refuses to adopt or signal Docker or VM port holders (Docker backend, vpnkit, colima) as the native engine unless `--force` is passed. The manual cleanup above is only for the post-crash case where neither pidfile is left behind.
1339
1403
 
1340
1404
  ### Config File
1341
1405
 
@@ -1385,7 +1449,7 @@ Create `~/.agentmemory/.env`:
1385
1449
  # # Auto-detected from `.openai.azure.com` hostname; uses
1386
1450
  # # api-key header + api-version query param.
1387
1451
  # OPENAI_API_VERSION=2024-08-01-preview # Optional: Azure api-version query param
1388
- # OPENAI_MODEL=gpt-4o-mini # Optional: default model
1452
+ # OPENAI_MODEL=gpt-5.6-luna # Optional: default model
1389
1453
  # OPENAI_TIMEOUT_MS=60000 # Optional: OpenAI-scoped alias for the outbound fetch
1390
1454
  # # timeout. Takes precedence over AGENTMEMORY_LLM_TIMEOUT_MS
1391
1455
  # # for back-compat with v0.9.17. New configs should
@@ -1471,6 +1535,10 @@ Create `~/.agentmemory/.env`:
1471
1535
  # Observations are still captured via
1472
1536
  # PostToolUse regardless of this flag.
1473
1537
  # GRAPH_EXTRACTION_ENABLED=false
1538
+ # AGENTMEMORY_LLM_NOTHINK=1 # Local reasoning models only: ask the
1539
+ # model to skip its hidden thinking pass
1540
+ # during graph extraction. Faster runs;
1541
+ # relation quality can drop slightly.
1474
1542
  # CONSOLIDATION_ENABLED=false # on by default when an LLM provider is configured
1475
1543
  # LESSON_DECAY_ENABLED=true
1476
1544
  # OBSIDIAN_AUTO_EXPORT=false
@@ -1483,7 +1551,7 @@ Create `~/.agentmemory/.env`:
1483
1551
  # USER_ID=
1484
1552
  # TEAM_MODE=private
1485
1553
 
1486
- # Tool visibility: "core" (8 tools, lean fallback) or "all" (53 tools)
1554
+ # Tool visibility: "all" (54 tools, default) or "core" (8 tools, lean)
1487
1555
  # AGENTMEMORY_TOOLS=core
1488
1556
  ```
1489
1557
 
@@ -1491,7 +1559,7 @@ Create `~/.agentmemory/.env`:
1491
1559
 
1492
1560
  <h2 id="api"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-api.svg"><img src="assets/tags/section-api.svg" alt="API" height="32" /></picture></h2>
1493
1561
 
1494
- 128 endpoints on port `3111`. The REST API binds to `127.0.0.1` by default. Protected endpoints require `Authorization: Bearer <secret>` when `AGENTMEMORY_SECRET` is set, and mesh sync endpoints require `AGENTMEMORY_SECRET` on both peers.
1562
+ 130 endpoints on port `3111`. The REST API binds to `127.0.0.1` by default. Protected endpoints require `Authorization: Bearer <secret>` when `AGENTMEMORY_SECRET` is set, and mesh sync endpoints require `AGENTMEMORY_SECRET` on both peers.
1495
1563
 
1496
1564
  <details>
1497
1565
  <summary>Key endpoints</summary>
@@ -1525,7 +1593,7 @@ Full endpoint list: [`src/triggers/api.ts`](src/triggers/api.ts)
1525
1593
  ```bash
1526
1594
  npm run dev # Hot reload
1527
1595
  npm run build # Production build
1528
- npm test # 1,428+ tests
1596
+ npm test # 1,674 tests
1529
1597
  npm run test:integration # API tests (requires running services)
1530
1598
  ```
1531
1599