neuralmind.uk / NeuralMind vs. Mem0 and Zep — code-structure memory, or conversational-fact memory? Edit this page on GitHub ↗

NeuralMind vs. Mem0 and Zep

TL;DR — Mem0 and Zep are not competitors to NeuralMind; they solve a different problem. Both remember facts extracted from conversations — what a user said, preferred, or what was true and when — using an LLM in the write path. Neither parses source code, builds a call graph, or retrieves files. NeuralMind remembers codebases: a semantic index of code plus a Hebbian graph of which files actually move together on a given team, and (new in v4.1+) a narrow, git-tied record of why engineering decisions were made. There is no reproducible head-to-head here — gold-file recall doesn’t apply to either tool, the same “wrong axis” situation as our Headroom comparison. All Mem0/Zep/Graphiti figures below are their own published numbers or public repo state, not something we measured. Assessed September 2026, updated October 2026 to cover mem0’s OpenMemory MCP server; both projects ship fast — re-check before relying on specifics.

What Mem0 is

Mem0 (Apache 2.0, 65k+ GitHub stars) is “drop-in memory infrastructure for AI agents” — you feed it conversation turns and it extracts and stores what’s worth remembering about a user, session, or agent, then retrieves it on later turns. It requires an LLM to function: extraction defaults to a hosted OpenAI model, and its April 2026 rework moved to a single-pass “ADD-only” extraction call rather than separate update/delete passes. Retrieval combines semantic search, BM25 keyword matching, and entity linking over embeddings (OpenAI’s text-embedding-3-small by default, swappable). It ships four ways: a pip/npm library for prototyping, a self-hosted Docker server, a hosted Mem0 Platform, and OpenMemory, a local MCP server.

OpenMemory: mem0’s local MCP server

OpenMemory is the part of mem0 closest to how NeuralMind is used. It is an MCP server for Claude Desktop, Cursor and other MCP clients that keeps one shared memory across them, stored on your machine. It runs locally in Docker (an API, Postgres, Qdrant and a dashboard) and exposes add_memories, search_memory, list_memories and delete_all_memories. Its documented setup (quickstart) requires an OPENAI_API_KEY; as noted above, mem0’s default extraction and embedding models are OpenAI’s. Like the rest of mem0, it remembers what you and your tools tell it; it does not parse or index source code.

What Zep (and Graphiti) is

“Zep” names two different things today, and the distinction matters for anyone evaluating it. Graphiti (Apache 2.0, ~31k stars) is the actual open-source engine: a framework for building temporal knowledge graphs that track not just facts but when they became true and when they were superseded — “what was true, and when,” not just “what is true now.” It needs a graph database backend (Neo4j, FalkorDB, or Amazon Neptune) and an LLM for entity/relationship extraction and deduplication. Zep itself has pivoted: the repo is now examples and framework integrations for a hosted Zep Cloud platform, and its self-hosted Community Edition is explicitly deprecated (“no longer supported… moved to the legacy/ folder”). So the fair open-source comparison point is Graphiti, not “Zep” as most people mean it; Zep proper is a managed product built on top of it, adding multi-tenant governance and sub-200ms retrieval at scale.

How NeuralMind differs

The honest framing is that these tools don’t overlap in what they remember:

1. Different object of memory entirely. Mem0 and Graphiti/Zep are built to answer “what did the user tell me” and “what was true, and when” — memory about people and conversations. NeuralMind’s core is memory about a codebase: a semantic index (L0→L3 progressive disclosure) plus a synapse layer that learns which files co-activate from real edits and queries. Neither Mem0 nor Graphiti parses an AST, resolves a call graph, or ranks files against a def-site — that’s simply not their problem, and it would be dishonest to score them against our gold-file-recall benchmark the way we do codebase-memory-mcp. This is the same “wrong axis” situation the Headroom page already names for a different reason.

