@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.
- package/.env.example +15 -6
- package/AGENTS.md +6 -6
- package/README.md +220 -152
- package/dist/.env.example +15 -6
- package/dist/cli.d.mts.map +1 -1
- package/dist/cli.mjs +233 -35
- package/dist/cli.mjs.map +1 -1
- package/dist/{connect-JnsJXc68.mjs → connect-Qaeq15TQ.mjs} +599 -41
- package/dist/connect-Qaeq15TQ.mjs.map +1 -0
- package/dist/docker-compose.yml +2 -2
- package/dist/hooks/antigravity-bridge.d.mts +8 -0
- package/dist/hooks/antigravity-bridge.d.mts.map +1 -0
- package/dist/hooks/antigravity-bridge.mjs +114 -0
- package/dist/hooks/antigravity-bridge.mjs.map +1 -0
- package/dist/hooks/notification.mjs +19 -4
- package/dist/hooks/notification.mjs.map +1 -1
- package/dist/hooks/post-commit.mjs +13 -1
- package/dist/hooks/post-commit.mjs.map +1 -1
- package/dist/hooks/post-tool-failure.mjs +14 -3
- package/dist/hooks/post-tool-failure.mjs.map +1 -1
- package/dist/hooks/post-tool-use.mjs +14 -3
- package/dist/hooks/post-tool-use.mjs.map +1 -1
- package/dist/hooks/pre-compact.mjs +12 -2
- package/dist/hooks/pre-compact.mjs.map +1 -1
- package/dist/hooks/pre-tool-use.mjs +1 -1
- package/dist/hooks/pre-tool-use.mjs.map +1 -1
- package/dist/hooks/prompt-submit.mjs +14 -3
- package/dist/hooks/prompt-submit.mjs.map +1 -1
- package/dist/hooks/session-end.mjs +82 -18
- package/dist/hooks/session-end.mjs.map +1 -1
- package/dist/hooks/session-start.mjs +22 -4
- package/dist/hooks/session-start.mjs.map +1 -1
- package/dist/hooks/stop.mjs +1 -7
- package/dist/hooks/stop.mjs.map +1 -1
- package/dist/hooks/subagent-start.mjs +14 -3
- package/dist/hooks/subagent-start.mjs.map +1 -1
- package/dist/hooks/subagent-stop.mjs +14 -3
- package/dist/hooks/subagent-stop.mjs.map +1 -1
- package/dist/hooks/task-completed.mjs +14 -3
- package/dist/hooks/task-completed.mjs.map +1 -1
- package/dist/{image-refs-C2YU7BIm.mjs → image-refs-CJgZmb9X.mjs} +2 -2
- package/dist/{image-refs-C2YU7BIm.mjs.map → image-refs-CJgZmb9X.mjs.map} +1 -1
- package/dist/index.mjs +1557 -755
- package/dist/index.mjs.map +1 -1
- package/dist/schema-BFZhNTF7.mjs +197 -0
- package/dist/schema-BFZhNTF7.mjs.map +1 -0
- package/dist/{src-CzgoepGU.mjs → src-G7yt8gGm.mjs} +1531 -883
- package/dist/src-G7yt8gGm.mjs.map +1 -0
- package/dist/{standalone-YsZFFQBM.mjs → standalone-BqNJDJ04.mjs} +26 -15
- package/dist/standalone-BqNJDJ04.mjs.map +1 -0
- package/dist/standalone.d.mts.map +1 -1
- package/dist/standalone.mjs +50 -14
- package/dist/standalone.mjs.map +1 -1
- package/dist/{tools-registry-D3NEoe5m.mjs → tools-registry-BV_2bu7z.mjs} +293 -3
- package/dist/tools-registry-BV_2bu7z.mjs.map +1 -0
- package/dist/viewer/favicon.svg +35 -1
- package/dist/viewer/index.html +473 -83
- package/docker-compose.yml +2 -2
- package/integrations/pi/README.md +77 -0
- package/integrations/pi/index.ts +403 -0
- package/integrations/pi/package.json +32 -0
- package/integrations/pi/security.ts +35 -0
- package/package.json +3 -4
- package/plugin/.claude-plugin/plugin.json +2 -2
- package/plugin/.codex-plugin/plugin.json +2 -2
- package/plugin/.devin-plugin/plugin.json +32 -0
- package/plugin/cursor/hooks.json +41 -0
- package/plugin/cursor/mcp.json +12 -0
- package/plugin/hooks/hooks.antigravity.json +43 -0
- package/plugin/hooks/hooks.devin.json +67 -0
- package/plugin/hooks/hooks.droid.json +55 -0
- package/plugin/opencode/README.md +1 -1
- package/plugin/opencode/agentmemory-capture.ts +73 -13
- package/plugin/opencode/plugin.json +1 -1
- package/plugin/plugin.json +2 -2
- package/plugin/scripts/antigravity-bridge.d.mts +8 -0
- package/plugin/scripts/antigravity-bridge.d.mts.map +1 -0
- package/plugin/scripts/antigravity-bridge.mjs +114 -0
- package/plugin/scripts/antigravity-bridge.mjs.map +1 -0
- package/plugin/scripts/notification.mjs +19 -4
- package/plugin/scripts/notification.mjs.map +1 -1
- package/plugin/scripts/post-commit.mjs +13 -1
- package/plugin/scripts/post-commit.mjs.map +1 -1
- package/plugin/scripts/post-tool-failure.mjs +14 -3
- package/plugin/scripts/post-tool-failure.mjs.map +1 -1
- package/plugin/scripts/post-tool-use.mjs +14 -3
- package/plugin/scripts/post-tool-use.mjs.map +1 -1
- package/plugin/scripts/pre-compact.mjs +12 -2
- package/plugin/scripts/pre-compact.mjs.map +1 -1
- package/plugin/scripts/pre-tool-use.mjs +1 -1
- package/plugin/scripts/pre-tool-use.mjs.map +1 -1
- package/plugin/scripts/prompt-submit.mjs +14 -3
- package/plugin/scripts/prompt-submit.mjs.map +1 -1
- package/plugin/scripts/session-end.mjs +82 -18
- package/plugin/scripts/session-end.mjs.map +1 -1
- package/plugin/scripts/session-start.mjs +22 -4
- package/plugin/scripts/session-start.mjs.map +1 -1
- package/plugin/scripts/stop.mjs +1 -7
- package/plugin/scripts/stop.mjs.map +1 -1
- package/plugin/scripts/subagent-start.mjs +14 -3
- package/plugin/scripts/subagent-start.mjs.map +1 -1
- package/plugin/scripts/subagent-stop.mjs +14 -3
- package/plugin/scripts/subagent-stop.mjs.map +1 -1
- package/plugin/scripts/task-completed.mjs +14 -3
- package/plugin/scripts/task-completed.mjs.map +1 -1
- package/plugin/skills/agentmemory-agents/REFERENCE.md +6 -3
- package/plugin/skills/agentmemory-config/REFERENCE.md +4 -1
- package/plugin/skills/agentmemory-mcp-tools/REFERENCE.md +3 -2
- package/plugin/skills/agentmemory-rest-api/REFERENCE.md +14 -1
- package/plugin/skills/forget/SKILL.md +4 -1
- package/plugin/skills/lesson/SKILL.md +64 -0
- package/plugin/skills/memory-discipline/SKILL.md +57 -0
- package/plugin/skills/recall/SKILL.md +4 -1
- package/plugin/skills/remember/SKILL.md +6 -1
- package/dist/config-ChC9EtgV.mjs +0 -259
- package/dist/config-ChC9EtgV.mjs.map +0 -1
- package/dist/connect-JnsJXc68.mjs.map +0 -1
- package/dist/schema-CNiCWzV9.mjs +0 -78
- package/dist/schema-CNiCWzV9.mjs.map +0 -1
- package/dist/src-CzgoepGU.mjs.map +0 -1
- package/dist/standalone-YsZFFQBM.mjs.map +0 -1
- package/dist/tools-registry-D3NEoe5m.mjs.map +0 -1
- package/plugin/scripts/diagnostics.d.mts +0 -17
- package/plugin/scripts/diagnostics.d.mts.map +0 -1
- 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
|
|
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.
|
|
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="
|
|
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,
|
|
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> •
|
|
67
67
|
<a href="#mcp-server">MCP</a> •
|
|
68
68
|
<a href="#real-time-viewer">Viewer</a> •
|
|
69
|
-
<a href="#iii-console">iii Console</a> •
|
|
70
69
|
<a href="#powered-by-iii">Powered by iii</a> •
|
|
71
70
|
<a href="#configuration">Config</a> •
|
|
72
71
|
<a href="#api">API</a>
|
|
@@ -76,34 +75,58 @@
|
|
|
76
75
|
|
|
77
76
|
## Install
|
|
78
77
|
|
|
79
|
-
|
|
78
|
+
One command:
|
|
80
79
|
|
|
81
|
-
|
|
80
|
+
```bash
|
|
81
|
+
npx @agentmemory/agentmemory
|
|
82
|
+
```
|
|
82
83
|
|
|
83
|
-
|
|
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
|
-
|
|
87
|
-
#
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
115
|
+
</details>
|
|
103
116
|
|
|
104
|
-
|
|
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
|
-
|
|
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
|
|
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://
|
|
195
|
-
<strong>
|
|
196
|
-
<sub>MCP
|
|
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
|
|
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
|
|
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)
|
|
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 (
|
|
286
|
-
<th>Letta / MemGPT (
|
|
287
|
-
<th>Khoj (
|
|
288
|
-
<th>supermemory (
|
|
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"
|
|
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
|
-
###
|
|
501
|
+
### Everyday commands
|
|
451
502
|
|
|
452
|
-
|
|
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
|
-
|
|
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
|
|
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.
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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
|
|
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
|
-
| **
|
|
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
|
|
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) +
|
|
662
|
-
| **OpenCode (MCP only)** | `opencode.json` | Different shape
|
|
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` |
|
|
665
|
-
| **Hermes Agent** | `~/.hermes/config.yaml` |
|
|
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
|
|
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
|
|
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
|
|
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`.
|
|
674
|
-
| **
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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)
|
|
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)
|
|
844
|
+
- [`deploy/railway`](./deploy/railway/README.md): Hobby plan flat fee,
|
|
801
845
|
volume in the dashboard.
|
|
802
|
-
- [`deploy/render`](./deploy/render/README.md)
|
|
846
|
+
- [`deploy/render`](./deploy/render/README.md): Blueprint flow,
|
|
803
847
|
automatic disk snapshots on paid plans.
|
|
804
|
-
- [`deploy/coolify`](./deploy/coolify/README.md)
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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 @
|
|
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
|
-
|
|
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
|
-
|
|
1006
|
+
### 54 Tools
|
|
955
1007
|
|
|
956
|
-
|
|
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>
|
|
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 (
|
|
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 ·
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
1135
|
-
| **Functions** | Invoke any of agentmemory's functions directly with a JSON payload
|
|
1136
|
-
| **Triggers** | Replay HTTP, cron, event, and state triggers
|
|
1137
|
-
| **States** | KV browser with full CRUD
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
**
|
|
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-
|
|
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
|
|
1223
|
-
| Claude subscription fallback | `AGENTMEMORY_ALLOW_AGENT_SDK=true` | Opt-in only. Spawns `@anthropic-ai/claude-agent-sdk` sessions
|
|
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
|
|
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
|
|
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=
|
|
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
|
|
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=
|
|
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
|
|
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
|
-
| `
|
|
1261
|
-
| `
|
|
1262
|
-
| `
|
|
1263
|
-
| `
|
|
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 `@
|
|
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-
|
|
1279
|
-
| Premium | `openai/gpt-
|
|
1280
|
-
| Avoid | `anthropic/claude-opus-
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
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: "
|
|
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
|
-
|
|
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,
|
|
1596
|
+
npm test # 1,674 tests
|
|
1529
1597
|
npm run test:integration # API tests (requires running services)
|
|
1530
1598
|
```
|
|
1531
1599
|
|