rohitg00/agentmemoryPublic

#1 Persistent memory for AI coding agents based on real-world benchmarks

AI summary: A persistent memory server for AI coding agents utilizing knowledge graphs and hybrid search.

Stars
29.1K
+72 today
Forks
2.5K
Watchers
87
Open issues
309
Open PRs
302
Contributors
~46
Commits
492
Branches
32

TypeScriptApache-2.0Created Feb 25, 2026Last push 1d agoLatest release v0.9.29+311 stars this week+1.2K this month

Quick answers

What is agentmemory?
A persistent memory server for AI coding agents utilizing knowledge graphs and hybrid search.
What does agentmemory do?
Agentmemory is a persistent memory engine designed to give AI coding agents—like Claude Code, Cursor, and GitHub Copilot—long-term recall across sessions. Built on the 'iii engine', it implements a robust architecture combining knowledge graphs, hybrid search, and confidence scoring to store and retrieve contextual information effectively. The system intercepts agent queries via 54 native MCP tools and 12 automatic hooks, retrieving precise historical context without relying on external databases. By doing so, it drastically reduces token consumption (by roughly 92%) and eliminates the need for developers to repeatedly re-explain project architecture, prior decisions, or debugging history to their AI assistants.
Who is agentmemory for?
Power users of AI coding assistants, software engineers, and developers managing complex, long-running projects. It is designed for those who are frustrated by their agent's 'amnesia' and want a local, highly integrated solution to preserve project context.
How do I get started with agentmemory?
npx @agentmemory/agentmemory
How popular is agentmemory on GitHub?
rohitg00/agentmemory has 29,103 stars and 2,544 forks on GitHub, and gained 311 stars in the last 7 days.
What license does agentmemory use?
rohitg00/agentmemory is released under the Apache-2.0 license.

Star history

since Jul 29, 2026
010K20KJul 2026Aug 2026Sep 2026Oct 2026
29.1K stars as of Oct 3, 2026. Measured daily since Jul 29, 2026; GitHub no longer exposes earlier star timestamps.

Contribution activity

