Open source · MIT
Your AI's memory,
boring on purpose.
Essentially, a folder of markdown files.
Hand it anything: a meeting transcript, an article, a rambling voice note. It gets imprinted: normalised into separate markdown files on your disk, each one typed, tagged, and linked to the others. One note per person, per project, per decision, per event.
Ask three weeks later and the answer comes back from those files. Plain code finds them, and the model reads only the handful it returns. Works today with Claude Code and Gemini CLI.
Paste that line once. After that your assistant runs imprnt for you, so it is the last command you type by hand.
two separate sessions, three weeks apart
You: Here is my 1:1 with Boris from this morning. [paste the transcript] You: how did the parallel run go over the weekend? Boris: read path is clean. Two hundred million requests, zero mismatches. Writes are the problem, we are still at forty milliseconds p99 against twelve on the old stack. You: is that a blocker or a nice-to-have? Boris: blocker. Checkout calls it synchronously. At forty we would push the whole page over budget and support would feel it inside a day. You: so June 30 is dead. Boris: June 30 was always optimistic. I want two more weeks of numbers before I sign anything. If the writes come down we cut over mid-July. You: let us say July 15, gated on the parallel-run numbers. If the p99 is not under twenty by then we slip again and I will take that to Lena. Boris: agreed. I will own the cutover. Priya already has the dashboards, she is adding a write-latency panel this week. You: anything you need from me? Boris: nothing. Just do not let anyone add scope before the fifteenth.
imp: Filed it. Wrote three notes: people/boris-carter --- type: person team: platform role: staff engineer owns: ["[[projects/access-platform]]"] tags: [work, access-platform] summary: Owns the access-platform cutover. Signs off on the parallel-run numbers. --- # Boris Carter Owns [[projects/access-platform]] end to end. , updated projects/access-platform --- type: project status: active owner: "[[people/boris-carter]]" updated: 2026-06-11 tags: [work, access-platform] summary: Cutover moved to July 15, gated on the parallel-run numbers. --- # Access platform cutover > superseded by [[events/2026-06-11-boris-1-1]] ~~Cutover on June 30.~~ Cutover July 15, after two weeks of parallel-run numbers. with the new cutover date, and the meeting itself as events/2026-06-11-boris-1-1 --- type: event date: 2026-06-11 participants: ["[[people/boris-carter]]"] project: "[[projects/access-platform]]" status: enriched --- # 1:1 with Boris, 11 June ## Decisions - Cutover moves to July 15, gated on the two-week parallel run. - Boris owns it. Priya owns the dashboards. .
three weeks later
You: What did we decide about the access-platform cutover?
imp: From your notes: the cutover moved to July 15, once the two-week parallel run clears. Boris owns it. The earlier June The old line is kept, not deleted: > superseded by [[events/2026-06-11-boris-1-1]] ~~Cutover on June 30.~~ So the vault can always show you what it used to say, and what replaced it. date is superseded.
Nothing carried over between the two sessions except the files on disk.
How it works
The model imprints it.
Math finds it later.
A model can do almost anything, so almost everything got built on one. Wrap ChatGPT, call it an AI product, ship it, take the investor money. That worked while tokens were cheap.
That is not the case anymore. I put a personal-assistant setup on my work laptop. It burned 30,000 tokens before I typed a word, because it had loaded every skill and every MCP server up front. I was paying per token, so I started thinking twice before asking anything. An assistant you are afraid to use is not an assistant.
the model imprints the source: splits it into separate notes, writes each summary, picks tags and synonyms, links people and projects.
plain code ranks every note with the BM25 algorithm and hands back the few that match, best first.
So imprnt splits the job in two. Imprinting takes a model.
Finding does not need one.
Keyword search has one famous weakness. You search for a synonym and nothing comes back. We fix it while writing, not while searching. The model records the synonyms and the other names a thing goes by, so the note about Boris Carter also matches a search for Boris. Rename him and the old name stays on the note.
Every search after that runs BM25. It is a ranking formula from 1994, and Lucene and Elasticsearch still run it today. It counts how often your words appear, weighs rare words heavier, and puts a word in the title above the same word buried in the body. There is no index to refresh, so a note you edited by hand in Obsidian a minute ago is already findable.
Every session pays about 200 tokens: one short note saying the vault exists and naming its two commands. A session that only asks questions never pays more. A session that files a note reads the filing rules first, about 7,000 tokens, paid once.
That is why imprnt is a command line tool and not an MCP server. An MCP server loads its tool descriptions into every chat by default. You pay for those before you ask anything.
Does it work
Check it yourself.
64.2% on LoCoMo. A person scores 87.9%.
LoCoMo is the benchmark this kind of tool is rated on. 1,540 questions about conversations that ran for months, written by the paper's authors.
It asks the awkward ones on purpose: facts spread across several sessions, questions about when something happened, and questions with no answer at all, to catch a system that invents one.
Each conversation is read once and filed. Every answer comes only from the notes, never from the original text.
the LoCoMo paper and dataset1,540
questions across ten conversations, written by the paper's authors
32.1%
what the paper's own AI baseline managed on the same questions
0
models involved in finding the notes. That step is plain arithmetic.
You: What went wrong with the double charge in April?
imp: A retry on charge creation had no idempotency key, so some customers were charged twice. It cost trust with Bramble Plumbing and two smaller accounts, and billing-v2 became the quarter's priority because of it.
$ imprnt recall "double charge billing" --limit 5
5 of 10 matches, BM25-ranked. No model in this step.
- 3.73 mistakes/2026-05-double-charge-incident.md
- 3.20 orgs/bramble-plumbing.md
- 2.50 projects/billing-v2.md
- 1.75 events/2026-05-18-eng-planning.md
- 0.09 people/tom-decker.md
You ask in plain language and the agent runs the search itself. Hover any file to read it.
I have used imprnt every day for almost half a year, building it and living on it at the same time.
Work and life in the same folder.
What lands on disk
Swap the assistant, keep the memory.
Every note is a markdown file. It opens with a small typed header that code can read, then the prose you actually read.
Every person and every project gets a note of its own, and the other notes link to it.
Your own editor can edit the notes, Obsidian included, because a vault is plain markdown with ordinary wikilinks.
Fix a note by hand and the next search picks it up.
Notes you already have come in the same way: the model reads them once and files them.
Change a fact and the old line is struck through with the new one stamped beside it, never silently overwritten. When a new note contradicts one you already have, imprnt holds it back and asks you which is right.
the file behind the demo answer
---
type: project
status: active
owner: "[[people/boris-carter]]"
updated: 2026-06-11
tags: [work, access-platform]
summary: Cutover moved to July 15, gated on the parallel-run numbers.
---
# Access platform
Cutover is July 15, gated on the two-week parallel-run numbers. [[people/boris-carter]] owns it.
Cutover is June 20.
> superseded by [[events/2026-06-11-boris-1-1]]
Start your vault with one pasted line.
Open source, MIT licensed, and yours end to end.
People who enjoy re-introducing themselves to their AI every morning should not install this.