All head-to-heads

Directory · head to head

Mem0 vs Zep

How their memory differs, from each one’s entry in the directory.

In the directory, which sorts systems by whose memory they hold, Mem0 and Zep are both filed under “Building blocks” (also “Memory about you”, “Work & project memory”). Both are partly open source, and both can keep memory on a server you run or in each maker's cloud. Both list Python, TypeScript, Cursor, LangGraph and CrewAI among what they work with. Of the 11 mechanisms of human memory, Mem0 has 7 built, 2 partly, 2 not; Zep has 4 built (4 in depth), 3 partly, 4 not. Both have built Interference (Mem0: cloud only), Association, Reconsolidation (Mem0: cloud only) and Gist (Mem0: cloud Pro; Zep: cloud, Flex Plus and up). Only Mem0 has built Forgetting (cloud, opt-in), Retrieval (cloud, opt-in) and Consolidation (cloud only). Both have partly built Salience and Schemas. Neither has built Emotion or Prospective.

Measured against human memory

Mem07 built, 2 partly, 2 not

Zep4 built (4 in depth), 3 partly, 4 not

built todayLonger = more of it built: a little, partly, built, in depth

Side by side

EncodingStorageRetrievalTransformationbuiltpartlyin developmentnot builtnot known
Mem0Zep
At a glance
Whose memoryBuilding blocksBuilding blocks
Memory livesMem0's cloud, or your own serverZep's cloud (or your own cloud), or your graph database with Graphiti
API keysA Mem0 key (cloud) or an AI model key (self-hosted)A Zep key (cloud), or an AI model key plus a graph database (Graphiti)
Works withPython & TypeScript SDKs, Claude Code, Cursor, Codex, LangGraph, CrewAIPython, TypeScript & Go SDKs, LangGraph, CrewAI, Claude & ChatGPT (MCP), Cursor, Graphiti MCP server
LicensePartly open sourceApache-2.0Partly open sourceApache-2.0 (Graphiti)
PriceFree tier; from $19/moGraphiti free; Zep free tier, then from $125/mo
Under the hood
Who writes memoriesA separate AI call reads each conversation and pulls out short facts. The AI you talk to doesn't write them.A separate AI reads each message or record and pulls out the people, things and facts. The AI you talk to doesn't write them, though it can add memory through MCP tools.
Where they're keptA vector database (about 25 to choose from; Postgres with pgvector self-hosted), plus the names each fact mentions.A graph: people and things joined by dated facts, plus the original messages. Graphiti runs on Neo4j, FalkorDB or Amazon Neptune; Zep's cloud uses its own graph database.
How they're foundBy meaning, by keywords, and by shared names, combined into one ranked list.By meaning, by keywords, and by walking the links around a person or thing, combined into one ranked list. On the cloud, one call builds a ready-to-use context block from the last few messages.
Extra AI callsYes: an AI call to pull out facts on every add, plus embeddings. Dream adds more on the cloud.Yes: several AI calls per message (find things, find facts, date them, match them to the map, update summaries), plus embeddings. Paid in credits on the cloud, or on your own model key.
Measured against human memory
Mem0Zep
Of the 117 built, 2 partly, 2 not4 built (4 in depth), 3 partly, 4 not
Encoding
SalienceDecides what's worth keeping, and how much, as a memory is written.

partly built

An AI decides what counts as a fact, and you can say what to include or skip. There's no importance score. source

partly built

An AI decides which people, things and facts are worth pulling out, steered by the types you define and (Flex Plus and up) your domain instructions. There's no importance score. source

EmotionGives memories written with feeling more weight.

not built

No emotional weighting in the current version.

not built

Feelings can be saved as facts (“Sam feels he lacks motivation”), but they aren't given more weight. source

Storage
ForgettingLets unused memories fade over time on its own.

builtcloud, opt-in

Once it's switched on for a project, unused memories slowly sink in search results, though nothing is deleted. You can also set expiry dates. source

not built

Nothing fades on its own. Facts stay until they're contradicted or you delete them.

InterferenceWhen a new memory closely matches an old one, notices and lets the newer one win.

builtcloud only

Dream marks an older fact as replaced when a newer one contradicts it. Self-hosted, both are kept. source

built

Each new fact is checked against similar old ones: repeats merge, and a contradicted fact is marked as ended. “Newer” means newer in real life, by the fact's dates, not just the last thing said. source

Retrieval
RetrievalRemembering something makes that memory stronger.

builtcloud, opt-in

Each time a memory comes up in a search, it gets a small boost, once decay is switched on for the project. source

not built

Being recalled doesn't change a fact. An optional search order ranks things by how often they've been mentioned, which is close but not the same. source

AssociationLinks memories, so recalling one brings its neighbours.

built

Memories that mention the same person or thing are linked, and naming it in a question brings them up. source

built

Everything lives on a map of linked people and things. Search can start from one of them and bring up its neighbours first. source

ProspectiveBrings a memory back at the right time without being asked.

not built

It understands “upcoming” when you ask, but nothing comes back on its own. source

not built

Your app fetches relevant context every turn, but nothing comes back at a set time or on its own. source

Transformation
ConsolidationReworks memories between sessions: strengthening, merging, reorganising.

builtcloud only

Dream merges duplicates in the background, and a weekly pass (Pro plan) sums things up. source

partly built

Summaries of each person and thing are rewritten as new facts arrive, and Graphiti can regroup related things into “communities” when you ask. Zep doesn't document a background pass that reworks the map between sessions. source

ReconsolidationCorrects a memory when it's contradicted, and keeps what it used to say.

builtcloud only

A replaced memory stays visible and is linked to what replaced it. source

built

A contradicted fact is marked as ended, not deleted. Its dates show what used to be true, and you can search the past. source

GistTurns many specific moments into general knowledge.

builtcloud Pro

Dream writes “pattern memories” from things that keep coming up, kept alongside the originals. source

builtcloud, Flex Plus and up

Observations turn patterns seen across many facts (habits, commitments, preferences) into lasting memories, and retire them when they're outdated. Open-source Graphiti keeps running summaries instead. source

SchemasForms beliefs about people and projects, and weighs new facts against them.

partly built

User profiles (beta) keep a summary of each person, but new facts aren't weighed against it. source

partly built

Each user gets a running summary, and you can define kinds of people and things up front. New facts are checked against old facts, not against the summary. source

The same table on the compare page, where you can add other systems.

Everything above comes from the two entries in the directory’s public data: Mem0 checked 2026-09-25; Zep checked 2026-09-29.

Something wrong? Edit on GitHub: Mem0 · Zep, or tell us what to fix.