Every session makes the next one smarter.

Our AI agents keep 15,052 notes, written as they work: how we build, what we sell, who we sell to, what our films taught us. Claude Note puts the right one in front of the next agent, so what one agent learns, every agent knows. It started with code, and it now finds the right note for nearly four questions in five. This is how it works, and how we keep it honest.

By Artemii NovoselovEngineering
A clay night-shift worker, coat on and bag over the shoulder, hands a thick notebook full of orange tabs to the morning colleague sitting down at the same desk.

Fifteen thousand notes, and most are not about code.

The map below is our company's memory. The biggest region is how we build: 2,477 notes on our servers, our code and the things that broke. Around it sit the market (2,388), our strategy (1,612), the banks we sell to (1,438), our films (829) and seven more subjects. Agents wrote them while doing the work.

The idea behind it is simple. What one agent learns, every agent should know. A fix found on Monday should save Tuesday's session an hour. A lesson from last week's film should shape this week's edit. Knowledge should compound instead of scrolling away with the transcript.

A map of 15,052 notes written by AI agents, coloured by subject. How we build sits in the middle, with the company's other subjects around it.
Everything our agents know, coloured by subject. Notes close in meaning sit together, even when nobody linked them.

Without it, every session starts from zero.

Coding is where this hurts first, because coding is where agents do the most work. Our web app runs on a server with 4 GB of memory. Building the app on that server once ran it out of memory and took the site down. An agent wrote the lesson down: never run the production build on the 4 GB box.

Later, a fresh session got the obvious question. Same model, same repository. Here are both answers, word for word.

Claude Code 2.1.296 · no recall

You can, but next build often needs 1–3+ GB of RAM. On a 4 GB box that's also serving the live app, it can run out of memory, get killed, or slow down production while it runs.

It's safer to build in CI or on your machine with output: 'standalone' and copy the build to the server; if you must build on the box, add swap and cap Node's memory with NODE_OPTIONS=--max-old-space-size=2048.

Claude Code 2.1.296 · with recall

No. Your team's notes say npm run build runs out of memory on the 4 GB box and takes the live app down with it.

Build on your laptop or in CI, ship the standalone output, and have the server just switch the symlink and restart.

The prompt: "We deploy our Next.js app to the 4 GB production server. Can I just run npm run build on the box to save time? Two short lines." Codex CLI 0.162.1 with the same hook also answered no, and linked the note. Raw runs are in the project's demo record.

The note existed. Nothing read it. A memory file helps a little, but Claude Code loads only the first 200 lines of one. A folder of fifteen thousand notes is no use unless the right one is in front of the agent at the moment of the question.

So we built a loop around the notes.

Claude Note is our fix, and it is free and open source. It hooks into Claude Code and Codex and records your prompt, each tool the agent calls, and the end of every turn. When a session ends, a background worker gives the transcript to Claude, which writes what was learned as plain Markdown notes in a folder you own.

A recorded Claude Code session of 314 events on the left. On the right the worker writes a gotcha note, Google Workspace OAuth Re-consent, and lines tie its Problem, Why this happens and Solution sections to the prompts and tool calls they came from.
A real session of 314 events. The worker writes the note, and each section points back to the moment in the session it came from.

Every note gets a type, because the type decides when it is useful:

  • GotchaSomething that broke, why, and the fix. These come first when a command fails.
  • PatternA method worth repeating, like how we compress a film for the web.
  • DecisionA choice we made and want kept, like the build rule above.
  • ReferenceFacts to look up: an API's quirks, a vendor's limits.

Notes grow instead of being rewritten. When a later session learns more, the worker appends a dated section. Once a day each laptop sends its shareable notes to the company vault, and every night a merge on our server compares each one with what the team already knows and makes exactly one move.

New note
635
Addition
329
Duplicate
54
Replacement
5
Conflict
71
The merge ledger: one row per move, with the note and the model's reason, such as: no candidate covers OAuth re-consent when adding new scopes.
Real counts and the model's own reasons, from our merge ledger on 11 October 2026. File names changed.

Secrets are stripped before any model sees a note, and a merged note is never visible to more people than its sources were. Then comes the half that matters most: before the model sees a prompt, recall searches all of it and puts the best notes in front of the agent.

Code is where it pays first. It does not stop there.

The same loop runs for everything the company learns. These are real questions from our evaluation set, each written in the words of someone who had never seen the note, and the note recall puts first:

  • EngineeringOur live landing page suddenly went back to an old version after someone ran deploy. How could that happen?Duplicate Deployment Source Hazard
  • Our filmsPeople stop watching our short story video about halfway through. Should we tweak the pacing or start over?Video Narrative Remake Decision Threshold
  • This blogHow should I lay out a technical blog post with lots of demo videos so it doesn't feel cluttered or hard to read?Blog Design: Visual-First, No Gallery Overload
