- Save everything to disk. Index it or store in vectorDB.
- Search the storage for similarity based on the new prompt
- include any finding with the new prompt as system/user prompt
(or if you find the exact answer skip the llm call)
I like that this stays local instead of depending on a hosted service. One thing I've noticed while building LLM applications is that memory becomes much more valuable when it's easy to inspect and edit manually. Are you planning to support semantic search later, or is the goal to keep everything deterministic and text-based?
Yes, ctx is the closest cousin here. I actually linked it in my top comment.
This causes a very similar itch, but we went a slightly different route regarding some implementation details
Secrets: The ctx README mentions saving the text as is and warns about the need to review the output data before publishing. deja explicitly removes known secret templates at the indexing stage (replacing them with tags like [redacted:aws-key]).
Syncing: It looks like ctx is getting ready for a cloud beta to be shared by the team. Actually, I just wanted something local and free that I had full control over, so deja does P2P syncing through your existing SSH settings.
Recall that deja has a session startup feature that automatically introduces a bit of context when a new agent is loaded, instead of relying solely on manual search.
Both applications solve the same annoying problem by simply optimizing for different workflows :)
My particular interest in deja was that I found a combination that I couldn't find on this list: zero dependencies, zero LLM calls, verbatim text search, proactive secret cleanup and P2P synchronization over SSH.
We are entering the era of personalized software. I have something similar but I'm not trying to promote or make money with it. I somewhat prefer it stay off the radar so I don't feel the need to cater to other people's feature requests and make it more complex than what I want.
Hi HN. I built deja after watching Claude Code and Codex debug the same problems more than once.
The annoying thing was that the answer usually already existed somewhere in my old sessions. My records were stored on the disk for months (~3.3 GB). It wasn't easy to find them manually and the new agent session had no idea what the other agent had already found out.
deja indexes the transcripts that Claude Code, Codex, and opencode already write. On my corpus, the initial index takes about 10 seconds and warm searches are 7-9 ms.
There are 3 ways to get the memory back: a normal CLI search, an MCP tool (agent can query it directly) and a SessionStart hook that automatically injects a bit of relevant project context.
The feature I built this for:
deja sync ssh <host>
It moves new memory between machines using the existing SSH setup. Secret data is deleted during indexing and checked again before exporting.
My setup is a laptop and a mac mini without an interface. The agent can work on the mini all night, and in the morning I extract its memory. Then the agent on my laptop will know what the mini tried, what broke, and what eventually worked.
I wanted deja to intentionally use a small approach: one binary code with zero dependency, no LLM calls, searchable verbatim text instead of generated summaries, and synchronization via your own SSH. It does not implement its own network transport; it just connects to the system ssh/scp.
You can install it via curl, brew, npx or go install, then run:
- Save everything to disk. Index it or store in vectorDB. - Search the storage for similarity based on the new prompt - include any finding with the new prompt as system/user prompt (or if you find the exact answer skip the llm call)
?
Or is there more to it ?
I'd lead with your differentiation. Is it the ssh?
This causes a very similar itch, but we went a slightly different route regarding some implementation details
Secrets: The ctx README mentions saving the text as is and warns about the need to review the output data before publishing. deja explicitly removes known secret templates at the indexing stage (replacing them with tags like [redacted:aws-key]).
Syncing: It looks like ctx is getting ready for a cloud beta to be shared by the team. Actually, I just wanted something local and free that I had full control over, so deja does P2P syncing through your existing SSH settings.
Recall that deja has a session startup feature that automatically introduces a bit of context when a new agent is loaded, instead of relying solely on manual search.
Both applications solve the same annoying problem by simply optimizing for different workflows :)
The annoying thing was that the answer usually already existed somewhere in my old sessions. My records were stored on the disk for months (~3.3 GB). It wasn't easy to find them manually and the new agent session had no idea what the other agent had already found out.
deja indexes the transcripts that Claude Code, Codex, and opencode already write. On my corpus, the initial index takes about 10 seconds and warm searches are 7-9 ms.
There are 3 ways to get the memory back: a normal CLI search, an MCP tool (agent can query it directly) and a SessionStart hook that automatically injects a bit of relevant project context.
The feature I built this for:
deja sync ssh <host>
It moves new memory between machines using the existing SSH setup. Secret data is deleted during indexing and checked again before exporting.
My setup is a laptop and a mac mini without an interface. The agent can work on the mini all night, and in the morning I extract its memory. Then the agent on my laptop will know what the mini tried, what broke, and what eventually worked.
There are other projects (cass, ctx, claude-mem):
https://github.com/Dicklesworthstone/coding_agent_session_se...
https://github.com/ctxrs/ctx
https://github.com/thedotmack/claude-mem
I wanted deja to intentionally use a small approach: one binary code with zero dependency, no LLM calls, searchable verbatim text instead of generated summaries, and synchronization via your own SSH. It does not implement its own network transport; it just connects to the system ssh/scp.
You can install it via curl, brew, npx or go install, then run:
deja install --all