How deja compares
There are a lot of AI memory systems. Most solve a different problem than deja: they give applications a memory API you call from code, or wrap an agent runtime around their own store. deja is narrower — it makes the transcripts your coding agents already write to disk searchable, and serves them back to those agents. That one difference (retroactive indexing vs forward capture) drives most of the table below.
| deja-vu | Mem0 | Letta | memU | Memori | claude-mem | agentmemory | |
|---|---|---|---|---|---|---|---|
| What it is | index over agent transcripts | memory API for apps | agent runtime | memory filesystem | SQL memory SDK | Claude Code plugin | capture daemon |
| Starts with your history | ✓ retroactive | — | — | — | — | — | — |
| Capture step | none needed | API calls | its runtime | agent distills | SDK wrap | hooks + LLM | hooks |
| Stored as | verbatim, redacted | LLM facts | memory blocks | markdown | SQL rows | LLM summaries | events + vectors |
| Needs LLM/embedding key | no | yes | yes | yes | yes | yes | model or API |
| Background process | none | server / cloud | server + Postgres | server / cloud | none | worker | daemon, ports |
| Coding agents | 16 native parsers (Claude Code, Codex, opencode, Cursor, Goose, OpenClaw…) | via SDK/MCP | own runtime | adapters | frameworks | Claude Code | via hooks |
| Cross-machine sync | ✓ SSH, no cloud | cloud | server-side | cloud / self-host | your DB | — | — |
| Recall provenance | ✓ log + receipts | — | partial | — | queryable rows | viewer | dashboard |
| Retrieval | tiered lexical, optional embeddings | vector + graph | agent + vector | embeddings | SQL + vector | vector | hybrid RRF |
| Benchmark, harness in repo | 84.9% hit@1 LME-S · measured | self-reported | research lineage | self-reported | self-reported | — | — |
| Install | one binary | pip + keys | docker | pip / server | pip | npm + Claude | installer + deps |
| License | MIT | Apache-2.0 | Apache-2.0 | Apache-2.0 | Apache-2.0 | MIT | MIT |
When to pick something else
Honest routing, because the categories genuinely differ:
Mem0 / Memori — you are building an application and want to give your users memory through an API. deja has no SDK; it is not for app-embedded memory.
Letta — you want a full agent runtime with self-editing memory and you're happy living inside it. deja is the opposite bet: memory only, bring whatever agent you already use.
memU — you want curated, distilled knowledge files and don't mind the agent doing the distilling. deja keeps the verbatim record and searches it instead.
claude-mem — you only use Claude Code and prefer compressed summaries over raw history. deja covers 16 agents and keeps recall lossless.
A vector database + your own pipeline — you need semantic paraphrase matching above all. deja's lexical ladder loses to embeddings on pure paraphrase (we say so in the benchmarks); it wins on identifiers, error strings, and everything code-shaped, with no key and no daemon.
What only deja does
Across the systems we've studied, these have no equivalent elsewhere: indexing history from before the tool was installed; déjà vu recurrence detection ("you have been here" when a prompt matches solved work); origin-trust scopes on imported memory; deja blame — which sessions touched a file and what was decided; sanitized deja share digests; and the whole thing in one binary you can scp.