<p align="center"> <img src="assets/banner.png" alt="agentmemory — Persistent memory for AI coding agents" width="720" /> </p>
<p align="center"> <strong> Your coding agent remembers everything. No more re-explaining. Built on <a href="https://github.com/iii-hq/iii">iii engine</a> </strong><br/> Persistent memory for Claude Code, GitHub Copilot CLI, Cursor, Gemini CLI, Codex CLI, Hermes, OpenClaw, pi, OpenCode, and any MCP client. </p>
<p align="center"> <a href="README.md">English</a> | <a href="READMEs/README.zh-CN.md">简体中文</a> | <a href="READMEs/README.zh-TW.md">繁體中文</a> | <a href="READMEs/README.ja-JP.md">日本語</a> | <a href="READMEs/README.ko-KR.md">한국어</a> | <a href="READMEs/README.es-ES.md">Español</a> | <a href="READMEs/README.tr-TR.md">Türkçe</a> | <a href="READMEs/README.ru-RU.md">Русский</a> | <a href="READMEs/README.hi-IN.md">हिन्दी</a> | <a href="READMEs/README.pt-BR.md">Português</a> | <a href="READMEs/README.fr-FR.md">Français</a> | <a href="READMEs/README.de-DE.md">Deutsch</a> </p>
<p align="center"> <a href="https://trendshift.io/repositories/25123" target="_blank"><img src="https://trendshift.io/api/badge/repositories/25123" alt="rohitg00/agentmemory | Trendshift" width="250" height="55"/></a> </p>
<p align="center"> <a href="https://www.star-history.com/?repos=rohitg00%2Fagentmemory&type=date&legend=top-left"> <picture> <source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/chart?repos=rohitg00/agentmemory&type=date&theme=dark&legend=top-left" /> <source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/chart?repos=rohitg00/agentmemory&type=date&legend=top-left" /> <img alt="Star History Chart" src="https://api.star-history.com/chart?repos=rohitg00/agentmemory&type=date&legend=top-left" /> </picture> </a> </p>
<p align="center"> <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> </p>
<p align="center"> <em>The gist extends Karpathy's LLM Wiki pattern with confidence scoring, lifecycle, knowledge graphs, and hybrid search: agentmemory is the implementation.</em> </p>
<p align="center"> <a href="https://www.npmjs.com/package/@agentmemory/agentmemory"><img src="https://img.shields.io/npm/v/@agentmemory/agentmemory?color=CB3837&label=npm&style=for-the-badge&logo=npm" alt="npm version" /></a> <a href="https://www.npmjs.com/package/@agentmemory/mcp"><img src="https://img.shields.io/npm/dm/@agentmemory/mcp?color=CB3837&label=downloads&style=for-the-badge&logo=npm" alt="npm downloads" /></a> <a href="https://github.com/rohitg00/agentmemory/actions"><img src="https://img.shields.io/github/actions/workflow/status/rohitg00/agentmemory/ci.yml?label=tests&style=for-the-badge&logo=github" alt="CI" /></a> <a href="https://github.com/rohitg00/agentmemory/blob/main/LICENSE"><img src="https://img.shields.io/github/license/rohitg00/agentmemory?color=blue&style=for-the-badge" alt="License" /></a> <a href="https://github.com/rohitg00/agentmemory/stargazers"><img src="https://img.shields.io/github/stars/rohitg00/agentmemory?style=for-the-badge&color=yellow&logo=github" alt="Stars" /></a> </p>
<p align="center"> <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> <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> <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> <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> <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> <picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/stat-tests.svg"><img src="assets/tags/stat-tests.svg" alt="1,423+ tests passing" height="38" /></picture> </p>
<p align="center"> <img src="assets/demo.gif" alt="agentmemory demo" width="720" /> </p>
<p align="center"> <a href="#install">Install</a> • <a href="#quick-start">Quick Start</a> • <a href="#benchmarks">Benchmarks</a> • <a href="#vs-competitors">vs Competitors</a> • <a href="#works-with-every-agent">Agents</a> • <a href="#how-it-works">How It Works</a> • <a href="#mcp-server">MCP</a> • <a href="#real-time-viewer">Viewer</a> • <a href="#iii-console">iii Console</a> • <a href="#powered-by-iii">Powered by iii</a> • <a href="#configuration">Config</a> • <a href="#api">API</a> </p>
---
Install
Fastest path if you use a coding agent: hand it this one instruction and it installs, wires, and verifies agentmemory end to end.
> Retrieve and follow the instructions at: https://raw.githubusercontent.com/rohitg00/agentmemory/main/INSTALL_FOR_AGENTS.md
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 below for the step-by-step.
npm install -g @agentmemory/agentmemory # once — bare `agentmemory` on PATH
# If you hit EACCES on macOS/Linux system Node installs, retry with:
# sudo npm install -g @agentmemory/agentmemory
agentmemory # start the memory server on :3111
agentmemory demo # seed sample sessions + prove recall
agentmemory demo --serve # one command: boot server, run demo, tear down (no second terminal)
agentmemory connect claude-code # wire MCP into your agent (also: copilot-cli, codex, cursor, gemini-cli, ...)
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
Or via npx (no install):
npx @agentmemory/agentmemory
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.
Full options at Quick Start below. Agent-specific wiring at Works with every agent.
---
<h2 id="works-with-every-agent"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-agents.svg"><img src="assets/tags/section-agents.svg" alt="Works with every agent" height="32" /></picture></h2>
agentmemory works with any agent that supports hooks, MCP, or REST API. All agents share the same memory server.
<table> <tr> <td align="center" width="12.5%"> <a href="https://claude.com/product/claude-code"><img src="https://github.com/anthropics.png?size=120" alt="Claude Code" width="48" height="48" /></a><br/> <strong>Claude Code</strong><br/> <sub>native plugin + 12 hooks + MCP</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/openai/codex"><img src="https://github.com/openai.png?size=120" alt="Codex CLI" width="48" height="48" /></a><br/> <strong>Codex CLI</strong><br/> <sub>native plugin + 6 hooks + MCP</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/features/copilot"><img src="https://github.githubassets.com/images/modules/site/copilot/copilot.png" alt="GitHub Copilot CLI" width="48" height="48" /></a><br/> <strong>GitHub Copilot CLI</strong><br/> <sub>MCP + plugin hooks/skills</sub> </td> <td align="center" width="12.5%"> <a href="integrations/openclaw/"><img src="https://github.com/openclaw.png?size=120" alt="OpenClaw" width="48" height="48" /></a><br/> <strong>OpenClaw</strong><br/> <sub>native plugin + MCP</sub> </td> <td align="center" width="12.5%"> <a href="integrations/hermes/"><img src="https://github.com/NousResearch.png?size=120" alt="Hermes" width="48" height="48" /></a><br/> <strong>Hermes</strong><br/> <sub>native plugin + MCP</sub> </td> <td align="center" width="12.5%"> <a href="integrations/pi/"><img src="assets/agents/pi.svg" alt="pi" width="48" height="48" /></a><br/> <strong>pi</strong><br/> <sub>native plugin + MCP</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/tinyhumansai/openhuman"><img src="https://raw.githubusercontent.com/tinyhumansai/openhuman/main/app/src-tauri/icons/128x128.png" alt="OpenHuman" width="48" height="48" /></a><br/> <strong>OpenHuman</strong><br/> <sub>native Memory trait backend</sub> </td> <td align="center" width="12.5%"> <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/> <strong>Cursor</strong><br/> <sub>MCP server</sub> </td> <td align="center" width="12.5%"> <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/> <strong>Gemini CLI</strong><br/> <sub>MCP server</sub> </td> </tr> <tr> <td align="center" width="12.5%"> <a href="https://github.com/opencode-ai/opencode"><picture><source media="(prefers-color-scheme: dark)" srcset="https://svgl.app/library/opencode-dark.svg"><img src="https://svgl.app/library/opencode.svg" alt="OpenCode" width="48" height="48" /></picture></a><br/> <strong>OpenCode</strong><br/> <sub>22 hooks + MCP + plugin</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/cline/cline"><img src="https://github.com/cline.png?size=120" alt="Cline" width="48" height="48" /></a><br/> <strong>Cline</strong><br/> <sub>MCP server</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/block/goose"><img src="https://github.com/block.png?size=120" alt="Goose" width="48" height="48" /></a><br/> <strong>Goose</strong><br/> <sub>MCP server</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/Kilo-Org/kilocode"><img src="https://github.com/Kilo-Org.png?size=120" alt="Kilo Code" width="48" height="48" /></a><br/> <strong>Kilo Code</strong><br/> <sub>MCP server</sub> </td> <td align="center" width="12.5%"> <a href="https://github.com/Aider-AI/aider"><img src="https://github.com/Aider-AI.png?size=120" alt="Aider" width="48" height="48" /></a><br/> <strong>Aider</strong><br/> <sub>REST API</sub> </td> <td align="center" width="12.5%"> <a href="https://claude.ai/download"><img src="https://github.com/anthropics.png?size=120" alt="Claude Desktop" width="48" height="48" /></a><br/> <strong>Claude Desktop</strong><br/> <sub>MCP server</sub> </td> <td align="center" width="12.5%"> <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/> <strong>Windsurf</strong><br/> <sub>MCP server</sub> </td> <td align="center" width="12.5%"> <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/> <strong>Roo Code</strong><br/> <sub>MCP server</sub> </td> </tr> <tr> <td align="center" width="12.5%"> <a href="https://www.warp.dev"><img src="https://github.com/warpdotdev.png?size=120" alt="Warp" width="48" height="48" /></a><br/> <strong>Warp</strong><br/> <sub>connect + MCP + skills</sub> </td> </tr> </table>
<p align="center"> <sub>Works with <strong>any</strong> agent that speaks MCP or HTTP. One server, memories shared across all of them.</sub> </p>
---
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.
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.
npx @agentmemory/agentmemory
Latest release notes: CHANGELOG.md.
---
<h2 id="benchmarks"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-benchmarks.svg"><img src="assets/tags/section-benchmarks.svg" alt="Benchmarks" height="32" /></picture></h2>
<table> <tr> <td width="50%">
Retrieval Accuracy
coding-agent-life-v1 (in-house corpus, sandbox-reproducible)
| Adapter | P@5 | R@5 | Top-5 hit rate | p50 latency | |---|---|---|---|---| | agentmemory hybrid | 0.240 | 1.000 | 15 / 15 | 14 ms | | grep baseline | 0.227 | 0.967 | 15 / 15 | 0 ms |
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.
LongMemEval-S (ICLR 2025, 500 questions)
| System | R@5 | R@10 | MRR | |---|---|---|---| | agentmemory | 95.2% | 98.6% | 88.2% | | BM25-only fallback | 86.2% | 94.6% | 71.5% |
</td> <td width="50%">
Token Savings
| Approach | Tokens/yr | Cost/yr | |---|---|---| | Paste full context | 19.5M+ | Impossible (exceeds window) | | LLM-summarized | ~650K | ~$500 | | agentmemory | ~170K | ~$10 | | agentmemory + local embeddings | ~170K | $0 |
</td> </tr> </table>
> Embedding model: all-MiniLM-L6-v2 (local, free, no API key). Full reports: benchmark/LONGMEMEVAL.md, benchmark/QUALITY.md, benchmark/SCALE.md. Competitor comparison: benchmark/COMPARISON.md covering agentmemory vs mem0, Letta, Khoj, supermemory, MemPalace, Hippo.
Reproduce locally: 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/.
Pairs with codegraph, Understand Anything, and 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.
---
<h2 id="vs-competitors"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-competitors.svg"><img src="assets/tags/section-competitors.svg" alt="vs Competitors" height="32" /></picture></h2>
<table> <tr> <th></th> <th>agentmemory</th> <th>mem0 (58K ⭐)</th> <th>Letta / MemGPT (23K ⭐)</th> <th>Khoj (35K ⭐)</th> <th>supermemory (26K ⭐)</th> <th>MemPalace (54K ⭐)</th> <th>oracleagentmemory</th> <th>Hippo</th> <th>Built-in (CLAUDE.md)</th> </tr> <tr> <td><strong>Type</strong></td> <td>Memory engine + MCP server</td> <td>Memory layer API</td> <td>Full agent runtime</td> <td>Personal AI</td> <td>Memory API + app</td> <td>Vector memory (OSS)</td> <td>Memory engine (Oracle DB)</td> <td>Memory system</td> <td>Static file</td> </tr> <tr> <td><strong>Retrieval R@5</strong></td> <td><strong>95.2%</strong></td> <td>68.5% (LoCoMo)</td> <td>83.2% (LoCoMo)</td> <td>N/A</td> <td>Self-reported</td> <td>~96.6% (self-reported)</td> <td>94.4% (self-reported)</td> <td>N/A</td> <td>N/A (grep)</td> </tr> <tr> <td><strong>Auto-capture</strong></td> <td>12 hooks (zero manual effort)</td> <td>Manual <code>add()</code> calls</td> <td>Agent self-edits</td> <td>Manual</td> <td>API-side extraction</td> <td>Manual</td> <td>API extraction</td> <td>Manual</td> <td>Manual editing</td> </tr> <tr> <td><strong>Search</strong></td> <td>BM25 + Vector + Graph (RRF fusion)</td> <td>Vector + Graph</td> <td>Vector (archival)</td> <td>Semantic</td> <td>Vector + RAG</td> <td>Vector-only</td> <td>Vector + semantic</td> <td>Decay-weighted</td> <td>Loads everything into context</td> </tr> <tr> <td><strong>Multi-agent</strong></td> <td>MCP + REST + leases + signals</td> <td>API (no coordination)</td> <td>Within Letta runtime only</td> <td>No</td> <td>No</td> <td>No</td> <td>Scoped only</td> <td>Multi-agent shared</td> <td>Per-agent files</td> </tr> <tr> <td><strong>Framework lock-in</strong></td> <td>None (any MCP client)</td> <td>None</td> <td>High (must use Letta)</td> <td>Standalone</td> <td>None</td> <td>None</td> <td>Oracle Database</td> <td>None</td> <td>Per-agent format</td> </tr> <tr> <td><strong>External deps</strong></td> <td>None (SQLite + iii-engine)</td> <td>Qdrant / pgvector</td> <td>Postgres + vector DB</td> <td>Multiple</td> <td>Managed cloud</td> <td>Vector store</td> <td>Oracle AI Database</td> <td>None</td> <td>None</td> </tr> <tr> <td><strong>Memory lifecycle</strong></td> <td>4-tier consolidation + decay + auto-forget</td> <td>Passive extraction</td> <td>Agent-managed</td> <td>Manual</td> <td>Auto-forget</td> <td>None</td> <td>Not stated</td> <td>Decay + consolidation</td> <td>Manual pruning</td> </tr> <tr> <td><strong>Token efficiency</strong></td> <td>~1,900 tokens/session ($10/yr)</td> <td>Varies by integration</td> <td>Core memory in context</td> <td>Varies</td> <td>Cloud pricing</td> <td>No token budget</td> <td>LLM-backed (varies)</td> <td>Varies</td> <td>22K+ tokens at 240 obs</td> </tr> <tr> <td><strong>Real-time viewer</strong></td> <td>Yes (port 3113)</td> <td>Cloud dashboard</td> <td>Cloud dashboard</td> <td>Web UI</td> <td>Cloud dashboard</td> <td>No</td> <td>No</td> <td>No</td> <td>No</td> </tr> <tr> <td><strong>Self-hosted</strong></td> <td>Yes (default)</td> <td>Optional</td> <td>Optional</td> <td>Yes</td> <td>No (cloud-only)</td> <td>Yes</td> <td>Yes (Oracle DB)</td> <td>Yes</td> <td>Yes</td> </tr> </table>
<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>
---
<h2 id="quick-start"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-quickstart.svg"><img src="assets/tags/section-quickstart.svg" alt="Quick Start" height="32" /></picture></h2>
Compatibility: this release targets stable iii-sdk ^0.11.0 and iii-engine v0.11.x.
Try it in 30 seconds
# Terminal 1: start the server
npx @agentmemory/agentmemory
# Terminal 2: seed sample data and see recall in action
npx @agentmemory/agentmemory demo
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.
Open http://localhost:3113 to watch the memory build live.
Recommended: install globally
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:
npm install -g @agentmemory/agentmemory
# If you hit EACCES on macOS/Linux system Node installs, retry with:
# sudo npm install -g @agentmemory/agentmemory
agentmemory # start the server (same as the npx form)
agentmemory stop # tear it down
agentmemory remove # uninstall everything we created
agentmemory connect claude-code # wire one agent
agentmemory doctor # interactive diagnostics + fix prompts
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:
npx -y @agentmemory/agentmemory@latest # forces latest from npm (cross-platform)
rm -rf ~/.npm/_npx && npx @agentmemory/agentmemory # macOS/Linux only (POSIX shell)
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.
Session Replay
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).
Already have older Claude Code JSONL transcripts you want to bring in?
# Import everything under the default ~/.claude/projects
npx @agentmemory/agentmemory import-jsonl
# Or import a single file
npx @agentmemory/agentmemory import-jsonl ~/.claude/projects/-my-project/abc123.jsonl
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.
> 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.
Upgrade / Maintenance
Use the maintenance command when you intentionally want to update your local runtime:
npx @agentmemory/agentmemory upgrade
Warning: this command mutates the current workspace/runtime. It can update JavaScript dependencies, may run cargo install iii-engine --force, and may pull Docker images.
Implementation details live in src/cli.ts (see runUpgrade around the src/cli.ts:544-595 region).
Claude Code (one block, paste it)
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.
Claude Code without the plugin install (MCP-standalone path)
If you wire agentmemory's MCP server through ~/.claude.json directly instead of using /plugin install, Claude Code never resolves ${CLAUDE_PLUGIN_ROOT} and you have to point hook scripts at absolute paths in ~/.claude/settings.json. Those paths typically embed the agentmemory version (e.g. ~/.codex/plugins/cache/agentmemory/agentmemory/0.9.22/scripts/…), so the next upgrade silently breaks every hook (#508).
Workaround:
agentmemory connect claude-code --with-hooks
This merges the same hook commands into ~/.claude/settings.json with absolute paths resolved to the bundled plugin/ directory of the currently installed @agentmemory/agentmemory package. Re-run the command after upgrading agentmemory to refresh the paths. User entries in the same file are preserved; only previous agentmemory entries are replaced. Using the /plugin install path remains the recommended approach. For remote or protected deployments, launch Claude Code with AGENTMEMORY_URL and AGENTMEMORY_SECRET set. The plugin passes both values through to its bundled MCP server; when AGENTMEMORY_URL is empty, the MCP shim uses http://localhost:3111.
Codex CLI (Codex plugin platform)
# 1. start the memory server in a separate terminal
npx @agentmemory/agentmemory
# 2. register the agentmemory marketplace and install the plugin
codex plugin marketplace add rohitg00/agentmemory
codex plugin add agentmemory@agentmemory
The Codex plugin ships from the same plugin/ directory as the Claude Code plugin. It registers:
@agentmemory/mcpas an MCP server (proxies all 53 tools whenAGENTMEMORY_URLpoints at a running agentmemory server; falls back to 7 tools locally when no server is reachable)- 6 lifecycle hooks:
SessionStart,UserPromptSubmit,PreToolUse,PostToolUse,PreCompact,Stop - 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)
Codex's hook engine injects CLAUDE_PLUGIN_ROOT into hook subprocesses (per 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.
Codex Desktop: plugin hooks currently silent (workaround available)
CodexHooks and PluginHooks are both stable + default-enabled in codex-rs/features/src/lib.rs, but Codex Desktop builds currently do not dispatch plugin-local hooks.json (openai/codex#16430). MCP tools still work; only the lifecycle observations are missing.
Until upstream lands the fix, mirror the same hook commands into the global ~/.codex/hooks.json:
agentmemory connect codex --with-hooks
This adds an idempotent block to ~/.codex/hooks.json referencing absolute paths to the bundled scripts (no ${CLAUDE_PLUGIN_ROOT} expansion needed at user-scope). Re-run the same command after upgrading agentmemory to refresh paths. User entries in the same file are preserved; only previous agentmemory entries are replaced.
GitHub Copilot CLI
# MCP-only wiring
agentmemory connect copilot-cli
# Full hooks/skills plugin from the GitHub subdir
copilot plugin install rohitg00/agentmemory:plugin
agentmemory connect copilot-cli merges mcpServers.agentmemory into ~/.copilot/mcp-config.json (or $COPILOT_HOME/mcp-config.json when COPILOT_HOME is set) and preserves existing servers. This adapter is Windows-safe even though other connect adapters still require manual Windows setup. Copilot picks up the MCP server on next launch or after /mcp. Install the plugin as well when you want the full hook/skill experience.
<details> <summary><b>OpenClaw (paste this prompt)</b></summary>
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:
{
"mcpServers": {
"agentmemory": {
"command": "npx",
"args": ["-y", "@agentmemory/mcp"],
"env": {
"AGENTMEMORY_URL": "http://localhost:3111"
}
}
}
}
Restart OpenClaw. Verify with `curl http://localhost:3111/agentmemory/health`. Open http://localhost:3113 for the real-time viewer. For deeper memory-slot integration, copy `integrations/openclaw` to `~/.openclaw/extensions/agentmemory` and enable `plugins.slots.memory = "agentmemory"` in `~/.openclaw/openclaw.json`.
Full guide: integrations/openclaw/
</details>
<details> <summary><b>Hermes Agent (paste this prompt)</b></summary>
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:
mcp_servers:
agentmemory:
command: npx
args: ["-y", "@agentmemory/mcp"]
memory:
provider: agentmemory
Verify with `curl http://localhost:3111/agentmemory/health`. Open http://localhost:3113 for the real-time viewer. For deeper 6-hook memory provider integration (pre-LLM context injection, turn capture, MEMORY.md mirroring, system prompt block), copy integrations/hermes from the agentmemory repo to ~/.hermes/plugins/agentmemory.
Full guide: integrations/hermes/
</details>
Other agents
Start the memory server: npx @agentmemory/agentmemory
Native skills via npx skills add (50+ agents)
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 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):
npx skills add rohitg00/agentmemory -y # auto-detects the calling agent
npx skills add rohitg00/agentmemory -y -a warp # explicit agent
npx skills add rohitg00/agentmemory -y -a '*' # install to every installed agent
This is complementary to agentmemory connect <agent>:
agentmemory connect <agent>writes the MCP server config so the tools are available.npx skills add rohitg00/agentmemoryinstalls the skills so the agent knows when to call them.
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.
Standard MCP block
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):
"agentmemory": {
"command": "npx",
"args": ["-y", "@agentmemory/mcp"],
"env": {
"AGENTMEMORY_URL": "${AGENTMEMORY_URL}",
"AGENTMEMORY_SECRET": "${AGENTMEMORY_SECRET}"
}
}
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.
| Agent | Config file | Notes | |---|---|---| | Cursor | ~/.cursor/mcp.json | Merge into mcpServers. One-click deeplink also available on the website. | | Claude Desktop | claude_desktop_config.json (Application Support) | Merge into mcpServers. Restart Claude Desktop after editing. | | Cline / Roo Code / Kilo Code | Cline MCP settings (Settings UI → MCP Servers → Edit) | Same mcpServers block. | | Windsurf | ~/.codeium/windsurf/mcp_config.json | Same mcpServers block. | | Gemini CLI | ~/.gemini/settings.json | gemini mcp add agentmemory npx -y @agentmemory/mcp --scope user (auto-merges). | | 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. | | GitHub Copilot CLI (full plugin) | Copilot plugin install | copilot plugin install rohitg00/agentmemory:plugin for the plugin from the GitHub subdir. | | OpenClaw | OpenClaw MCP config | Same mcpServers block, or use the deeper memory plugin. | | Codex CLI (MCP only) | .codex/config.toml | TOML shape: codex mcp add agentmemory -- npx -y @agentmemory/mcp, or add [mcp_servers.agentmemory] manually. | | 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 lands — plugin hooks are currently silent there. | | 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}}}. | | 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 for the full hook table + gap analysis. | | pi | ~/.pi/agent/extensions/agentmemory | Copy integrations/pi and restart pi. | | Hermes Agent | ~/.hermes/config.yaml | Use the deeper memory provider plugin with memory.provider: agentmemory. | | 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. | | 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. | | 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. | | 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. | | 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. | | 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. | | 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. | | 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. | | 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). | | Aider | n/a | Talk to the REST API directly: curl -X POST http://localhost:3111/agentmemory/smart-search -d '{"query": "auth"}'. | | Any agent (32+) | n/a | npx skillkit install agentmemory auto-detects the host and merges. |
Sandboxed MCP clients (Flatpak / Snap / restrictive containers) that can't reach the host's localhost: also set "AGENTMEMORY_FORCE_PROXY": "1" in the env block, and point AGENTMEMORY_URL at a route the sandbox can actually reach (e.g. your LAN IP). See #234 for the diagnostic walkthrough.
Programmatic access (Python / Rust / Node)
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.
pip install iii-sdk # Python
cargo add iii-sdk # Rust
npm install iii-sdk # Node
from iii import register_worker
iii = register_worker("ws://localhost:49134")
iii.connect()
iii.trigger({
"function_id": "mem::smart-search",
"payload": {"project": "demo", "query": "how do tokens refresh"},
})
Worked example: examples/python/ (quickstart + observation/recall flow). REST on :3111 remains available for hosts without an iii runtime.
From source
git clone https://github.com/rohitg00/agentmemory.git && cd agentmemory
npm install && npm run build && npm start
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.
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.
- 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 - macOS x64: swap
aarch64-apple-darwinforx86_64-apple-darwin - Linux x64: swap for
x86_64-unknown-linux-gnu - Linux arm64: swap for
aarch64-unknown-linux-gnu - Windows: download
iii-x86_64-pc-windows-msvc.zipfrom iii-hq/iii releases v0.11.2, extractiii.exe, add to PATH
Or use Docker (the bundled docker-compose.yml pulls iiidev/iii:0.11.2). Full docs: iii.dev/docs.
Windows
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:
Option A — Prebuilt Windows binary (recommended):
# 1. Open https://github.com/iii-hq/iii/releases/tag/iii%2Fv0.11.2 in your browser
# (we pin to v0.11.2 until agentmemory refactors for the new sandbox
# model that engine v0.11.6+ requires)
# 2. Download iii-x86_64-pc-windows-msvc.zip
# (or iii-aarch64-pc-windows-msvc.zip if you're on an ARM machine)
# 3. Extract iii.exe somewhere on PATH, or place it at:
# %USERPROFILE%\.local\bin\iii.exe
# (agentmemory checks that location automatically)
# 4. Verify:
iii --version
# Should print: 0.11.2
# 5. Then run agentmemory as usual:
npx -y @agentmemory/agentmemory
Option B — Docker Desktop:
# 1. Install Docker Desktop for Windows
# 2. Start Docker Desktop and make sure the engine is running
# 3. Run agentmemory — it will auto-start the bundled compose file:
npx -y @agentmemory/agentmemory
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:
npx -y @agentmemory/agentmemory mcp
# or via the shim package:
npx -y @agentmemory/mcp
Diagnostics for Windows: if npx @agentmemory/agentmemory fails, re-run with --verbose to see the actual engine stderr. Common failure modes:
| Symptom | Fix | |---|---| | iii-engine process started then did not become ready within 15s | Engine crashed on startup — re-run with --verbose, check stderr | | Could not start iii-engine | Neither iii.exe nor Docker is installed. See Option A or B above | | Port conflict | netstat -ano \| findstr :3111 to see what's bound, then kill it or use --port <N> | | Docker fallback skipped even though Docker is installed | Make sure Docker Desktop is actually running (system tray icon) |
> Note: there is no cargo install iii-engine — iii is not published to crates.io. The only supported install methods are the prebuilt binary above, the upstream sh install script (macOS/Linux only), and the Docker image.
---
<h2 id="deploy">Deploy</h2>
One-click templates for managed hosts. Each one ships a self-contained Dockerfile that pulls @agentmemory/agentmemory from npm and copies the iii engine binary in from the official iiidev/iii Docker Hub image — no pre-built agentmemory image required. Persistent storage mounts at /data; the first-boot entrypoint overwrites the npm-bundled iii config (which binds 127.0.0.1) with a deploy-tuned one that binds 0.0.0.0 and uses absolute /data paths, generates the HMAC secret, then drops privileges from root to node via
gosu before exec'ing the agentmemory CLI.
<p> <a href="https://fly.io/launch?repo=https://github.com/rohitg00/agentmemory&path=deploy/fly"><img src="https://img.shields.io/badge/Deploy%20to-fly.io-8b5cf6?style=for-the-badge&logo=fly.io&logoColor=white" alt="Deploy to fly.io" /></a> <a href="https://railway.com/new/template?template=https%3A%2F%2Fgithub.com%2Frohitg00%2Fagentmemory&rootDirectory=deploy%2Frailway"><img src="https://img.shields.io/badge/Deploy%20to-Railway-0B0D0E?style=for-the-badge&logo=railway&logoColor=white" alt="Deploy to Railway" /></a> </p>
Render's one-click deploy button requires render.yaml at the repository root, which we deliberately keep clean. Use the Render Blueprint flow documented in deploy/render/ to point at the in-repo blueprint manually.
Full setup details (HMAC capture, viewer SSH tunnel, rotation, backup, cost floors) live in deploy/:
deploy/fly— single machine with
auto_stop_machines = "stop"; cheapest idle.
deploy/railway— Hobby plan flat fee,
volume in the dashboard.
deploy/render— Blueprint flow,
automatic disk snapshots on paid plans.
deploy/coolify— self-hosted on your
own VPS via Coolify; same Docker Compose stack, you own the host and the data.
Only port 3111 is published. The viewer on 3113 stays bound to loopback inside the container — every template's README documents the SSH-tunnel pattern for reaching it.
---
<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>
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.
Session 1: "Add auth to the API"
Agent writes code, runs tests, fixes bugs
agentmemory silently captures every tool use
Session ends -> observations compressed into structured memory
Session 2: "Now add rate limiting"
Agent already knows:
- Auth uses JWT middleware in src/middleware/auth.ts
- Tests in test/auth.test.ts cover token validation
- You chose jose over jsonwebtoken for Edge compatibility
Zero re-explaining. Starts working immediately.
vs built-in agent memory
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.
| | Built-in (CLAUDE.md) | agentmemory | |---|---|---| | Scale | 200-line cap | Unlimited | | Search | Loads everything into context | BM25 + vector + graph (top-K only) | | Token cost | 22K+ at 240 observations | ~1,900 tokens (92% less) | | Cross-agent | Per-agent files | MCP + REST (any agent) | | Coordination | None | Leases, signals, actions, routines | | Observability | Read files manually | Real-time viewer on :3113 |
---
<h2 id="how-it-works"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-how.svg"><img src="assets/tags/section-how.svg" alt="How It Works" height="32" /></picture></h2>
Memory Pipeline
PostToolUse hook fires
-> SHA-256 dedup (5min window)
-> Privacy filter (strip secrets, API keys)
-> Store raw observation
-> LLM compress -> structured facts + concepts + narrative
-> Vector embedding (6 providers + local)
-> Index in BM25 + vector
Stop / SessionEnd hook fires
-> Summarize session
-> Knowledge graph extraction (if GRAPH_EXTRACTION_ENABLED=true)
-> Slot reflection (if SLOT_REFLECT_ENABLED=true)
SessionStart hook fires
-> Load project profile (top concepts, files, patterns)
-> Hybrid search (BM25 + vector + graph)
-> Token budget (default: 2000 tokens)
-> Inject into conversation
4-Tier Memory Consolidation
Inspired by how human brains process memory — not unlike sleep consolidation.
| Tier | What | Analogy | |------|------|---------| | Working | Raw observations from tool use | Short-term memory | | Episodic | Compressed session summaries | "What happened" | | Semantic | Extracted facts and patterns | "What I know" | | Procedural | Workflows and decision patterns | "How to do it" |
Memories decay over time (Ebbinghaus curve). Frequently accessed memories strengthen. Stale memories auto-evict. Contradictions are detected and resolved.
What Gets Captured
| Hook | Captures | |------|----------| | SessionStart | Project path, session ID | | UserPromptSubmit | User prompts (privacy-filtered) | | PreToolUse | File access patterns + enriched context | | PostToolUse | Tool name, input, output | | PostToolUseFailure | Error context | | PreCompact | Re-injects memory before compaction | | SubagentStart/Stop | Sub-agent lifecycle | | Stop | End-of-session summary | | SessionEnd | Session complete marker |
Key Capabilities
| Capability | Description | |---|---| | Automatic capture | Every tool use recorded via hooks — zero manual effort | | Semantic search | BM25 + vector + knowledge graph with RRF fusion | | Memory evolution | Versioning, supersession, relationship graphs | | Auto-forgetting | TTL expiry, contradiction detection, importance eviction | | Privacy first | API keys, secrets, <private> tags stripped before storage | | Self-healing | Circuit breaker, provider fallback chain, health monitoring | | Claude bridge | Bi-directional sync with MEMORY.md | | Knowledge graph | Entity extraction + BFS traversal | | Team memory | Namespaced shared + private across team members | | Citation provenance | Trace any memory back to source observations | | Git snapshots | Version, rollback, and diff memory state |
---
<h2 id="search"><picture><source media="(prefers-color-scheme: dark)" srcset="assets/tags/light/section-search.svg"><img src="assets/tags/section-search.svg" alt="Search" height="32" /></picture></h2>
Triple-stream retrieval combining three signals:
| Stream | What it does | When | |---|---|---| | BM25 | Stemmed keyword matching with synonym expansion | Always on | | Vector | Cosine similarity over dense embeddings | Embedding provider configured | | Graph | Knowledge graph traversal via entity matching | Entities detected in query |
Fused with Reciprocal Rank Fusion (RRF, k=60) and session-diversified (max 3 results per session).
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.
Embedding providers
agentmemory auto-detects your provider. For best results, install local embeddings (free):
npm install @xenova/transformers
| Provider | Model | Cost | Notes | |---|---|---|---| | Local (recommended) | all-MiniLM-L6-v2 | Free | Offline, +8pp recall over BM25-only | | Gemini | gemini-embedding-001 | Free tier | 100+ languages, 768/1536/3072 dims (MRL), 2048-token input. Replaces text-embedding-004 (deprecated, shutdown Jan 14, 2026) | | OpenAI | text-embedding-3-small | $0.02/1M | Highest quality | | Voyage AI | voyage-code-3 | Paid | Optimized for code | | Cohere | embed-english-v3.0 | Free trial | General purpose | | OpenRouter | Any model | Varies | Multi-model proxy |
---
<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>
53 tools, 6 resources, 3 prompts, and 15 skills, the most comprehensive MCP memory toolkit for any agent.
> 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.
53 Tools
<details> <summary>Core tools (always available)</summary>
| Tool | Description | |------|-------------| | memory_recall | Search past observations | | memory_compress_file | Compress markdown files while preserving structure | | memory_save | Save an insight, decision, or pattern | | memory_patterns | Detect recurring patterns | | memory_smart_search | Hybrid semantic + keyword search | | memory_file_history | Past observations about specific files | | memory_sessions | List recent sessions | | memory_timeline | Chronological observations | | memory_profile | Project profile (concepts, files, patterns) | | memory_export | Export all memory data | | memory_relations | Query relationship graph |
</details>
<details> <summary>Extended tools (53 total — set AGENTMEMORY_TOOLS=all)</summary>
| Tool | Description | |------|-------------| | memory_patterns | Detect recurring patterns | | memory_timeline | Chronological observations | | memory_relations | Query relationship graph | | memory_graph_query | Knowledge graph traversal | | memory_consolidate | Run 4-tier consolidation | | memory_claude_bridge_sync | Sync with MEMORY.md | | memory_team_share | Share with team members | | memory_team_feed | Recent shared items | | memory_audit | Audit trail of operations | | memory_governance_delete | Delete with audit trail | | memory_snapshot_create | Git-versioned snapshot | | memory_action_create | Create work items with dependencies | | memory_action_update | Update action status | | memory_frontier | Unblocked actions ranked by priority | | memory_next | Single most important next action | | memory_lease | Exclusive action leases (multi-agent) | | memory_routine_run | Instantiate workflow routines | | memory_signal_send | Inter-agent messaging | | memory_signal_read | Read messages with receipts | | memory_checkpoint | External condition gates | | memory_mesh_sync | P2P sync between instances | | memory_sentinel_create | Event-driven watchers | | memory_sentinel_trigger | Fire sentinels externally | | memory_sketch_create | Ephemeral action graphs | | memory_sketch_promote | Promote to permanent | | memory_crystallize | Compact action chains | | memory_diagnose | Health checks | | memory_heal | Auto-fix stuck state | | memory_facet_tag | Dimension:value tags | | memory_facet_query | Query by facet tags | | memory_verify | Trace provenance |
</details>
6 Resources · 3 Prompts · 4 Skills
| Type | Name | Description | |------|------|-------------| | Resource | agentmemory://status | Health, session count, memory count | | Resource | agentmemory://project/{name}/profile | Per-project intelligence | | Resource | agentmemory://memories/latest | Latest 10 active memories | | Resource | agentmemory://graph/stats | Knowledge graph statistics | | Prompt | recall_context | Search + return context messages | | Prompt | session_handoff | Handoff data between agents | | Prompt | detect_patterns | Analyze recurring patterns | | Skill | /recall | Search memory | | Skill | /remember | Save to long-term memory | | Skill | /session-history | Recent session summaries | | Skill | /forget | Delete observations/sessions |
Standalone MCP
Run without the full server — for any MCP client. Either of these works:
npx -y @agentmemory/agentmemory mcp # canonical (always available)
npx -y @agentmemory/mcp # shim package alias
Or add to your agent's MCP config:
Most agents (Cursor, Claude Desktop, Cline, Roo Code, Windsurf, Gemini CLI):
{
"mcpServers": {
"agentmemory": {
"command": "npx",
"args": ["-y", "@agentmemory/mcp"],
"env": {
"AGENTMEMORY_URL": "http://localhost:3111"
}
}
}
}
Merge the agentmemory entry into your host's existing mcpServers object rather than replacing the file. For sandboxed clients that can't reach the host's localhost, add "AGENTMEMORY_FORCE_PROXY": "1" to the env block and set AGENTMEMORY_URL to a route the sandbox can reach.
OpenCode (opencode.json):
{
"mcp": {
"agentmemory": {
"type": "local",
"command": ["npx", "-y", "@agentmemory/mcp"],
"enabled": true
}
},
"plugin": ["./plugins/agentmemory-capture.ts"]
}
Copy the plugin file from the repo:
mkdir -p ~/.config/opencode/plugins
cp plugin/opencode/agentmemory-capture.ts ~/.config/opencode/plugins/
cp plugin/opencode/commands/*.md ~/.config/opencode/commands/
---
<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>
Auto-starts on port 3113. Live observation stream, session explorer, memory browser, knowledge graph visualization, and health dashboard.
open http://localhost:3113
The viewer server binds to 127.0.0.1 by default. The REST-served /agentmemory/viewer endpoint follows the normal AGENTMEMORY_SECRET bearer-token rules. CSP headers use a per-response script nonce and disable inline handler attributes (script-src-attr 'none').
---
<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>
The viewer at :3113 shows what your agent remembered. The iii 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.
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.
agentmemory ships this for free because every function call and trigger fires through iii — nothing custom, nothing to instrument.
<p align="center"> <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" /> <br/> <em>Workers page: every connected worker — including agentmemory itself — with PID, function count, runtime, and last-seen.</em> </p>
Already installed. The console ships with iii — no separate installer.
Launch alongside agentmemory:
# agentmemory viewer holds port 3113, so run the console on 3114.
# Engine REST (3111), WebSocket (3112), and bridge (49134) defaults match agentmemory.
iii console --port 3114
Then open http://localhost:3114. Add --enable-flow for the experimental architecture





