logoalt Hacker News

Show HN: Recall – Local project memory for Claude Code

93 pointsby mateenahyesterday at 9:05 PM61 commentsview on HN

Comments

mikeocoolyesterday at 11:13 PM

I apparently use Claude differently the most people who talk about using Claude on the internet.

I’ll typically have a bunch of short sessions over the course of a day. Anytime I start a task that isn’t going to very directly benefit from the existing context I start fresh.

I don’t find a lot of benefit in explaining the project overall to Claude — I’ve deleted a lot of that explanation from my Claude.md because it didn’t seem to impact much.

I typically start a task by pointing it to 1-2 files and giving it some explanation of what I want done, and it figures it out.

Basically never hit context window limits or compactions, and can’t remember the last time I hit a 5 hour or a weekly limit.

show 7 replies
serial_devyesterday at 10:04 PM

I might be missing out on something but I never had to explain my project. Just give it a task, or if you really want to, type it quickly, then you are good to go.

I can’t imagine this being worth optimizing. The issue is never that Claude can’t figure out what the projects is about…

Am I missing something or does this project not solve a problem most regular people have?

show 4 replies
cootsnucktoday at 4:01 AM

Hm, I just keep a folder called something like `status_docs/` in any project I work on and I create a new file in that folder any day I'm working on a project that's dated (e.g. `project/status_docs/2026_06_21_status.md`). It's basically a project diary that both me and the LLM can reference.

I have the LLM at some point in the day while working on the project create that file with all the relevant context. And then I'll periodically have it update that file (often before I compact the context window, or before I switch to a new task). And then I just have the LLM update it whenever I'm done working on the project for the day.

Then no matter what, if I come back that project again a day later, a week later, a month later, whatever – I just literally point a fresh session at the most recent status doc to help both me and the LLM orient ourselves to the work at hand. What's really nice too is having it reference the status docs from previous days to help orient it for creating the new status doc for the current day.

I've been doing this informally for probably over a year now, and have started formalizing it so I do it with every project. It's been a big help to me personally given all the context switching between projects I've been doing more and more since using AI coding tools.

SubiculumCodeyesterday at 10:02 PM

Sometimes its good to start fresh. LLMs need large context restart's sometimes so they can better identify holes that they become blind to.

show 1 reply
felixlu2026today at 3:00 AM

The hard part with project memory isn’t saving more stuff, it’s deciding what not to trust later. Stale plans and failed debugging guesses can quietly poison an agent pretty fast.

anigbrowlyesterday at 11:49 PM

I use Deepseek and just as it to generate a state.md file with a summary of the project every time I've reached a goal or milestone. I then take a few minutes to edit this and add in or take out details. Between token pricing and generous cache discounts This has proved very efficient so far, I reset every few hours of work and bypass the muddle of having too many priorities or over-extrapolation from un-nuanced instructions I gave at an earlier stage.

I do think that this project is interesting in several ways - prioritizing privacy, minimizing spend, and using objective semantic markers to sift and consolidate the key takeaways from long sessions. I'd like to try it on my cline project history. But while it would make a great recording of project history, I wonder if a lot of it doesn't end up detailing blind alleys the project went down and had to back out of.

Generally when this happens I feel that it's due to vague specification on my part, or avoiding architectural decisions I didn't want to deal with and implicitly inviting the model to implement a lowest-common-denominator solution.

comrade1234yesterday at 9:57 PM

IntelliJ handles this for you. Basically it sends half your project to Claude even if you're asking some question about Star Wars.

show 1 reply
tt_devyesterday at 9:41 PM

How does this beat a Session specific README?

intothemildyesterday at 10:31 PM

I think the majority here have stated the same... That CLAUDE.md or AGENTS.md effectively do this. Either that or the readme.

The only tip I can give is that your skill that builds or wraps up work. You should have it update those files if anything has changed.

Claude/Agents files shouldn't be bloated, but should imho act as a basic amount of context on the project so your agent and skills can pick up and go, with even the most basic initial prompt.

show 1 reply
aubreykilianyesterday at 11:49 PM

I have a documentation vault in my repo, organised using Obsidian (bases, wikilinks, frontmatter, etc), and accessible using obsidian-cli (and related Claude skills, thanks kepano). I started the repo agreeing with Claude the structure and front matter of documents and how to edit and read, all stored in a markdown file in the vault, and a specific instruction in the CLAUDE.md file on when and how to access it. Any updates require consistency sweeps. Any decisions made and agreed during implementation of new features get added to the vault. It's been amazing how I just don't need to explain the project anymore. An empty context and a few sentences on what I'd like to spec next and the LLM finds what it needs in the vault.

