Why I keep agent memory in Hindsight
I run more than one coding agent. Claude Code, Grok, Pi, sometimes something else next month. If memory lives inside one of them, the next one starts from zero. That is the whole problem.
So I looked at the usual options. Mem0. The memory that ships with Claude. A local plugin called claude-mem. A homegrown RAG pile. I ended up on Hindsight, self-hosted at my own URL, with one bank per repository. This is why.
What I actually need
I do not need a chatbot that remembers my favourite colour. I need last week’s decision about a DNS zone to show up when I open the same repo in a different agent.
That means three things.
The store has to sit outside the tool. Claude’s own memory dies the moment I am not in Claude.
Projects have to stay apart. A fact from a client repo must not leak into a side project because the embedding was close enough.
Write and read have to be boring. If I have to remember to call add() after every useful turn, I will forget.
Mem0
Mem0 is the name everyone knows. You send a conversation, it extracts facts, you search later. Hosted or self-hosted. A key in the environment and you are done. I still have that key sitting in my shell.
For a single product with a user_id it is fine. The model is “one bag of memories per user, maybe filtered by metadata.” That is not how I work. I have dozens of repos. Some are client work. Some are junk. They should not share a bag.
You can fake isolation with filters. Filters are soft. I have watched agents retrieve the almost-right memory from the wrong project often enough to stop trusting that.
Mem0 also wants to be called. The agent (or a wrapper) has to add and search. That works until you run three clients and each wrapper does it slightly differently. Then you have three half-filled stores.
I left it on for a while in Grok and barely noticed it. That is not a compliment.
The memory inside the tool
Claude remembers things now. Cursor does too. Convenient, and locked in.
The moment I opened the same repo in Grok, that memory was gone. I am not going to copy preferences into every product. And I do not want a vendor to own the only copy of “why this DNS record looks like that.”
Use the built-in memory for UI nits if you want. Do not put architecture in there.
claude-mem
Before Hindsight I ran claude-mem. Local observations, lots of them. It only existed for Claude Code.
When I switched, the database was still there. Tens of thousands of observations. Useful as a backup. Useless as a shared brain. A memory system that only one agent can read is a notes app with extra steps.
I turned the plugin off and kept the files. Hindsight is what I query now.
What Hindsight does that those do not
Hindsight is not a vector store with a nicer API. You retain raw material. It extracts facts, entities, and time. You recall later. You can ask it to reflect. In the background it consolidates overlapping facts into observations, so the bank does not just grow forever as a junk drawer.
The unit I care about is the bank. A bank is a hard wall. Memory in my_websites does not show up in gietmanic-networking unless I put it there. Tags can filter inside a bank. They do not cross the wall.
I run one bank per git repo, named after the folder. Claude, Grok and Pi all point at the same server. Open the repo, get that bank. No per-tool copy. No “I told Claude last week.”
I host it myself. MIT license, Postgres, an API key, a small box. If the SaaS goes away I still have the data. That mattered more than a leaderboard screenshot.
It is not free in the “zero ops” sense. Recall was slow until I stopped running the reranker on a tiny CPU. That was on me, not on the idea. Once that was off-box, it was fast enough that I stopped thinking about it.
The others, briefly
RAG is for documents you already wrote. It does not watch a session and keep the decision. I still use search over repos. That is not memory.
Zep and similar graph stores are built for long assistant chats. I am not building a companion. I am jumping between codebases.
Supermemory and the rest of the hosted “one memory for every AI” tools want to be the layer. I already have a layer. I just needed it to be mine.
Why Hindsight wins for me
Mem0 is easier on day one. Built-in product memory is easier on minute one. Neither survives the second agent or the second client project.
Hindsight does, because the memory is not inside the agent. It is a server with walls. I pick the wall with the folder I am in. Every tool I use can read and write that wall.
That is the conclusion. Not that Hindsight is the best memory product on a slide. That it is the only one I have used that still makes sense after I close the tab and open a different agent in the same repo.