2. Where the Memory Layer actually gets close — and where it doesn’t. NeuralMind’s own Memory Layer (v4.1+) is the one part of NeuralMind that’s shaped like Mem0/Graphiti: a persistent store of discrete records (architectural decisions, not code) with rationale, evidence, and a confidence score, searchable by keywords or a question. Since v4.8.0 its default search fuses FTS5 keyword ranking with meaning ranking from a local embedding model, by reciprocal rank fusion, much as mem0 combines semantic search with BM25. It finds a decision worded differently from the question, though on the committed synthetic eval only 9 of 20 such paraphrases (Memory Layer wiki). But the design choices diverge sharply from both:

3. Complementary, not competing, if your agent needs both. An agent that both talks to end users and edits a codebase has two different kinds of memory to manage. Mem0 (or Zep Cloud) for user/conversation state and NeuralMind for codebase structure, usage patterns, and engineering decisions is a coherent stack — they don’t touch the same storage or the same questions.

Dimension Mem0 Zep / Graphiti NeuralMind
Primary memory object User/session/agent facts from conversation Entities, relationships, facts with validity windows Codebase structure, usage co-activation, engineering decisions
Parses source code No No Yes — tree-sitter AST, 10 languages
Extraction mechanism LLM-driven (single-pass ADD extraction) LLM-driven entity/edge extraction + dedup Explicit — caller records decisions directly; no LLM required
Invalidation LLM re-evaluates on new input Bi-temporal validity windows (LLM-assessed) Deterministic rules: file-touch, commit mismatch, age, cascade
Storage Vector store + BM25 index (pluggable) Graph DB (Neo4j/FalkorDB/Neptune) SQLite (local file, .neuralmind/), decision vectors included
Memory search Semantic + BM25 + entity linking Graph traversal + semantic + BM25 Decisions: FTS5 keyword + local-embedding semantic, fused (v4.8.0+; keyword-only before)
Requires LLM to operate Yes (extraction + default embeddings) Yes (extraction/dedup) No — indexing/embedding is local ONNX; decision memory needs no LLM at all
Self-hostable, fully offline Yes (Docker server) Yes (Graphiti + self-hosted graph DB); Zep Cloud itself is not Yes — everything under .neuralmind/, air-gap installable
Team/cross-agent portability Per-deployment store Per-deployment graph Git-portable: .neuralmind-team-memory.json, markdown export
Code-retrieval / progressive disclosure No No Yes — L0→L3, ~800 tokens/query
Distribution pip/npm, Docker, hosted platform, OpenMemory (local MCP server) Graphiti: pip, self-hosted. Zep: hosted only PyPI, Docker, VS Code extension, MCP
License Apache 2.0 Apache 2.0 (Graphiti); Zep Cloud proprietary MIT (core); source-available commercial modules for the Team tier
GitHub stars (point-in-time) 65k+ Graphiti ~31k; Zep (examples repo) ~4.9k —

When to pick which

Pick Mem0 if: you’re building a conversational agent or consumer app and need it to remember user preferences, facts, or history across sessions — the “what did the user tell me” problem. NeuralMind has nothing to offer there; it has never seen a chat message.

Pick OpenMemory if: you want one memory of preferences, notes and facts shared across Claude Desktop, Cursor and other MCP clients on your machine, and its OpenAI-backed default setup is acceptable to you. It doesn’t index code, so it sits alongside NeuralMind rather than replacing it.

Pick Zep Cloud (or self-hosted Graphiti) if: you need entity memory with genuine temporal reasoning — “what was true, and when, and what superseded it” — typically for a customer-facing or multi-agent product tracking evolving facts about people or accounts. If self-hosting matters, note that’s Graphiti-plus-your-own-graph-DB, not “Zep” as commonly advertised.

Pick NeuralMind if: your agent operates on a codebase and the recurring cost is re-discovering that codebase’s structure, or losing the rationale behind past engineering decisions when the person who made them isn’t in the room. Nothing here competes with Mem0/Zep’s actual job.

Run NeuralMind alongside either if your agent does both: talks to users and edits code. They occupy different storage, answer different questions, and neither one’s presence changes what the other measures.

The honest caveats

See also