show 1 reply
recklessyesterday at 9:52 PM

Doesn't Claude have memories like Codex?

show 1 reply
rabbitlordyesterday at 11:35 PM

With all due respect, this github repo looks really like an AI-generated project.

giancarlostoroyesterday at 9:41 PM

I never have to because I use a ticketing system the model goes through in addition to a CLAUDE.md file with a summary, including vision, goals, non-goals etc

show 3 replies
gsteyesterday at 10:20 PM

CLAUDE.md is already a good system for context window management for all the same reasons that version control management of code is good.

And keeping a local copy of everything you ever told Claude in your context window is bad for the same reasons keeping a local copy of your code called My_Code_v3_final.zip is bad.

doolsyesterday at 10:10 PM

If I need context for a session then that is output from a previous session, otherwise I find any “memory” functionality cumbersome.

I saw /graphify recently which cuts down on exploration cost and seems more appealing (although I haven’t tried it yet)

coherentponyyesterday at 11:27 PM

My employer is counting token usage, so explaining my project between tokens isn’t necessarily a bad thing. I am clearly a more productive engineer because of it \end{sarcasm}

alansaberyesterday at 10:05 PM

Nothing wrong with a toy project.

cadamsdotcomyesterday at 10:30 PM

Exciting to see hooks used for automation.

But if I may, the need to manually update the context is a huge hurdle.

Automation like this is limited unless no human has to remember it. So perhaps you can save context during the PreCompact and Stop hooks.

folaystoday at 12:01 AM

I was tired of seeing "--resume"^W loose so much context. [edit: not --resume, I meant a new session using project memory]

I had the idea of an oracle/apprentice. The idea was that the new session would learn from the old session, like a tutor.

I asked Claude to code a program, so that the old session would launch in loop, being the "oracle", and the new session would use it to connect to the oracle, to ask it questions.

So when I'm doing that, I'm seeing the two Claude sessions discussing between them. It's fun seeing the "apprentice" asking follow-ups questions.

The mechanism (on a Linux machine) is relatively simple : I asked Claude to code a Go tool, to use an abstract socket (\0claude-handoff-<projectname>), and specified that whichever is the first to successfully listen (no EADDRINUSE) becomes the "listen()er/accept()er" and that the second becomes the "connect()er".

So that establishing the socket in whichever order is independent of which of them is the oracle/listener.

I've put the mechanism in a global Claude rules. In the oracle when I'm a 98% usage of the 1M context, I just have to type "handoff <projectname> oracle", and to start a new session with "handoff <projectname> client".

And the "oracle" will loop on the tool (with a subagent, waiting indefinitely), the tool exits with a question on output, and re-call (with a subagent "handoff <projectname> answer") to give back the answer (which automatically waits for the next question).

And since the oracle is doing the call to the handoff tool in a subagent, when you see it answering, you can also type something along the lines of "hey please also precise to the apprentice <some specific information>".

The "transmission of knowledge which matters" is so much efficient, that ~2% of remaining context (20k tokens) is enough to transmis WAY MORE USEFUL information that any memory saving which would miss important informations.

It's not unexpected. It's like real-life. You may have an human put all informations that you want in some documentation, nothing can replace a phone line from the new human to the previous human for specific follow-up questions.

Tho one of the mattering rule specificity is to precise that the oracle should always include in this response the level of confidence in the answer, like if it is certainty/guess/hypothesis.

It's fun seeing the two Claudes discussing like two colleagues. I guess you could also ask Claude to code the tool to instead connect on a localhost IRC server.

I think that if you want this tool, you just have to c/c my text into a new Claude session and to tell it "I want this too, please code it, please also setup the global rule".

zihotkiyesterday at 10:13 PM

Are there any benchmarks/evals to back the claims? Or how do you know that it helps reducing waste?

show 1 reply
drivebyhootingyesterday at 10:24 PM

Why would you want a simple summarizer instead of frontier AI doing the summarization for you?

show 1 reply
hbarkayesterday at 10:10 PM

Willing to try this but the author missed that Claude also has memory.md

show 1 reply
dimitrios1yesterday at 9:55 PM

The question I find myself asking very often these days: Is this better than asking claude to do the same things the plugin/repo does?

SwellJoetoday at 2:20 AM

Another day another "memory" system for a tool that cannot ever have memory. LLMs have context, and the more you fill that context with unrelated junk, the worse they perform.

johnwheeleryesterday at 10:19 PM

How is this different than just using a resume?

defytonofficialtoday at 1:42 AM

[flagged]

SadErntoday at 12:41 AM

[dead]