AI Agent Memory Frameworks: Mem0, Zep, Letta Compared
What a Memory Framework Provides
Building a memory system from scratch means assembling the full pipeline: deciding what to extract, embedding and storing it, implementing retrieval, and maintaining the store over time. A memory framework packages all of this into a single library or hosted service, exposing simple operations like add a memory and search memories while handling the machinery underneath. This lets a developer give an agent persistent memory in a few lines rather than building and operating the infrastructure themselves.
Beyond saving effort, a good framework encodes hard-won design decisions about extraction, deduplication, conflict resolution, and retrieval that would take a team months to get right independently. The tradeoff is that you inherit the framework's assumptions and its model of how memory should work, which is exactly why the differences between them matter. The frameworks below all solve the same core problem, the one laid out in how memory systems work, but they make different bets about the best structure for it.
Mem0: Scoped, Self-Editing Memory
Mem0 is an open-source memory layer designed to give agents persistent, personalized memory with minimal setup. Its defining ideas are scoping and self-editing. Mem0 scopes memory at three levels, the individual user, the current session, and the agent itself, so that information is attached to the right context and retrieved appropriately, keeping a user's long-term preferences separate from the transient details of one session. Underneath, it uses a hybrid store that combines vector search for semantic recall with graph relationships and key-value lookups, drawing on more than one representation rather than relying on embeddings alone.
The self-editing behavior is what keeps a Mem0 store lean. When new information arrives that conflicts with or duplicates an existing memory, Mem0 reconciles it on the spot, updating or merging rather than blindly appending, so contradictions and repeats do not accumulate. This is the continuous form of the consolidation discipline described in memory consolidation. Mem0 has become one of the most widely adopted standalone memory frameworks and has been chosen as the built-in memory layer for major agent platforms, which makes it a natural default for teams that want capable personalization memory without committing to a particular storage philosophy.
Zep: Temporal Knowledge Graph Memory
Zep takes a different bet: that the most important thing about memory is how facts change over time. It builds memory on a temporal knowledge graph, representing what the agent knows as entities and relationships, each stamped with when it became true and, if applicable, when it stopped being true. This structure, explored more generally in knowledge graphs for agent memory, lets Zep reason about the evolution of facts rather than treating every stored statement as eternally current.
The payoff shows up in domains where the history of a fact matters as much as its present value. If a customer changes plans, a patient changes medications, or a portfolio changes holdings, Zep understands the state change and can answer questions about both the current situation and what was true before, instead of returning a stale fact alongside the current one as a simple store might. This makes Zep especially well suited to financial services, healthcare, and other long-running enterprise workflows where getting the timeline right is essential. It is offered both as a hosted service and in a self-hostable form, fitting the deployment considerations in local versus cloud memory.
Letta: Memory as an Operating System
Letta, which grew out of the MemGPT research, makes the most architecturally distinctive bet: that the agent itself should manage its own memory the way an operating system manages limited physical memory. In Letta, context is organized into tiers. A small core of in-context memory holds the most important current information, a recall tier holds recent conversation history, and an archival tier holds the large body of older information kept outside the context window. The crucial twist is that the language model decides what moves between these tiers, using tools to write new facts into its core memory, page older details out to the archive, and pull archived information back in when it becomes relevant.
This makes memory management an active behavior of the agent rather than a passive service it calls. The model effectively edits its own memory in pursuit of the task, much as a program requests and releases memory as it runs. Letta also provides a stateful runtime that persists this memory across sessions, so the agent is a long-lived entity rather than a fresh instance each time. The approach offers fine control and is well suited to research and to long-horizon agents that must manage large, evolving working sets, at the cost of more moving parts than a simple add-and-search memory layer. It is the most explicit embodiment of the idea that an agent should manage its own recall, a theme picked up in adaptive recall.
These three are far from the only options, and the space is moving quickly. Other frameworks and managed services approach the same problem from different angles, some emphasizing developer ergonomics, some graph-based recall, some tight integration with a particular agent stack. The three covered here are worth understanding first because they map cleanly onto the three big design choices in agent memory: how to scope and clean memory, how to handle facts that change, and how actively the agent should manage its own context. Once those tradeoffs are clear, evaluating any newer entrant becomes a matter of asking which of these bets it makes and whether that bet matches your needs.
How to Choose Among Them
The right framework follows from what your application most needs from memory. Choose Mem0 when the priority is personalization with low friction: an agent that should remember users and improve across sessions, with a store that stays clean automatically and integrates easily into an existing stack. Its scoped, self-editing model fits assistants, support agents, and consumer products where the goal is for the agent to feel like it knows the user.
Choose Zep when the evolution of facts is central, when your domain involves states that change and you must reason correctly about both the present and the history. Its temporal graph is the differentiator in finance, healthcare, and complex enterprise workflows. Choose Letta when you want the agent to actively manage a large working set over long horizons and you value fine-grained control over how context is used, particularly in research settings or sophisticated autonomous agents. A practical way to decide is to identify your single hardest memory requirement, whether that is effortless personalization, correct handling of changing facts, or active management of a big context, and pick the framework built around that need. Whichever you choose, the setup follows the same shape covered in how to set up memory for AI agents.
It is also worth remembering that a framework is not always necessary. For simple needs, a vector store with good metadata and a little custom logic can be enough, and adopting a full framework adds a dependency and a set of assumptions you must live with. The frameworks earn their keep when memory is central to the product and the pipeline they provide would otherwise take significant effort to build and maintain. As with every memory decision, the discipline is to match the tool to the genuine requirement rather than reaching for the most capable option by default.
Mem0, Zep, and Letta solve agent memory in three different ways: Mem0 with scoped, self-editing memory over a hybrid store for low-friction personalization, Zep with a temporal knowledge graph for domains where facts change over time, and Letta with operating-system-style tiers the model manages itself for long-horizon control. Choose by identifying your single hardest memory requirement, and remember that for simple needs a plain vector store may serve better than any framework.