commits per day, last 52 weeks
SepOctNovDecJanFebMarAprMayJunJulAugSepMonWedFri2025-09-27: 0 commits2025-09-28: 0 commits2025-09-29: 0 commits2025-09-30: 0 commits2025-10-01: 0 commits2025-10-02: 0 commits2025-10-03: 0 commits2025-10-04: 0 commits2025-10-05: 0 commits2025-10-06: 0 commits2025-10-07: 0 commits2025-10-08: 0 commits2025-10-09: 0 commits2025-10-10: 0 commits2025-10-11: 0 commits2025-10-12: 0 commits2025-10-13: 0 commits2025-10-14: 0 commits2025-10-15: 0 commits2025-10-16: 0 commits2025-10-17: 0 commits2025-10-18: 0 commits2025-10-19: 0 commits2025-10-20: 0 commits2025-10-21: 0 commits2025-10-22: 0 commits2025-10-23: 0 commits2025-10-24: 0 commits2025-10-25: 0 commits2025-10-26: 0 commits2025-10-27: 0 commits2025-10-28: 0 commits2025-10-29: 0 commits2025-10-30: 0 commits2025-10-31: 0 commits2025-11-01: 0 commits2025-11-02: 0 commits2025-11-03: 0 commits2025-11-04: 0 commits2025-11-05: 0 commits2025-11-06: 0 commits2025-11-07: 0 commits2025-11-09: 0 commits2025-11-10: 0 commits2025-11-11: 0 commits2025-11-12: 0 commits2025-11-13: 0 commits2025-11-14: 0 commits2025-11-15: 0 commits2025-11-16: 0 commits2025-11-17: 0 commits2025-11-18: 0 commits2025-11-19: 0 commits2025-11-20: 0 commits2025-11-21: 0 commits2025-11-22: 0 commits2025-11-23: 0 commits2025-11-24: 0 commits2025-11-25: 0 commits2025-11-26: 0 commits2025-11-27: 0 commits2025-11-28: 0 commits2025-11-29: 0 commits2025-11-30: 0 commits2025-12-01: 0 commits2025-12-02: 0 commits2025-12-03: 0 commits2025-12-04: 0 commits2025-12-05: 0 commits2025-12-06: 0 commits2025-12-07: 0 commits2025-12-08: 0 commits2025-12-09: 0 commits2025-12-10: 0 commits2025-12-11: 0 commits2025-12-12: 0 commits2025-12-13: 0 commits2025-12-14: 0 commits2025-12-15: 0 commits2025-12-16: 0 commits2025-12-17: 0 commits2025-12-18: 0 commits2025-12-19: 0 commits2025-12-20: 0 commits2025-12-21: 0 commits2025-12-22: 0 commits2025-12-23: 0 commits2025-12-24: 0 commits2025-12-25: 0 commits2025-12-26: 0 commits2025-12-27: 0 commits2025-12-28: 0 commits2025-12-29: 0 commits2025-12-30: 0 commits2025-12-31: 0 commits2026-01-01: 0 commits2026-01-02: 0 commits2026-01-03: 0 commits2026-01-04: 0 commits2026-01-05: 0 commits2026-01-06: 0 commits2026-01-07: 0 commits2026-01-08: 0 commits2026-01-09: 0 commits2026-01-10: 0 commits2026-01-11: 0 commits2026-01-12: 0 commits2026-01-13: 0 commits2026-01-14: 0 commits2026-01-15: 0 commits2026-01-16: 0 commits2026-01-17: 0 commits2026-01-18: 0 commits2026-01-19: 0 commits2026-01-20: 0 commits2026-01-21: 0 commits2026-01-22: 0 commits2026-01-23: 0 commits2026-01-24: 0 commits2026-01-25: 0 commits2026-01-26: 0 commits2026-01-27: 0 commits2026-01-28: 0 commits2026-01-29: 0 commits2026-01-30: 0 commits2026-01-31: 0 commits2026-02-01: 0 commits2026-02-02: 0 commits2026-02-03: 0 commits2026-02-04: 0 commits2026-02-05: 0 commits2026-02-06: 0 commits2026-02-07: 0 commits2026-02-08: 0 commits2026-02-09: 0 commits2026-02-10: 0 commits2026-02-11: 0 commits2026-02-12: 0 commits2026-02-13: 0 commits2026-02-14: 0 commits2026-02-15: 0 commits2026-02-16: 0 commits2026-02-17: 0 commits2026-02-18: 0 commits2026-02-19: 0 commits2026-02-20: 0 commits2026-02-21: 0 commits2026-02-22: 0 commits2026-02-23: 0 commits2026-02-24: 0 commits2026-02-25: 9 commits2026-02-26: 6 commits2026-02-27: 4 commits2026-02-28: 1 commit2026-03-01: 3 commits2026-03-02: 0 commits2026-03-03: 0 commits2026-03-04: 7 commits2026-03-05: 0 commits2026-03-06: 0 commits2026-03-07: 0 commits2026-03-08: 0 commits2026-03-09: 1 commit2026-03-10: 0 commits2026-03-11: 0 commits2026-03-12: 0 commits2026-03-13: 0 commits2026-03-14: 0 commits2026-03-15: 0 commits2026-03-16: 0 commits2026-03-17: 0 commits2026-03-18: 3 commits2026-03-19: 0 commits2026-03-20: 0 commits2026-03-21: 0 commits2026-03-22: 0 commits2026-03-23: 0 commits2026-03-24: 0 commits2026-03-25: 2 commits2026-03-26: 0 commits2026-03-27: 1 commit2026-03-28: 0 commits2026-03-29: 0 commits2026-03-30: 0 commits2026-03-31: 0 commits2026-04-01: 0 commits2026-04-02: 0 commits2026-04-03: 0 commits2026-04-04: 2 commits2026-04-05: 4 commits2026-04-06: 7 commits2026-04-07: 7 commits2026-04-08: 11 commits2026-04-09: 17 commits2026-04-10: 0 commits2026-04-11: 2 commits2026-04-12: 10 commits2026-04-13: 14 commits2026-04-14: 8 commits2026-04-15: 7 commits2026-04-16: 7 commits2026-04-17: 7 commits2026-04-18: 19 commits2026-04-19: 4 commits2026-04-20: 3 commits2026-04-21: 15 commits2026-04-22: 13 commits2026-04-23: 0 commits2026-04-24: 3 commits2026-04-25: 0 commits2026-04-26: 0 commits2026-04-27: 8 commits2026-04-28: 1 commit2026-04-29: 3 commits2026-04-30: 0 commits2026-05-01: 0 commits2026-05-02: 0 commits2026-05-03: 0 commits2026-05-04: 0 commits2026-05-05: 0 commits2026-05-06: 0 commits2026-05-07: 2 commits2026-05-08: 5 commits2026-05-09: 9 commits2026-05-10: 4 commits2026-05-11: 7 commits2026-05-12: 5 commits2026-05-13: 11 commits2026-05-14: 2 commits2026-05-15: 17 commits2026-05-16: 6 commits2026-05-17: 18 commits2026-05-18: 13 commits2026-05-19: 15 commits2026-05-20: 11 commits2026-05-21: 5 commits2026-05-22: 2 commits2026-05-23: 0 commits2026-05-24: 0 commits2026-05-25: 6 commits2026-05-26: 4 commits2026-05-27: 13 commits2026-05-28: 7 commits2026-05-29: 2 commits2026-05-30: 0 commits2026-05-31: 0 commits2026-06-01: 0 commits2026-06-02: 13 commits2026-06-03: 6 commits2026-06-04: 1 commit2026-06-05: 1 commit2026-06-06: 0 commits2026-06-07: 5 commits2026-06-08: 1 commit2026-06-09: 2 commits2026-06-10: 5 commits2026-06-11: 2 commits2026-06-12: 0 commits2026-06-13: 0 commits2026-06-14: 0 commits2026-06-15: 0 commits2026-06-16: 0 commits2026-06-17: 0 commits2026-06-18: 0 commits2026-06-19: 0 commits2026-06-20: 0 commits2026-06-21: 0 commits2026-06-22: 0 commits2026-06-23: 0 commits2026-06-24: 0 commits2026-06-25: 0 commits2026-06-26: 0 commits2026-06-27: 0 commits2026-06-28: 1 commit2026-06-29: 0 commits2026-06-30: 0 commits2026-07-01: 0 commits2026-07-02: 0 commits2026-07-03: 0 commits2026-07-04: 0 commits2026-07-05: 0 commits2026-07-06: 0 commits2026-07-07: 0 commits2026-07-08: 0 commits2026-07-09: 0 commits2026-07-10: 0 commits2026-07-11: 0 commits2026-07-12: 0 commits2026-07-13: 0 commits2026-07-14: 0 commits2026-07-15: 0 commits2026-07-16: 0 commits2026-07-17: 0 commits2026-07-18: 0 commits2026-07-19: 2 commits2026-07-20: 0 commits2026-07-21: 0 commits2026-07-22: 0 commits2026-07-23: 0 commits2026-07-24: 0 commits2026-07-25: 1 commit2026-07-26: 0 commits2026-07-27: 0 commits2026-07-28: 0 commits2026-07-29: 1 commit2026-07-30: 0 commits2026-07-31: 0 commits2026-08-01: 0 commits2026-08-02: 6 commits2026-08-03: 0 commits2026-08-04: 1 commit2026-08-05: 0 commits2026-08-06: 0 commits2026-08-07: 0 commits2026-08-08: 0 commits2026-08-09: 2 commits2026-08-10: 0 commits2026-08-11: 0 commits2026-08-12: 0 commits2026-08-13: 0 commits2026-08-14: 0 commits2026-08-15: 2 commits2026-08-16: 3 commits2026-08-17: 0 commits2026-08-18: 0 commits2026-08-19: 0 commits2026-08-20: 0 commits2026-08-21: 0 commits2026-08-22: 0 commits2026-08-23: 1 commit2026-08-24: 0 commits2026-08-25: 0 commits2026-08-26: 0 commits2026-08-27: 0 commits2026-08-28: 0 commits2026-08-29: 0 commits2026-08-30: 0 commits2026-08-31: 0 commits2026-09-01: 0 commits2026-09-02: 0 commits2026-09-03: 0 commits2026-09-04: 0 commits2026-09-05: 0 commits2026-09-06: 0 commits2026-09-07: 0 commits2026-09-08: 0 commits2026-09-09: 0 commits2026-09-10: 0 commits2026-09-11: 0 commits2026-09-12: 0 commits2026-09-13: 0 commits2026-09-14: 0 commits2026-09-15: 0 commits2026-09-16: 0 commits2026-09-17: 0 commits2026-09-18: 0 commits2026-09-19: 0 commits2026-09-20: 0 commits2026-09-21: 0 commits2026-09-22: 0 commits2026-09-23: 0 commits2026-09-24: 2 commits2026-09-25: 6 commits2026-09-26: 2 commits
439 commits in the last yearLessMore

