> Curator / blog
memory, nars, ranking

Curator ranks memory by truth, not by what's loudest

Most AI memory hands back whatever's newest or most similar, burying the standards you actually hold. Curator ranks recall by NARS truth, so a durable decision outranks this morning's status note.

Ask an AI agent what it remembers about your project and watch what surfaces. Usually it’s whatever you said most recently, or whatever sits closest to your query in embedding space. Both are popularity contests, and in both, the loudest memory wins — not the truest one.

So a one-line status note from this morning (“migrated the auth service”) outranks a standing architectural decision from eight months ago (“never put a JWT in localStorage — ever”). The note is newer; the decision is buried — even though the decision is the thing an agent must not violate. Rank by recency and you optimize for noise. Rank by similarity and you optimize for whatever happened to be phrased like the question.

Ranked by truth, not by volume

Curator scores recall on a different axis. Every memory carries a truth value — a (frequency, confidence) pair, in the tradition of NARS, the Non-Axiomatic Reasoning System — and recall is ranked by its expectation, a single number combining the two. The effect is that durability, not recency, decides what rises:

MemoryFrequencyConfidenceSurfaces
An architectural decision you keep reaffirmingHighHighFirst
A preference you’ve rejected the same way repeatedlyHighHighFirst
A one-off status updateLowLowSinks
A temporal fact that’s since gone staleLowFallingSinks

None of this is a table of hand-tuned weights. The expectation is computed from the evidence each memory has actually accumulated, and your own feedback moves it: mark a recall helpful, misleading, or outdated and that signal revises the truth value over time. The ranking you get is the one your corrections have shaped — not a magic constant someone picked.

There’s a specific kind of noise this kills. When a coding session is compacted, the agent emits a long “This session is being continued from a previous conversation…” recap. Taken in at face value, those recaps are long and recent enough to dominate every later recall. Curator filters them at intake by default, so a machine-generated summary never outranks a decision you actually made.

It tells you what changed since you left

Memory that only plays back the past is a trap on an old project, because the past is full of assumptions you’ve outgrown. When you return to a project, Curator computes a resume diff — a plain, deterministic read of the record, no model in the loop — and surfaces two things that matter on re-entry:

  • Decisions you’ve since superseded that this code still follows. The standard moved on; the code didn’t. Now you can see the gap.
  • Standards you set in other projects since you were last here. The defaults you raised elsewhere apply before you touch anything, so an old project inherits your current judgment instead of freezing you at the version of yourself that started it.

Local, encrypted, and it reasons

Curator runs on your machine. Its stores are SQLCipher-encrypted — a separate archive, working memory, and feedback database — and it’s reached over the Model Context Protocol (stdio, SSE, or streamable-HTTP), the same way your agent reaches the rest of its tools. And it doesn’t only store and retrieve: it reasons over the memory graph, deriving durable relationships between memories and persisting them, so the connections outlive the session that found them.

Where it stands

Curator is v0.3.0, pre-alpha — APIs and on-disk layouts may still shift, no semver promises before v1.0. It pairs with TheAuditor for code ground truth, Warden as the agent that acts with memory already in context, Arbiter for orchestration, and BenchProctor for proof.

More on the idea behind it in the memory category nobody shipped and resume with what you know now.

Get early access — we’ll email when the pre-alpha is ready for you.

Was this useful?