BUILD NOTES / 001
Why I built Recall
Switching coding agents shouldn’t mean starting the conversation over.
You work through a problem, settle on an approach, and explain why a few alternatives won’t work. Then you open another tool, and that context stays behind. The code is there. The reasoning that got you there is harder to find.
That’s the problem I built Recall to address: keeping useful context available across the tools working on the same project.
I wanted a few things from it. Memory should stay on my machine. It should work across coding agents. And searching my own history shouldn’t require an API key or another hosted service.
Recall reads the session history that supported tools already save locally and brings it into one SQLite database. It makes that history searchable and gives connected agents a way to retrieve relevant context and record decisions. A decision made while working in one tool can become useful context in another.
The distinction between history and decisions matters. A conversation might contain several approaches that went nowhere before reaching the one worth keeping. Saving the transcript is helpful, but being able to find the decision and the context around it is what makes that history useful later.
Recall combines keyword and semantic search with signals such as recency. That gives it multiple ways to find something, whether you remember an exact term or just the general idea. It also supports project-scoped decisions, so context can stay connected to the work it belongs to.
I kept the core architecture small: a Go binary, SQLite, and a local embedding model. There’s no separate database server to operate. After the initial model download, the default retrieval path runs locally without network calls or an API key. Optional features that use hosted models are separate and require their own credentials.
That matters to me because coding conversations can contain a lot more than code. They include architecture discussions, internal details, unfinished ideas, and explanations of why something failed. I wanted the memory layer to work without requiring those conversations to be uploaded to another service.
There’s still work to do. Retrieving a relevant conversation doesn’t guarantee an agent will interpret it correctly. Decisions become outdated. Some context deserves to stick around; some should fade. Those are engineering problems worth continuing to work on.
But the goal is straightforward: spend less time rebuilding context and more time using what’s already been learned.
Recall is open source under the MIT license. If you move between coding agents and find yourself explaining the same project decisions repeatedly, take a look at the repo.