Signals and awards

derived from tracked data
  • Widely adopted

    29,103 stars

  • Actively maintained

    Pushed within 48 hours

  • Well documented

    High community health score

  • Permissive license

    Apache-2.0

  • Continuous integration

    Automated checks passing

  • Repeat trending

    12 trending appearances

What agentmemory does

Agentmemory is a persistent memory engine designed to give AI coding agents—like Claude Code, Cursor, and GitHub Copilot—long-term recall across sessions. Built on the 'iii engine', it implements a robust architecture combining knowledge graphs, hybrid search, and confidence scoring to store and retrieve contextual information effectively. The system intercepts agent queries via 54 native MCP tools and 12 automatic hooks, retrieving precise historical context without relying on external databases. By doing so, it drastically reduces token consumption (by roughly 92%) and eliminates the need for developers to repeatedly re-explain project architecture, prior decisions, or debugging history to their AI assistants.

Power users of AI coding assistants, software engineers, and developers managing complex, long-running projects. It is designed for those who are frustrated by their agent's 'amnesia' and want a local, highly integrated solution to preserve project context.

  • Persistent Recall: Stores conversation history, codebase context, and architectural decisions permanently across disparate agent sessions.
  • Zero External Databases: Operates completely locally without requiring external vector databases like Pinecone or Postgres.
  • Hybrid Knowledge Graphs: Utilizes a combination of knowledge graph structures and hybrid search algorithms to ensure a 95.2% retrieval recall rate.
  • Broad Agent Compatibility: Integrates seamlessly with over 20 different AI clients, including Cursor, Claude Code, Gemini CLI, and any MCP client.
  • Native MCP Tools: Exposes 54 specialized Model Context Protocol tools and automatic hooks to let agents manage their own memory.
  • Real-Time Viewer: Includes a local visualization tool for developers to inspect, edit, and monitor the agent's internal memory state.

Where teams use it

Continuous Project Context

Ensures that a coding agent remembers architectural decisions, preferred libraries, and coding styles established weeks ago, eliminating repetitive prompting.

Cross-Agent Synchronization

Allows a developer to switch between different AI tools (e.g., moving from Cursor to Claude Code) while maintaining the exact same project memory and context.

Token Optimization

Significantly reduces API costs by retrieving only highly specific, relevant memory nodes rather than forcing the agent to constantly re-read massive context files.

Debugging History Tracking

Enables the agent to instantly recall previously encountered bugs and the specific methods used to fix them, speeding up troubleshooting.

Getting started: npx @agentmemory/agentmemory

README

main branch

agentmemory: persistent memory for AI coding agents

Your coding agent remembers everything. No more re-explaining. Built on iii engine
Persistent memory for Claude Code, GitHub Copilot CLI, Cursor, Gemini CLI, Codex CLI, Hermes, OpenClaw, pi, OpenCode, and any MCP client.

English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Español | Türkçe | Русский | हिन्दी | Português | Français | Deutsch

rohitg00/agentmemory | Trendshift

Design doc: 1.6k stars / 230 forks on the gist

The gist extends Karpathy's LLM Wiki pattern with confidence scoring, lifecycle, knowledge graphs, and hybrid search: agentmemory is the implementation.

npm version CI License Stars

95.2% retrieval R@5 92% fewer tokens 54 MCP tools 12 auto hooks 0 external DBs 1,674+ tests passing

agentmemory demo

Install • Quick Start • Benchmarks • vs Competitors • Agents • How It Works • MCP • Viewer • Powered by iii • Config • API


Install

Requirements:

  • Node.js 20 or newer with npm and npx (node -v, npm -v, and npx -v).
  • macOS/Linux automatic iii-engine installation also needs curl, a POSIX sh, and tar. Minimal images such as node:20-slim may not include them.
  • Native Windows requires the pinned iii-engine v0.22.1 iii.exe to be installed manually. WSL2 or Docker Desktop are the other supported paths.

Canonical fresh-install command:

npx -y @agentmemory/agentmemory@latest

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 and its pinned iii engine, and offers to install globally so the bare agentmemory command works everywhere afterward. -y accepts npx's package prompt and @latest avoids a stale cached release. A provider makes LLM features available, but LLM-written observation compression starts only when AGENTMEMORY_AUTO_COMPRESS=true is also set.

Keyless mode disables vector embeddings. memory_recall (the mem::search path) uses BM25, while memory_smart_search can also fuse structural graph matches when graph data already exists. For free on-device semantic recall, set EMBEDDING_PROVIDER=local in ~/.agentmemory/.env and restart. The first embedding request downloads Xenova/all-MiniLM-L6-v2; inference runs locally after that initial model download.

The local runtime uses four ports: 3111 for REST/MCP HTTP, 3112 for iii streams, 3113 for the viewer, and 49134 for the iii worker WebSocket. Persistent iii state lives in ~/Library/Application Support/agentmemory on macOS, $XDG_DATA_HOME/agentmemory or ~/.local/share/agentmemory on Linux, and %APPDATA%\agentmemory on Windows. Use --data-dir <path> or AGENTMEMORY_DATA_DIR to override it, and reuse the same value on every restart. For backward compatibility, an existing ./data/state_store.db or ./data/iii-config.yaml takes precedence over the platform default for instance 0; an explicit flag or environment override still wins.

Then prove recall works and give your agent its skills:

npx -y @agentmemory/agentmemory@latest demo  # seed sample sessions + exercise recall
npx skills add rohitg00/agentmemory -y   # 17 native skills so your agent knows when to reach for memory

The keyword searches should hit in default keyless mode through BM25. The demo's database performance optimization query is intentionally semantic and can return zero until an embedding provider is configured.

Prefer to let a coding agent do the whole thing? Hand it one instruction:

Retrieve and follow the instructions at: https://raw.githubusercontent.com/rohitg00/agentmemory/main/INSTALL_FOR_AGENTS.md

Wire more agents any time with agentmemory connect <agent> — 20 adapters listed at Works with every agent. Full command reference at Quick Start.

Windows

The fast path is WSL2. Native Windows engine setup requires the pinned v0.22.1 ZIP to be downloaded and iii.exe extracted manually; the CLI does not auto-extract it. Docker Desktop is also supported. See the Windows notes for the step-by-step.

