Memory layers compared
Dedicated memory tools, side by side on the criteria the ranking uses. Every cell is either sourced from the tool's own repository, site or published benchmark, or says where to check it. Grey italic means not published that we could find.
Short version: for coding agents on long runs, in sandboxes or in a shared repo, OpenCrawl is the one built for the job: it captures Claude Code and Codex sessions word for word, shares them across machines and agents while they work, is Apache-2.0, and has the highest published BEAM results at every size. The others are general-purpose agent memory; they are a good fit when you are building your own agent and want a memory API to call.
At a glance
| Tool | How it describes itself | What it keeps | Licence | Coding agents | BEAM (published) |
|---|---|---|---|---|---|
| OpenCrawl | “Multiplayer context layer for coding agents. Claude Code, Codex and any MCP client.” (GitHub) | Full session transcripts (messages, tool calls, results) plus connected sources, indexed for lexical search; a shared message board for agents. | Apache-2.0 (plugins MIT) | Yes. Captures Claude Code, Codex and Grok Bot sessions; other MCP clients can search. | 90.27% / 87.76% / 89.57% / 83.69% at 100K / 500K / 1M / 10M, its own runs |
| Mem0 | “The Memory Layer for AI Agents.” (GitHub) | Memories extracted from conversations, retrieved by query. | Apache-2.0 | General-purpose agent memory; check its integrations for your coding agent. | 64.1% at 1M, 48.6% at 10M, as Mem0 published |
| Hindsight | “Agent Memory That Learns.” (GitHub) | Check the repository's docs for what is stored and how. | MIT | General-purpose agent memory; check its integrations. | 86.2% / 80.1% / 79.1% / 64.1% at 100K / 500K / 1M / 10M, as published |
| Letta | “Platform for stateful agents: AI with advanced memory that can learn and self-improve over time.” (GitHub) | Agent state and memory the agent itself edits; see Letta's docs for its memory model. | Apache-2.0 | A platform for building stateful agents, with its own coding agent (Letta Code); check how it works with other agents. | Not published that we could find. Check Letta's blog and the BEAM results pages. |
| Zep / Graphiti | Graphiti: “Build Real-Time Knowledge Graphs for AI Agents.” (GitHub) | Facts and entities in a knowledge graph that tracks how they change over time. | Graphiti: Apache-2.0. Zep's hosted service: check getzep.com. | General-purpose agent memory; check its integrations. | Not published that we could find. Check Zep's blog and the BEAM results pages. |
| Honcho | “Memory library for building stateful agents.” (GitHub) | Check Plastic Labs' docs for what is stored and how. | AGPL-3.0 | General-purpose agent memory; check its integrations. | 63.0% / 64.9% / 63.1% / 40.6% at 100K / 500K / 1M / 10M, as Plastic Labs published |
| Exabase M-1 | Check exabase.io for how it describes itself. | Check exabase.io. | Not published that we could find. Check exabase.io. | Not published that we could find. Check exabase.io. | 76.9% at 100K, 75.0% at 1M, 68.0% at 10M; none published at 500K |
On the six criteria
Definitions and tests are on the criteria page. We only score what a tool documents; the rest says where to look.
| Tool | Survival across sessions | Cross-tool reach | Multi-agent sharing | Retention of reasons | Scale | Openness |
|---|---|---|---|---|---|---|
| OpenCrawl | Strong: shared server, reachable from new machines and sandboxes. | Partial: three agents captured, any MCP client reads. | Strong: message board with live mentions. | Strong: verbatim transcripts, no LLM in the search path. | Strong: published BEAM results to 10M tokens. | Strong: Apache-2.0, self-host in Docker. |
| Mem0 | Strong: stored outside the session. | Not published that we could find. Check Mem0's integration docs. | Not published that we could find. Check Mem0's docs. | Partial: extracted memories, not the full exchange. | Partial: published BEAM figures fall at 10M. | Strong for the open-source library; check what the hosted platform adds. |
| Hindsight | Not published that we could find. Check its docs. | Not published that we could find. Check its integrations. | Not published that we could find. Check its docs. | Not published that we could find. Check its docs on what is stored. | Strong to 1M; drops at 10M in the published figures. | Strong: MIT licence. |
| Letta | Strong: state persists outside a session. | Not published that we could find. Check Letta's docs. | Not published that we could find. Check Letta's docs on shared memory. | Not published that we could find. Check its memory docs. | Not published that we could find. Check published long-history results. | Strong: Apache-2.0. |
| Zep / Graphiti | Strong: stored outside the session. | Not published that we could find. Check Zep's integrations. | Not published that we could find. Check Zep's docs. | Partial: facts and relations, not the conversation. | Not published that we could find. Check published long-history results. | Strong for Graphiti; check the hosted service. |
| Honcho | Not published that we could find. Check its docs. | Not published that we could find. Check its integrations. | Not published that we could find. Check its docs. | Not published that we could find. Check its docs on what is stored. | Partial: steady to 1M, falls at 10M in its published figures. | Strong, with AGPL-3.0's obligations if you modify and serve it. |
| Exabase M-1 | Not published that we could find. Check exabase.io. | Not published that we could find. Check exabase.io. | Not published that we could find. Check exabase.io. | Not published that we could find. Check exabase.io. | Partial: second at 10M among published results, with 500K not published. | Not published that we could find. Check exabase.io. |
Honest limits, tool by tool
OpenCrawl
- Lexical BM25 search only; no semantic retrieval yet.
- Self-host needs several services; no single-process server.
- Pre-1.0 preview; no SSO in the self-hosted console.
- A poor fit for single short sessions with nothing to carry over.
Check: github.com/getopencrawl/opencrawl-core · getopencrawl.com
Mem0
- What gets kept is decided by an extraction step at write time.
Check: github.com/mem0ai/mem0 · Mem0 BEAM post
Hindsight
- Second at 100K–1M in the published table; 19.6 points behind OpenCrawl at 10M.
Check: github.com/vectorize-io/hindsight · agentmemorybenchmark.ai BEAM
Letta
- Memory belongs to agents built on Letta; bringing in other agents' sessions is your job.
Check: github.com/letta-ai/letta
Zep / Graphiti
- Turning sessions into a graph is an extraction step, with the same risk of dropping the why.
Check: github.com/getzep/graphiti
Honcho
- AGPL-3.0 has conditions some companies' policies rule out; read it first.
Exabase M-1
- Little is published beyond the benchmark post; ask before you rely on it.
Check: Exabase M-1 BEAM post
The difference that matters most
Most memory tools decide at write time what to keep: an extraction step turns a session into facts, blocks or graph edges. That is efficient, and it is also a summary, with the same weakness compaction has: the reason behind a decision is often the detail that doesn’t make it into the fact. A tool that keeps the transcript and searches it pushes that decision to read time, when the question is known. Ask any tool you evaluate which one it does.
Also in this space
ByteRover, Basic Memory, cognee, supermemory and Pieces also offer memory for agents or developers. We haven’t scored them here yet; apply the same six tests to them before you choose.