Adapted from a Reddit comment I made.
I think people say “memory” a lot, and really they mean RAG or querying a database. I typically refer to memory as the ability of an agent to respond to its environment, which includes but is not strictly “recall”.
The distinction I like to make is that memory is composed of two things: state, and recall.
Recall is what most people think of when they think of memory in AI systems. This is stuff like semantic search, databases, knowledge graphs, Zep, mem0, cognee, whatever.
Recall is very important. It is how you search a massive, detailed store of information that you can use to contextualize a query or problem.
Recall is only half of the puzzle.
The other half is state. State is how you modify an agent’s perspective to fit the world it operates in – this can be as simple as an understanding of the database schema, or as complex as a persistent, detailed report of social dynamics on Bluesky.
Recall is a bucket of arbitrary information. State is the “cognitive interface” that you use to make that information valuable.
Letta agents are designed to tackle both. State was how we began – agents can modify their own persistent state so that they can carry a general sense of their environment ahead. This is what makes Letta agents so remarkable to work with.
We also provide all of the tools you would need for expensive recall. This includes our native archival memory (semantic retrieval), but also MCP as a first class citizen. Anything you can expose to your agent as a tool can be used as an avenue for recall.
The TLDR: state is hating me because I punched you. Recall is the details of the specific event of me punching you.