Global install / EACCES
npm install -g @agentmemory/agentmemory@latest

The npx command above remains the canonical fresh-install path and avoids global-prefix permission issues.

npx serves an old version

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).

Already running your own iii engine

agentmemory pins iii-engine v0.22.1 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.22.1 in ~/.agentmemory/bin, leaving your own iii untouched.


Works with every agent

agentmemory works with any agent that supports hooks, MCP, or REST API. All agents share the same memory server.

Claude Code
Claude Code
native plugin + 12 hooks + MCP
Codex CLI
Codex CLI
native plugin + 6 hooks + MCP
GitHub Copilot CLI
GitHub Copilot CLI
MCP + plugin hooks/skills
OpenClaw
OpenClaw
native plugin + MCP
Hermes
Hermes
native plugin + MCP
pi
pi
native plugin + MCP
OpenHuman
OpenHuman
native Memory trait backend
Cursor
Cursor
native plugin + MCP
Gemini CLI
Gemini CLI
MCP server
OpenCode
OpenCode
22 hooks + MCP + plugin
Cline
Cline
MCP server
Goose
Goose
MCP server
Kilo Code
Kilo Code
MCP server
Aider
Aider
REST API
Claude Desktop
Claude Desktop
MCP server
Devin
Devin
6 hooks + MCP
Roo Code
Roo Code
MCP server
Warp
Warp
connect + MCP + skills

Works with any agent that speaks MCP or HTTP. One server, memories shared across all of them.


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, with no re-explaining and no copy-pasting.

npx -y @agentmemory/agentmemory@latest

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. An existing legacy ./data/state_store.db or ./data/iii-config.yaml is reused for instance 0 before that platform default. To choose a location explicitly, pass --data-dir <path> or set AGENTMEMORY_DATA_DIR; either explicit setting takes precedence over legacy discovery:

npx -y @agentmemory/agentmemory@latest --data-dir ~/.agentmemory-projects/main
AGENTMEMORY_DATA_DIR=~/.agentmemory-projects/main npx -y @agentmemory/agentmemory@latest

Native and Docker launches use this same resolved host directory; Docker bind-mounts it at /data. --instance 1 appends instance-1 to the resolved directory and selects the separate default port quartet 3211/3212/3213/49234.

Latest release notes: CHANGELOG.md.


Benchmarks

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 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.

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%

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

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, TencentDB Agent Memory, MemPalace, Zep/Graphiti, Cognee, Hippo.

Reproduce locally: 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/.

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.


vs Competitors

agentmemory mem0 (63K ⭐) Letta / MemGPT (24K ⭐) Khoj (36K ⭐) supermemory (29K ⭐) TencentDB Agent Memory (22K ⭐) MemPalace (54K ⭐) oracleagentmemory Hippo Built-in (CLAUDE.md)
Type Memory engine + MCP server Memory layer API Full agent runtime Personal AI Memory API + app Team memory hub (LLM proxy) Vector memory (OSS) Memory engine (Oracle DB) Memory system Static file
Retrieval R@5 95.2% 68.5% (LoCoMo) 83.2% (LoCoMo) N/A Self-reported PersonaMem 76% (self-reported) ~96.6% (self-reported) 94.4% (self-reported) N/A N/A (grep)
Auto-capture 12 hooks (zero manual effort) Manual add() calls Agent self-edits Manual API-side extraction Proxy interception (base-URL swap) Manual API extraction Manual Manual editing
Search BM25 + Vector + Graph (RRF fusion) Vector + Graph Vector (archival) Semantic Vector + RAG 4 asset types (Chat / Skill / Wiki / CodeGraph) Vector-only Vector + semantic Decay-weighted Loads everything into context
Multi-agent MCP + REST + leases + signals API (no coordination) Within Letta runtime only No No Team roles + shared assets No Scoped only Multi-agent shared Per-agent files
Framework lock-in None (any MCP client) None High (must use Letta) Standalone None Proxy fronts every model call None Oracle Database None Per-agent format
External deps None (SQLite + iii-engine) Qdrant / pgvector Postgres + vector DB Multiple Managed cloud Docker stack (Core + Hub + Proxy) Vector store Oracle AI Database None None
Memory lifecycle 4-tier consolidation + decay + auto-forget Passive extraction Agent-managed Manual Auto-forget Manual review; auto-routing in progress None Not stated Decay + consolidation Manual pruning
Token efficiency ~1,900 tokens/session ($10/yr) Varies by integration Core memory in context Varies Cloud pricing Not stated No token budget LLM-backed (varies) Varies 22K+ tokens at 240 obs
Real-time viewer Yes (port 3113) Cloud dashboard Cloud dashboard Web UI Cloud dashboard Hub web UI No No No No
Self-hosted Yes (default) Optional Optional Yes No (cloud-only) Yes (Docker) Yes Yes (Oracle DB) Yes Yes

Benchmark note: only agentmemory's R@5 is our own measured result (LongMemEval-S, reproducible from benchmark/COMPARISON.md). 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.

Newer entrants worth knowing, compared in depth in benchmark/COMPARISON.md:

System ⭐ Angle
Zep / Graphiti 30K Temporal knowledge graph; strongest published temporal-query results (LongMemEval 63.8%), but graph builds asynchronously so fresh facts can lag
Cognee 30K Document-to-knowledge-graph ingestion, Python-only, built for structured entity extraction rather than session capture

None of these auto-capture from coding-agent hooks, ship a local-first viewer, or run keyless — the combination agentmemory is built around.


Quick Start

Compatibility: this release targets iii-sdk 0.22.1 and pins iii-engine v0.22.1.

Try it in 30 seconds

# Terminal 1: start the server
npx -y @agentmemory/agentmemory@latest

# Terminal 2: seed sample data and see recall in action
npx -y @agentmemory/agentmemory@latest demo

demo seeds 3 realistic sessions (JWT auth, N+1 query fix, rate limiting) and runs searches against them. Keyless installs disable vectors, so the mem::search keyword queries should hit through BM25 while database performance optimization can return zero. smart-search may additionally return structural graph matches when graph data exists. To make the semantic query find the N+1 fix through vectors, set EMBEDDING_PROVIDER=local, restart, and allow the first model download to finish.

Open http://localhost:3113 to watch the memory build live.

Validate a fresh install and restart persistence

With the server running, validate REST, health, the viewer, and the iii-backed runtime status:

