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.
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.
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
| system | single-hop 6k | 32k | 64k | 262k | multi-hop 6k | 32k | 64k | 262k |
|---|---|---|---|---|---|---|---|---|
| Quartz | 96 | 87 | 93 | 86 | 65 | 63 | 58 | 44 |
| Letta | 85 | 68 | not run | not run | 24 | 9 | not run | not run |
| Quartz before the truth layer | 52 | 52 | 45 | 37 | 8 | 7 | 9 | 6 |
| Cognee | 44 | 27 | not run | not run | 8 | 3 | not run | not run |
| Mem0 | 2 | 7 | 11 | 10 | 0 | 1 | 1 | 1 |
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
- Every memory carries where it came from and when it was told.
- 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.
- The old version stays, with the window it held. Recall as of a date reads it back.
- 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.
- 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
| entry | score | judge | artifacts |
|---|---|---|---|
| Quartz | 95.1 (95.0 and 95.2) | gpt-4o, dated snapshot | kept |
| CORTEX V2.4 (September) | 90.0 | the same judge | kept |
| Mem0, Hindsight, Mastra (self-reported) | 94.4, 94.6, 94.9 | unpinned | none public |
| Exabase, agentmemory, Agent Zero, Chronos (self-reported) | 95.6 to 96.4 | unpinned; two used the answering model as judge | partial 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.
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.
- 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.
- 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.
- 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.
- 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.
- These are our measurements until a third party repeats them. The records, the harness patches and the per-question verdicts exist for that purpose.