Quartzby ATERNA

Memory for agents that keeps its facts straight.

Quartz is the memory layer behind ATERNA's agents. Each person gets a store of their own. Recall takes a fifth of a second. When a fact changes, the new one wins and the old one is kept with its date. All of it measured on the public tests, side by side with the memory products in the field.

95% on the long-conversation test, dated judge 87 to 96% on facts that change, side by side 0.20 s recall at 65,000 memories

Every agent in production forgets. The ones that remember get it wrong.

Forgets the person

Between one call and the next, the agent starts over. The customer repeats their name, their order, their history. Most memory products fix this part: they store the conversation and search it.

Mixes then with now

You moved in June. The agent still has March. Stored conversations hold both addresses and the reader picks one. On the public test for this, the products we ran return the current fact less than a third of the time.

Invents when it has nothing

Asked about a thing it never heard, an agent with search results in front of it answers anyway. Quartz tells the reader, per question, when no memory mentions the thing asked about.

Measured, not promised.

Every number on this page was measured by ATERNA between October 30 and November 3, 2026, on the benchmarks as their authors published them, with the method written next to it. Where a rival appears, it ran on the same harness with the same reader and the same scorer.

Long-conversation memory, judged 0% LongMemEval, 500 questions over long chat histories, two runs. The benchmark's judge pinned to a dated model, every artifact kept. The only score at the top of that board with a dated judge.
Facts that change: the current one returned 0% Single-hop average on the public conflict benchmark, same harness and reader as the rivals. Before the truth layer: 52%. The strongest product we ran: 77%.
Recall from one person's 65,000 memories 0s Median with real text and real vectors. The database path is 55 ms of it; the rest is the embedding provider's round trip. Four callers at once: p95 0.33 s.
A new person's own memory, provisioned 0s Own database, own key, nothing shared. Recall time unchanged from 1 to 50 people. A deleted memory came back 0 times in 300 tries.

Facts that change: who returns the current one.

MemoryAgentBench, conflict resolution. A long history states a fact, then restates it with a new value, sometimes through a chain of changes. The question asks for the current one. Every system below ran on the same harness with the same reader and the same scorer, each rival as its makers ship it.

Percent of questions answered with the current fact. Single-hop: the fact changed once. Multi-hop: a chain of changes to follow.

Single-hop

Multi-hop

Table view, every size
systemsingle-hop 6k32k64k262kmulti-hop 6k32k64k262k
Quartz9687938665635844
Letta8568not runnot run249not runnot run
Quartz before the truth layer525245378796
Cognee4427not runnot run83not runnot run
Mem02711100111

How the truth layer answers "what did we know on a date"

A fact is a claim with a history. A newer claim about the same thing closes the older one's window instead of deleting it. Drag the date.

What this is in production

  1. Every memory carries where it came from and when it was told.
  2. A fact stored as a claim replaces the older claim about the same thing under a lock, so the stale version never reaches the reader.
  3. The old version stays, with the window it held. Recall as of a date reads it back.
  4. Facts that share a person or a thing are linked, and a recall can follow those links two steps out, which is how chains of changes are answered.
  5. A memory that was deleted is tombstoned by its text. Sending it again writes nothing. In 300 tries, none came back.

Long conversations: what was said across hundreds of sessions.

LongMemEval, 500 questions over long chat histories, scored by the benchmark's own judge. The Quartz score uses that judge pinned to a dated model, with every artifact kept, over two runs. The field's published scores use judges of their own choosing; two of the highest used the same model that wrote the answers, and one was tuned on the test questions.

Table view
entryscorejudgeartifacts
Quartz95.1 (95.0 and 95.2)gpt-4o, dated snapshotkept
CORTEX V2.4 (September)90.0the same judgekept
Mem0, Hindsight, Mastra (self-reported)94.4, 94.6, 94.9unpinnednone public
Exabase, agentmemory, Agent Zero, Chronos (self-reported)95.6 to 96.4unpinned; two used the answering model as judgepartial or none

Then and now: the previous release against Quartz.

The same tests on the same machine where the previous release could run them. CORTEX V2.4 runs ATERNA's fleet today; Quartz is the engine that replaces it.

The right conversation is found firstLongMemEval, 500 questions, first result
Long-conversation answers, judgedLongMemEval, the same dated judge
The current version of a fact that changedour stale-fact battery, 600 questions; V2.4 has no truth layer
Recall, warmV2.4: live agents before the fix, a few thousand memories; Quartz: 65,000 memories

One person at a time.

Every person an agent serves gets a memory of their own: their own database, their own key, nothing shared. That is a product property no memory product publishes a number for, so here are ours.

Recall time as people are added

Median recall for person one, 10,000 memories each, as the server holds 1 to 50 people.

What the isolation proof covers

  • A new person provisioned in 118 ms median, 156 ms at the slowest, over 50 people.
  • 50 requests with another person's token leave that person's database untouched, proven in both orderings.
  • The door fails closed on a missing or malformed setting before any socket opens.
  • A deleted memory re-sent 300 times never came back. Restore is atomic.
  • Logs carry no secrets and no memory text.

How we measure, and what we will not claim.

  1. The benchmarks are run as their authors published them: MemoryAgentBench at a pinned commit with its own scorer; LongMemEval with its judge pinned to a dated model and every artifact kept, so any run can be checked question by question.
  2. Rivals run from their shipped code on the same harness, with the same reader model and the same scorer as our runs, with their own settings as shipped. Letta completes a run on this harness only with a small fix to its search tool; its number is Letta plus that fix. Mem0 as shipped stores nothing from this benchmark's fact lists, so it scores at the level of a model with no memory, which agrees with the benchmark authors' own number for it.
  3. The conflict numbers are one run per system with a sampling reader; a single size can move about ten points between runs. Letta and Cognee ran the two smaller sizes; their larger sizes are not measured yet.
  4. On LongMemEval, two runs of one configuration differ by seven to eleven questions from the reader's own randomness, so that board resolves about two points. We quote 95, the mean of two runs, and not the best run we have.
  5. These are our measurements until a third party repeats them. The records, the harness patches and the per-question verdicts exist for that purpose.