curl -fsS http://localhost:3111/agentmemory/livez
curl -fsS http://localhost:3111/agentmemory/health
curl -fsS -o /dev/null http://localhost:3113/
npx -y @agentmemory/agentmemory@latest status

The startup ready panel accounts for all four ports: REST/MCP HTTP on 3111, iii streams on 3112, the viewer on 3113, and the iii worker WebSocket on 49134. status confirms agentmemory health and the active provider/embedding mode. Save a probe and confirm it is searchable:

curl -fsS -X POST http://localhost:3111/agentmemory/remember \
  -H 'Content-Type: application/json' \
  -d '{"content":"agentmemory restart persistence probe","concepts":["install-check"]}'

curl -fsS -X POST http://localhost:3111/agentmemory/smart-search \
  -H 'Content-Type: application/json' \
  -d '{"query":"restart persistence probe","limit":5}'

Then run npx -y @agentmemory/agentmemory@latest stop, start the canonical command again in Terminal 1, wait for /agentmemory/livez, and repeat the search. The probe must still be returned. If you selected a custom --data-dir, pass the same directory on the restart.

Everyday commands

Install and setup live in Install above (the first run walks you through it). Day to day:

agentmemory                    # start the server
agentmemory stop               # stop it cleanly
agentmemory connect <agent>    # wire another agent
agentmemory doctor             # interactive diagnostics + fix prompts
agentmemory remove             # uninstall everything we created

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.5x to 4x), and keyboard shortcuts (space to toggle, arrows to step).

To bring in older Claude Code JSONL transcripts:

# Import everything under the default ~/.claude/projects
npx -y @agentmemory/agentmemory@latest import-jsonl

# Or import a single file
npx -y @agentmemory/agentmemory@latest 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, 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.

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 -y @agentmemory/agentmemory@latest upgrade