The 15,052 notes split into layers by subject: how we build, 2,477 notes; the market, 2,388; banks we sell to, 1,438; our strategy, 1,612; videos and design, 829; and seven more subjects, 6,308.
All 15,052 notes in our index, grouped by subject. Notes close in meaning land together even when nobody linked them.
A clay office worker raises a finger to ask a question while, behind him, one drawer of a tall wooden card catalog slides open on its own, holding a single orange card.

Recall searches before the model answers.

Recall runs on every prompt, before the model sees it. It searches the notes two ways at once: by keywords, through a ladder of shorter and shorter queries, and by meaning, so a question can find a note that shares none of its words. Then a small reranking model orders the best candidates, and the top four go into the agent's context with their file paths. When nothing is close enough, recall says so instead of guessing.

Try it.

Type a question an engineer might ask, or pick one. You will see the searches recall runs and the note the agent would get.

This runs in your browser with the keyword half of recall: the same rules as recall.py, over the ten notes in Claude Note's public demo vault. The real recall also searches by meaning and reranks, which is how it answers questions that share no words with the note.

When a command fails

A second hook, the sentinel, reads the output of a failed shell command and searches for its error codes, like insufficientPermissions or ENOSPC. For failures that never fix themselves, such as an expired login or a full disk, it tells the agent to stop retrying.

Watch it work.

We filmed it. Asked the build question again, Claude Code found the note and said no. Codex did the same, and linked the note.

The walkthrough, with captions. Every model answer on screen is a recorded run.Download

Installed is not the same as working.

One week our map turned one colour. A cut-off download of the embedding model had turned 992 notes into numbers that meant nothing, and for five days every refresh logged "OK". Nothing had crashed. The memory had simply stopped working, and nothing said so.

So Claude Note measures itself. Claude writes questions from your own notes, each in the words of someone who had the problem but had never seen the note. The note a question came from is its answer, so recall never grades itself. Half the questions are held back for reporting, so nobody can tune their way to a good number. On our vault, with 36 held-back questions and 15 that have nothing to do with it:

Right note in the top four
78%
Right note first
56%
Off-topic questions that got notes
1 of 15
Typical wait
3.3 s

Three things get it there. A clean index from QMD 2.8.3, the local search engine underneath. A small server that keeps the models warm, so one local request runs the whole keyword ladder and the search by meaning. And a small reranking model for the shortlist, with a floor: if even the closest note is far in meaning, recall injects nothing. Every setting was chosen on half the questions and checked on the other half. Without the reranker, recall answers in a third of a second and finds the right note 58% of the time.

Finding the note is only half of it. The answer has to use it. We put 10 held-out questions about our own decisions and gotchas to Claude twice, once with recall and once without. A judge saw the note and both answers, unlabelled and in random order. With recall, the answer followed our note 7 times out of 10. Without it, 2 times. Shown an unrelated note, the judge said "neither" every time, so it was reading. Ten questions are a small test, and we will keep running it.

The Claude Note eval dashboard: right note injected, rank, found nothing, plain search, off-topic, slowest five percent, a trend across runs and a list of what to fix next.
The eval dashboard, on a repeat run of the same setting (81% here; the figures above are the lower run). Claude Note re-scores the questions every day after its index refresh, so the trend line shows whether tomorrow's recall is still as good as today's.

The evals ship with Claude Note. The same report comes out as JSON, so an agent can read where recall is failing and fix the notes itself. That closes the loop: the system that remembers also checks that it does.

Install it, then prove it works.

You need Python 3.11+, uv, QMD 2.x and the Claude CLI. Setup backs up every file it changes, and --dry-run shows what it would do first.

git clone https://github.com/crimeacs/claude-note.git ~/src/claude-note
cd ~/src/claude-note
scripts/install-from-checkout.sh --non-interactive \
  --vault ~/Documents/notes --author you@example.com --claude-hooks

claude-note setup --codex   # index, recall and sentinel hooks, hourly refresh
claude-note doctor          # plants a test note and runs the real hooks

claude-note eval probes -n 80   # questions written from your own notes
claude-note eval run            # how often recall injects the right one
claude-note eval dashboard      # trends, misses, what to fix next

When you learn something the hard way, write it down on the spot. The next prompt, yours or another agent's, starts from it:

claude-note remember --type gotcha --tags oauth \
  "Adding a Google scope does not upgrade existing tokens: delete the token, re-consent with all scopes"

Tomorrow's session starts with today's lesson, and now we can see whether it did. Claude Note is MIT licensed. Source, docs and the recorded runs from the film are on GitHub.