Warning: this command mutates the current workspace/runtime. It can update JavaScript dependencies and pull the pinned iiidev/iii:0.22.1 Docker image. It never installs an unpinned or newer iii engine.

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 -y @agentmemory/agentmemory@latest` in a separate terminal to start the memory server and its pinned iii engine. 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. Keyless mode disables vectors: `memory_recall` uses BM25, and `memory_smart_search` can also use existing structural graph data. Set `EMBEDDING_PROVIDER=local` in `~/.agentmemory/.env` and restart to opt into on-device semantic recall.
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.

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 -y @agentmemory/agentmemory@latest

# 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/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)
  • 6 lifecycle hooks: SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, PreCompact, Stop
  • 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)

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. On native Windows this is the only automated connect adapter; configure every other native Windows agent manually. WSL connect is supported only when the target agent is installed in that same WSL environment. 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.

OpenClaw (paste this prompt)
Install agentmemory for OpenClaw. Run `npx -y @agentmemory/agentmemory@latest` 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:

{
  "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/

Hermes Agent (paste this prompt)
Install agentmemory for Hermes. Run `npx -y @agentmemory/agentmemory@latest` 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:

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/

Other agents

Start the memory server: npx -y @agentmemory/agentmemory@latest

Native skills via npx skills add (50+ agents)

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 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/agentmemory installs 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 17 SKILL.md files under the agent's native skill directory yourself; the 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, 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 (MCP only) ~/.cursor/mcp.json Merge into mcpServers, or agentmemory connect cursor. One-click deeplink also available on the website.
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.
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.
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.
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.
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/). Store the secret in Devin Secrets, then use "Test listing tools" to verify all 54 tools appear.
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. 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.
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) + 17 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. 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 for the full hook table + gap analysis.
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 is also a pi package (pi install ./integrations/pi from a checkout).
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.
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.
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.
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. Pass --with-hooks for native auto-capture.
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.
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).

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, with 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 the pinned binary is already installed, or uses Docker Compose when selected. REST, streams, and the viewer bind to 127.0.0.1 by default. The automatic macOS/Linux binary path requires curl, a POSIX sh, and tar.

Install iii-engine manually. agentmemory currently pins iii-engine to v0.22.1, the same release as its iii-sdk dependency; the worker speaks that engine's wire protocol, and 0.20.0 reorganized the SDK surface, so the two move together in agentmemory releases. Override with AGENTMEMORY_III_VERSION=<version> if you run your own engine and know it matches.

  • macOS arm64: mkdir -p ~/.local/bin && curl -fsSL https://github.com/iii-hq/iii/releases/download/iii/v0.22.1/iii-aarch64-apple-darwin.tar.gz | tar -xz -C ~/.local/bin && chmod +x ~/.local/bin/iii
  • macOS x64: swap aarch64-apple-darwin for x86_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.zip from iii-hq/iii releases v0.22.1 and extract iii.exe to %USERPROFILE%\.agentmemory\bin\iii.exe

Or use Docker (the bundled docker-compose.yml pulls iiidev/iii:0.22.1). 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 pinned iii-engine v0.22.1 runtime as a background process. The CLI does not auto-extract the Windows ZIP, so native Windows users must install iii.exe manually, use WSL2, or choose Docker Desktop.

Native Windows automated MCP wiring supports only agentmemory connect copilot-cli. For Claude Code, Codex, Cursor, and every other native Windows agent, copy the manual MCP block from Other agents into that agent's Windows config. Running connect in WSL is appropriate only when the target agent is also installed in the same WSL environment; it does not edit a Windows-host agent's configuration.

Option A: prebuilt Windows binary (recommended)

# 1. Open https://github.com/iii-hq/iii/releases/tag/iii%2Fv0.22.1 in your browser
#    (agentmemory pins the engine to the same release as its iii-sdk;
#     v0.22.1 is the current pair)
# 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 to agentmemory's private engine directory:
New-Item -ItemType Directory -Force "$HOME\.agentmemory\bin"
# Copy iii.exe to $HOME\.agentmemory\bin\iii.exe
# 4. Verify:
& "$HOME\.agentmemory\bin\iii.exe" --version
# Should print: 0.22.1

# 5. Then run agentmemory as usual:
npx -y @agentmemory/agentmemory@latest

Option B: Docker Desktop

# 1. Install Docker Desktop for Windows
# 2. Start Docker Desktop and make sure the engine is running
# 3. Select Docker explicitly and run agentmemory:
$env:AGENTMEMORY_USE_DOCKER = "1"
npx -y @agentmemory/agentmemory@latest

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@latest mcp
# or via the shim package:
npx -y @agentmemory/mcp

Diagnostics for Windows: if npx -y @agentmemory/agentmemory@latest fails, re-run it with --verbose to see the actual engine stderr. Common failure modes:

Symptom Fix
The engine process started but the REST API never responded. Confirm all four derived ports are free, verify the pinned iii.exe stayed alive, then re-run with --verbose and inspect the captured engine 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: 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 are all pinned to v0.22.1: the prebuilt binary above, agentmemory's macOS/Linux auto-install path (curl, POSIX sh, and tar required), and the Docker image iiidev/iii:0.22.1. A bare upstream install.sh | sh installs the latest engine, which agentmemory does not support. Use npx -y @agentmemory/agentmemory@latest; on macOS/Linux it fetches the pinned engine into ~/.agentmemory/bin.


Deploy

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.

Deploy to fly.io Deploy to Railway

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

Recent activity

commits and pull requests

Recent open issues

view all

Discussions

all 23

Releases and announcements

51 total
  1. v0.9.29v0.9.29Aug 16, 2026

    No breaking changes, drop-in upgrade. ## Added - Cursor plugin: 7 auto-capture hooks + 17 skills + MCP, IDE and `cursor-agent` CLI - Devin support: `connect devin --with-hooks` (6 native hooks) and a Devin plugin manifest for `/agentmemory:<skill>` commands - DeepSeek Harness connector (`connect dsh`), with `--with-hooks` for full auto-capture - `connect pi` now actually installs the extension; capture reaches parity with the Claude Code plugin - Two new skills, 15 → 17: `memory-discipline` (when to recall and save) and `/lesson` (corrections become confidence-weighted rules) - Write-time provenance on every record: origin channel stamped at capture, save, and import - Keyless graph extraction: the knowledge graph now populates without an LLM key - `AGENTMEMORY_LLM_NOTHINK=1` to skip the hidden thinking pass during graph extraction - Viewer clarity pass: two-pane session explorer, expandable records, honest zero states ## Fixed - MCP `initialize` now negotiates the client's protocol version instead of hardcoding `2024-11-05` (#908) - Hybrid BM25 + vector + graph ranking reaches `memory_recall`, not just smart-search - Superseded memory versions leave the search indexes; recall st

  2. v0.9.28v0.9.28Jul 19, 2026

    No breaking changes, drop-in upgrade. ## Security - Closed cross-agent memory leak via `/agentmemory/context` under `AGENTMEMORY_AGENT_SCOPE=isolated` (#1057) ## Fixed - Hooks no longer crash ("hook exited with code 1") on a null payload from Codex CLI / Claude Code (#1047) - Engine conflict no longer hangs in a WS reconnect loop; clean recovery and pinned-engine guidance (#984) - Onboarding stat drift and over-strict engine version gate (#852) ## Added - `agentmemory demo --serve`: one-command seed and recall demo, no second terminal (#852) - opencode `connect` adapter; onboarding agent picker single-sourced from adapters (#883) - Session summaries now returned by `GET /agentmemory/sessions` (#882) - 15 detailed, self-updating skills covering the whole system (#854) - Agent-driven install runbook (`INSTALL_FOR_AGENTS.md`) and Windows/WSL2 clarity (#853) - Colored CLI output and quieter boot (#984) **Full changelog**: https://github.com/rohitg00/agentmemory/compare/v0.9.27...v0.9.28

  3. v0.9.27v0.9.27Jun 7, 2026

    Wave release closing several breaking regressions reported against v0.9.26, plus an agent-scope isolation security fix, an iii version-pin audit fix, and a benchmark scorecard correction. No breaking changes; drop-in upgrade. ## Security - **`AGENTMEMORY_AGENT_SCOPE=isolated` not enforced on `mem::search` / `POST /agentmemory/search` / `memory_recall` / `recall_context`** ([#817](https://github.com/rohitg00/agentmemory/issues/817)). PR #654's isolation work covered smart-search, `/memories`, `/observations`, and `/sessions` but missed the BM25-only recall path. An isolated worker booted with `AGENT_ID=B` could read agent A's memories via the standard MCP `memory_recall` tool. Fail-closed: if isolated mode is on and no agent id resolves, the call throws rather than dropping the filter. ## Fixed - **`/graph/query` and `/graph/stats` timed out with `"Invocation stopped"` on large existing corpora** ([#814](https://github.com/rohitg00/agentmemory/issues/814), [PR #816](https://github.com/rohitg00/agentmemory/pull/816)). Refactored `mem::graph-extract` to maintain three side-indexes (`graphNameIndex`, `graphEdgeKey`, `graphNodeDegree`) so every extract path is O(1), never O(

  4. Hotfix on top of v0.9.25. Closes [#797](https://github.com/rohitg00/agentmemory/issues/797). ## Fixed - **First boot crash: `TypeError: Cannot read properties of undefined (reading 'v')`** (#797). The sharded index load path checked `manifest.value !== null` before forwarding, but some iii-state adapters return `undefined` (not `null`) for a missing key. `loadManifestData(undefined)` then crashed on `undefined.v`. Now treats both null + undefined + non-object values as 'no manifest' and falls through to the legacy load path. Self-healing was already in place — the next debounced save rebuilt a fresh manifest — but the crash on first boot scared every fresh upgrader. ## Upgrade ``` npm install -g @agentmemory/[email protected] ``` If you already saw the warning on v0.9.25 and the daemon kept running, you're fine — the index was already rebuilt. v0.9.26 just makes the first-run boot quiet. ## Verified - 125 test files / 1381 tests pass - Build clean

  5. Bug-fix wave closing every breaking 0.9.24 regression, plus a feature lane. Eleven issues closed. No breaking changes; drop-in upgrade. ## Fixed - **Cross-provider fallback always 404'd and tripped the circuit breaker** (#778). Fallback resolved each provider's own env-driven default model instead of inheriting the primary's. - **`import-jsonl` aborted entire batch on legacy session row missing `id`** (#775). Re-keys on `parsed.sessionId`, backfills missing `existing.id`. - **`parseSummaryXml` silently dropped summaries wrapped in markdown fences** (#783). New `stripXmlWrappers()` peels fences + pre/postamble; final-merge parse retries once. - **`sdk.triggerVoid is not a function` on iii-sdk 0.11.2** (#758 / #726). All 9 call sites migrated to `trigger({ action: TriggerAction.Void() })`. - **pi integration recorded every observation as "No content provided"** (#759). Field-name fix: `tool_input` / `tool_output`. - **Fresh global install refused to boot when PATH iii didn't match the runtime pin** (#752). Private install at `~/.agentmemory/bin/` + auto-fallback. Existing user iii stays untouched. - **`mem::obsidian-export` HTTP 500 `[object Object]` on any record missing

Code frequency

additions and deletions
+30.8K-30.8KWeek of 2026-02-22: +18,193 linesWeek of 2026-02-22: -1,494 linesWeek of 2026-03-01: +8,128 linesWeek of 2026-03-01: -631 linesWeek of 2026-03-08: +12,236 linesWeek of 2026-03-08: -48 linesWeek of 2026-03-15: +7,118 linesWeek of 2026-03-15: -913 linesWeek of 2026-03-22: +1,277 linesWeek of 2026-03-22: -115 linesWeek of 2026-03-29: +1,355 linesWeek of 2026-03-29: -41 linesWeek of 2026-04-05: +30,761 linesWeek of 2026-04-05: -835 linesWeek of 2026-04-12: +21,245 linesWeek of 2026-04-12: -5,923 linesWeek of 2026-04-19: +4,962 linesWeek of 2026-04-19: -5,553 linesWeek of 2026-04-26: +602 linesWeek of 2026-04-26: -88 linesWeek of 2026-05-03: +1,436 linesWeek of 2026-05-03: -305 linesWeek of 2026-05-10: +10,630 linesWeek of 2026-05-10: -1,380 linesWeek of 2026-05-17: +9,421 linesWeek of 2026-05-17: -566 linesWeek of 2026-05-24: +22,618 linesWeek of 2026-05-24: -869 linesWeek of 2026-05-31: +5,562 linesWeek of 2026-05-31: -1,137 linesWeek of 2026-06-07: +3,343 linesWeek of 2026-06-07: -501 linesWeek of 2026-06-14: +0 linesWeek of 2026-06-14: -0 linesWeek of 2026-06-21: +0 linesWeek of 2026-06-21: -0 linesWeek of 2026-06-28: +284 linesWeek of 2026-06-28: -231 linesWeek of 2026-07-05: +0 linesWeek of 2026-07-05: -0 linesWeek of 2026-07-12: +0 linesWeek of 2026-07-12: -0 linesWeek of 2026-07-19: +590 linesWeek of 2026-07-19: -241 linesWeek of 2026-07-26: +281 linesWeek of 2026-07-26: -99 linesWeek of 2026-08-02: +4,917 linesWeek of 2026-08-02: -521 linesWeek of 2026-08-09: +8,258 linesWeek of 2026-08-09: -3,180 linesWeek of 2026-08-16: +1,285 linesWeek of 2026-08-16: -292 linesWeek of 2026-08-23: +2,651 linesWeek of 2026-08-23: -347 linesWeek of 2026-08-30: +0 linesWeek of 2026-08-30: -0 linesWeek of 2026-09-06: +0 linesWeek of 2026-09-06: -0 linesWeek of 2026-09-13: +0 linesWeek of 2026-09-13: -0 linesWeek of 2026-09-20: +5,952 linesWeek of 2026-09-20: -2,520 linesFeb 22, 2026Sep 20, 2026
+183.1K lines added, -27.8K removed over the last year.

Commits per week

last 52 weeks
720Week of 2025-09-27: 0 commitsWeek of 2025-10-04: 0 commitsWeek of 2025-10-11: 0 commitsWeek of 2025-10-18: 0 commitsWeek of 2025-10-25: 0 commitsWeek of 2025-11-01: 0 commitsWeek of 2025-11-09: 0 commitsWeek of 2025-11-16: 0 commitsWeek of 2025-11-23: 0 commitsWeek of 2025-11-30: 0 commitsWeek of 2025-12-07: 0 commitsWeek of 2025-12-14: 0 commitsWeek of 2025-12-21: 0 commitsWeek of 2025-12-28: 0 commitsWeek of 2026-01-04: 0 commitsWeek of 2026-01-11: 0 commitsWeek of 2026-01-18: 0 commitsWeek of 2026-01-25: 0 commitsWeek of 2026-02-01: 0 commitsWeek of 2026-02-08: 0 commitsWeek of 2026-02-15: 0 commitsWeek of 2026-02-22: 20 commitsWeek of 2026-03-01: 10 commitsWeek of 2026-03-08: 1 commitsWeek of 2026-03-15: 3 commitsWeek of 2026-03-22: 3 commitsWeek of 2026-03-29: 2 commitsWeek of 2026-04-05: 48 commitsWeek of 2026-04-12: 72 commitsWeek of 2026-04-19: 38 commitsWeek of 2026-04-26: 12 commitsWeek of 2026-05-03: 16 commitsWeek of 2026-05-10: 52 commitsWeek of 2026-05-17: 64 commitsWeek of 2026-05-24: 32 commitsWeek of 2026-05-31: 21 commitsWeek of 2026-06-07: 15 commitsWeek of 2026-06-14: 0 commitsWeek of 2026-06-21: 0 commitsWeek of 2026-06-28: 1 commitsWeek of 2026-07-05: 0 commitsWeek of 2026-07-12: 0 commitsWeek of 2026-07-19: 3 commitsWeek of 2026-07-26: 1 commitsWeek of 2026-08-02: 7 commitsWeek of 2026-08-09: 4 commitsWeek of 2026-08-16: 3 commitsWeek of 2026-08-23: 1 commitsWeek of 2026-08-30: 0 commitsWeek of 2026-09-06: 0 commitsWeek of 2026-09-13: 0 commitsWeek of 2026-09-20: 10 commitsSep 27, 2025Sep 20, 2026
439 commits in the last 52 weeks.

When work happens

weekday and hour
SunMonTueWedThuFriSat036912151821Sun 0:00 — 2 commitsSun 1:00 — 6 commitsSun 2:00 — 0 commitsSun 3:00 — 0 commitsSun 4:00 — 0 commitsSun 5:00 — 1 commitsSun 6:00 — 0 commitsSun 7:00 — 0 commitsSun 8:00 — 0 commitsSun 9:00 — 1 commitsSun 10:00 — 0 commitsSun 11:00 — 12 commitsSun 12:00 — 7 commitsSun 13:00 — 4 commitsSun 14:00 — 3 commitsSun 15:00 — 2 commitsSun 16:00 — 1 commitsSun 17:00 — 3 commitsSun 18:00 — 3 commitsSun 19:00 — 6 commitsSun 20:00 — 5 commitsSun 21:00 — 2 commitsSun 22:00 — 1 commitsSun 23:00 — 4 commitsMon 0:00 — 7 commitsMon 1:00 — 0 commitsMon 2:00 — 0 commitsMon 3:00 — 0 commitsMon 4:00 — 0 commitsMon 5:00 — 0 commitsMon 6:00 — 0 commitsMon 7:00 — 0 commitsMon 8:00 — 0 commitsMon 9:00 — 0 commitsMon 10:00 — 2 commitsMon 11:00 — 9 commitsMon 12:00 — 4 commitsMon 13:00 — 5 commitsMon 14:00 — 5 commitsMon 15:00 — 3 commitsMon 16:00 — 4 commitsMon 17:00 — 2 commitsMon 18:00 — 2 commitsMon 19:00 — 6 commitsMon 20:00 — 6 commitsMon 21:00 — 1 commitsMon 22:00 — 1 commitsMon 23:00 — 3 commitsTue 0:00 — 11 commitsTue 1:00 — 0 commitsTue 2:00 — 2 commitsTue 3:00 — 0 commitsTue 4:00 — 0 commitsTue 5:00 — 0 commitsTue 6:00 — 0 commitsTue 7:00 — 0 commitsTue 8:00 — 4 commitsTue 9:00 — 3 commitsTue 10:00 — 5 commitsTue 11:00 — 1 commitsTue 12:00 — 3 commitsTue 13:00 — 2 commitsTue 14:00 — 0 commitsTue 15:00 — 1 commitsTue 16:00 — 6 commitsTue 17:00 — 3 commitsTue 18:00 — 8 commitsTue 19:00 — 8 commitsTue 20:00 — 9 commitsTue 21:00 — 0 commitsTue 22:00 — 0 commitsTue 23:00 — 5 commitsWed 0:00 — 4 commitsWed 1:00 — 0 commitsWed 2:00 — 0 commitsWed 3:00 — 2 commitsWed 4:00 — 0 commitsWed 5:00 — 0 commitsWed 6:00 — 0 commitsWed 7:00 — 1 commitsWed 8:00 — 0 commitsWed 9:00 — 0 commitsWed 10:00 — 17 commitsWed 11:00 — 8 commitsWed 12:00 — 8 commitsWed 13:00 — 11 commitsWed 14:00 — 8 commitsWed 15:00 — 6 commitsWed 16:00 — 8 commitsWed 17:00 — 6 commitsWed 18:00 — 4 commitsWed 19:00 — 0 commitsWed 20:00 — 6 commitsWed 21:00 — 11 commitsWed 22:00 — 2 commitsWed 23:00 — 0 commitsThu 0:00 — 3 commitsThu 1:00 — 1 commitsThu 2:00 — 0 commitsThu 3:00 — 1 commitsThu 4:00 — 4 commitsThu 5:00 — 2 commitsThu 6:00 — 0 commitsThu 7:00 — 1 commitsThu 8:00 — 1 commitsThu 9:00 — 3 commitsThu 10:00 — 4 commitsThu 11:00 — 6 commitsThu 12:00 — 0 commitsThu 13:00 — 7 commitsThu 14:00 — 1 commitsThu 15:00 — 0 commitsThu 16:00 — 1 commitsThu 17:00 — 1 commitsThu 18:00 — 1 commitsThu 19:00 — 5 commitsThu 20:00 — 5 commitsThu 21:00 — 2 commitsThu 22:00 — 2 commitsThu 23:00 — 0 commitsFri 0:00 — 2 commitsFri 1:00 — 1 commitsFri 2:00 — 0 commitsFri 3:00 — 0 commitsFri 4:00 — 0 commitsFri 5:00 — 0 commitsFri 6:00 — 0 commitsFri 7:00 — 0 commitsFri 8:00 — 1 commitsFri 9:00 — 1 commitsFri 10:00 — 9 commitsFri 11:00 — 1 commitsFri 12:00 — 2 commitsFri 13:00 — 1 commitsFri 14:00 — 3 commitsFri 15:00 — 2 commitsFri 16:00 — 6 commitsFri 17:00 — 12 commitsFri 18:00 — 2 commitsFri 19:00 — 6 commitsFri 20:00 — 0 commitsFri 21:00 — 0 commitsFri 22:00 — 0 commitsFri 23:00 — 0 commitsSat 0:00 — 0 commitsSat 1:00 — 0 commitsSat 2:00 — 0 commitsSat 3:00 — 0 commitsSat 4:00 — 0 commitsSat 5:00 — 0 commitsSat 6:00 — 0 commitsSat 7:00 — 0 commitsSat 8:00 — 0 commitsSat 9:00 — 0 commitsSat 10:00 — 3 commitsSat 11:00 — 9 commitsSat 12:00 — 2 commitsSat 13:00 — 3 commitsSat 14:00 — 4 commitsSat 15:00 — 1 commitsSat 16:00 — 1 commitsSat 17:00 — 4 commitsSat 18:00 — 4 commitsSat 19:00 — 3 commitsSat 20:00 — 9 commitsSat 21:00 — 0 commitsSat 22:00 — 0 commitsSat 23:00 — 1 commits
Commit volume by weekday and hour (UTC). Larger dots mean more commits.

Who is committing

last 52 weeks
Maintainer commits407 (83%)
Community commits85 (17%)

492 commits in total over the last year.

DateListRankStars gained
May 22, 2026daily#15+54
May 21, 2026daily#17+49
May 20, 2026daily#13+58
May 19, 2026daily#9+66
May 18, 2026daily#9+82
May 17, 2026daily#16+121
May 16, 2026daily#21+108
May 15, 2026daily#25+56
May 14, 2026daily#9+101
May 13, 2026daily#6+111
May 12, 2026daily#10+65
May 10, 2026daily#24+151
  • freeCodeCamp/freeCodeCamp

    freeCodeCamp.org's open-source codebase and curriculum. Learn math, programming, and computer science for free.

    456.7K stars · TypeScript

  • openclaw/openclaw

    The AI that really does things. Any OS. Any Platform. The lobster way. 🦞

    391.3K stars · TypeScript

  • obra/superpowers

    An agentic skills framework & software development methodology that works.

    295.2K stars · Shell

  • affaan-m/ECC

    The agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.

    272.8K stars · JavaScript

  • NousResearch/hermes-agent

    The agent that grows with you

    251.2K stars · Python

  • anomalyco/opencode

    The open source coding agent.

    211.7K stars · TypeScript