Which systems do what

Capability Index

Every reviewed system against the seven capabilities the atlas judges by, filterable, generated from the same frontmatter as the reports.

The comparative report says what each system does. This page answers the other question — which systems actually have X — for the seven mechanisms whose absence causes a failure the system cannot detect.

Marks come from each report's frontmatter, so this table cannot disagree with what a report declares. It cannot independently confirm what a report declares: the frontmatter is the reviewer's assertion, and while a growing share of marks carry an evidence record naming the file and symbol they rest on, the rest are checked for shape rather than re-derived from the tree. A tick means the mechanism was found in code at that report's pinned commit; a dash means it was not found, which is different from impossible, planned, or badly built. The definitions, the evidence threshold, and why these seven rather than others are on the atlas rubric.

Read the of 7 column as a shape, not a score. Around half of the systems here carry none or one — the exact share is computed per report and printed in the strip at the top of each one — so a low number is the ordinary case rather than a poor one, and most of these columns are outside what most of these systems set out to do. A local coding agent that never claimed to arbitrate truth is not failing by carrying one mark. The column is worth sorting on only when you already know which mechanism you need.

Filters combine with and — "tombstone and scope enforced" is the question worth asking, and it is the one a per-column view cannot answer.

Which one you need depends on where your memory breaks, and the seven do not intervene at the same place. Three of them guard the write, two describe what the store is able to say, one guards the read, and one is the test that keeps the other six honest. Read as a row of seven equal boxes they look like a scorecard; read against the path a memory takes they are seven different answers to seven different questions:

Diagram — where each of the seven marks sits on the write, store and read path — three guard what enters, two what the store can say about it, and two what comes back
Diagram source
%% caption: where each of the seven marks sits on the write, store and read path — three guard what enters, two what the store can say about it, and two what comes back
flowchart TD
    EV["Evidence<br/>messages, files, tool output"] --> WR{"Write path"}
    WR --> ST[("Store")]
    ST --> RD{"Read path"}
    RD --> CX["Context<br/>what the model sees this turn"]
    CX -.->|"that is wrong, forget it"| CO["Correction"]
    CO --> WR

    T["Rejected-value tombstone<br/>refuses the value, not the row"] -.-> WR
    H["Human review surface<br/>a person adjudicates, not just views"] -.-> WR
    A["Append-only mutation audit<br/>what changed, in the system's own store"] -.-> WR
    TS["Explicit trust state<br/>may this be acted on"] -.-> ST
    BT["Bi-temporal validity<br/>true-when, apart from recorded-when"] -.-> ST
    SC["Scope enforced in retrieval<br/>the filter that is actually applied"] -.-> RD
    NE["Negative retrieval assertion<br/>a committed test that this must not come back"] -.-> RD

The loop is the part worth staring at. A correction re-enters through the same write path that created the belief, which is why a mark on the write side is worth more than it looks: it is the only place that sees both the original claim and the attempt to reassert it after you thought it was gone.

Has

SystemTombstoneTrust stateBi-temporalScopeAuditReviewNeg. evalsof 7
7layermem——————✓1
A-MEM———————0
a-memory—✓—✓✓—✓4
Acontext———✓———1
Google ADK———✓——✓2
Aeris——————✓1
agent-afk——————✓1
Context OS————✓—✓2
Microsoft Agent Framework———✓———1
Agent Memory Distillation———————0
Agent Memory (MythologIQ)✓—✓✓✓—✓5
AgentMemory for .NET—✓✓✓——✓4
Agent Memory Engine—✓—✓——✓3
OWASP Agent Memory Guard———————0
agent-memory-mcp——————✓1
Agent Memory on Supabase——✓✓———2
Agent Memory Techniques———✓✓——2
Agent-MemoryForge———✓✓—✓3
Agent Mesh—✓——✓✓—3
AgentWorkingMemory—✓————✓2
AgentDatabase—✓✓—✓—✓4
Agentic Context Engine—✓————✓2
Agentic GraphRAG Blueprint———————0
AgenticTrading———————0
AgentMemory——————✓1
agentmemory V4———————0
agentmemory————✓—✓2
AgentOS———✓——✓2
AgentRecall-X—✓—✓———2
AgentRT—✓————✓2
agents-memory——————✓1
AgentSwarms———✓———1
Agno———✓——✓2
AI Agent Automation———✓——✓2
AI Agents in Depth———————0
AI Brain Starter——————✓1
AI Maestro———✓———1
ai-memory——————✓1
AI Workflow Workspace———————0
AideMemo———✓✓—✓3
aigent-OS——————✓1
AIMAOS———————0
aimee✓✓✓✓✓✓✓7
AIPass———✓———1
AKB———✓✓——2
All Agentic Architectures———————0
ALMA———✓✓——2
AlphaOne ai-memory—✓——✓—✓3
ALTK-Evolve——————✓1
Always-On Memory Agent———————0
anatid——✓✓✓—✓4
Anda Brain———✓——✓2
Anda DB✓✓✓✓✓—✓6
Animus—✓—✓✓—✓4
ANOLISA Agent Memory————✓—✓2
AnythingLLM———✓———1
AOCI-CODE———————0
arc-code———————0
archeus—✓————✓2
Archiver RAG———————0
Arcon—✓—✓✓—✓4
ArcRift———✓——✓2
Areev—✓✓✓✓—✓5
ARGO———✓——✓2
Argos✓✓✓✓✓✓✓7
Artesian—✓—✓✓—✓4
Project Athena——————✓1
Atomic Agent——————✓1
Attune AI————✓—✓2
Aukora Kernel———✓✓—✓3
Aura—✓——✓——2
AuraOS———————0
AURORA——————✓1
Auto Company—————✓—1
AutoBot—✓—✓✓—✓4
AutoGen———————0
autoharness——————✓1
AutoMem——✓———✓2
AutoResearchClaw———————0
basemode————✓—✓2
Basic Memory——✓✓———2
beads——————✓1
Beever Atlas—✓—✓——✓3
Beevibe———✓———1
Bifrost———————0
Binder———————0
BitterBot Desktop—✓——✓—✓3
Brain—✓✓✓✓—✓5
brain-mcp————✓—✓2
brain.md————✓—✓2
BrainAPI————✓—✓2
breadcrumbs✓—✓✓✓✓✓6
Brigade—————✓✓2
Browsentic———✓—✓—2
Buzz———✓———1
bwmem—✓✓✓✓——4
ByteChef———✓———1
ByteRover————✓✓✓3
Cambium————✓——1
CAMEL———————0
Cashew————✓—✓2
CASS✓✓————✓3
Caura✓✓✓✓✓✓✓7
chitta-field—✓————✓2
Chump——————✓1
Cindy——————✓1
Citra Decision System—✓—✓✓✓✓5
claude-code-memory-setup———————0
Claude Engram (mlapeter)——————✓1
claude-mem-lite——————✓1
Claude-Mem———✓✓—✓3
Claude Self-Reflect———✓✓——2
total-agent-memory——✓✓——✓3
Claudest (claude-memory)———————0
Claudinio Brain—✓✓———✓3
ClawMem——✓—✓—✓3
CLIO——————✓1
Cloud Alter Ego———————0
codemem———✓———1
CodeWiki-Plus—✓————✓2
Dev MCP Suite——————✓1
Cognee-RS———✓——✓2
Cognee———✓✓—✓3
CogniCore—✓—✓———2
Cognis———✓——✓2
Cognitive Spatial Memory———————0
CogZ—✓————✓2
CommonGround Kernel———✓✓——2
Compartment——✓✓✓—✓4
WARNERCO Schematica——————✓1
Context Infrastructure———————0
Context Keeper—✓—✓——✓3
Context Mem———————0
Context Mode———✓——✓2
contextdb——————✓1
ContextMeld———✓——✓2
ContextStream MCP Server———✓———1
continuity v2———————0
Continuous Claude———————0
Corbell———————0
Core Memory—✓✓✓✓—✓5
CORE——✓✓———2
Cortana—✓—✓——✓3
cortex-engine————✓——1
Cortex Hub——✓✓———2
Cortex (Hypermnesia)—✓—————1
Cortex—————✓—1
CortexDB——✓—✓—✓3
Cortexes———✓——✓2
CortexGraph——————✓1
Cosmonapse———————0
Counterparts—✓——✓—✓3
CowAgent———✓———1
craft—————✓—1
Create Context Graph——————✓1
CrewAI———✓——✓2
Crystalline—✓✓✓—✓✓5
CSM————✓—✓2
CTX Cognitive Version Control——————✓1
ctx————✓✓—2
Cua———————0
Cyrene Agent—✓—✓✓—✓4
Daem0nMCP——✓—✓——2
Daimon✓✓——✓✓✓5
DeepCode———✓✓—✓3
DeepSeek Harness———✓——✓2
DeerFlow———✓———1
deja-vu——————✓1
Demarkus—✓—✓——✓3
Dense-Mem✓✓✓✓✓—✓6
Deus—✓———✓—2
Dexto———————0
DiffMem——————✓1
distill-kura——————✓1
DovSG———————0
DreamGraph—✓——✓——2
dsh-ai-memory———✓——✓2
dsh-auto-memory——————✓1
dsh-continual-harness————✓—✓2
dsh-layered-memory——————✓1
dsh-mneme————✓—✓2
dsh-mnemon——————✓1
Dynamics-memory———————0
EAN AgentOS——————✓1
ECC———✓——✓2
Echo Agent———✓✓—✓3
Edda————✓——1
EGC——————✓1
ELAI———✓✓—✓3
Elastic Atlas—✓✓✓——✓4
Elephantasm———✓✓——2
ELIOT Memory OS—✓—————1
elizaOS—✓✓✓——✓4
EmbodiedLGR———————0
eMEM——————✓1
Empirica—✓—✓✓——3
Empryo———✓———1
Emulo———————0
Engram Alpha—✓✓—✓—✓4
Engram Cognitive———✓✓—✓3
Engram Format—✓—————1
Engram MCP (edg-l)—✓————✓2
engram (NickCirv)——————✓1
Engram Provable—✓✓✓✓✓—5
Engram———✓———1
Engraphis—✓✓✓✓✓✓6
enquire-mcp——————✓1
EverOS———✓——✓2
EvoX Genesis———✓—✓—2
Exomem———✓✓—✓3
flow———————0
FARM———————0
FAVA Trails—✓—✓—✓✓4
feltstate—✓✓—✓✓✓5
FERNme✓✓——✓—✓4
Fidelis Memory——✓✓——✓3
Fireweed MCP✓✓✓—✓—✓5
Flair———✓——✓2
Flatbread Proof——————✓1
Flowix———————0
Flowly—✓✓—✓✓✓5
FluctlightDB———————0
Forgetful———✓✓—✓3
funes———————0
fx———————0
gaius—✓————✓2
Cortex (gambletan)———✓——✓2
Gas Town———————0
GBrain—✓✓✓—✓✓5
Generative Agents———————0
GenericAgent———————0
GENOME—✓✓✓✓—✓5
gh-aw——————✓1
Gini Agent—✓✓✓——✓4
GitLord———————0
GitMem——————✓1
Global Agent Memory—✓——✓—✓3
GMEOW—✓——✓—✓3
GMR—✓——✓—✓3
Gobii———✓———1
Gomaa————✓—✓2
GoodAI LTM——————✓1
GoodMemory✓✓✓✓—✓✓6
Gortex—✓—✓——✓3
Graft————✓—✓2
Graphify——————✓1
Graphiti——✓————1
Graphnosis————✓✓✓3
GraQle———✓✓—✓3
GrayMatter————✓—✓2
Grok Build———✓——✓2
growmos———————0
The Agent Guild—✓————✓2
Habitus AI————✓——1
Halofy———✓✓✓✓4
Harness Evolution as Learning—✓——✓——2
Harness²———————0
Hatchdoor———✓——✓2
Headroom—✓—✓———2
Heimdall——————✓1
Helix AGI——————✓1
Helm——————✓1
Hermes Agent—————✓✓2
Hermes Fleet Memory———✓———1
Hestia—————✓✓2
Hexis—✓✓—✓——3
Hillock——————✓1
Hindsight———✓✓—✓3
Hipocampus———————0
Hippo✓✓✓✓✓—✓6
HippoRAG——————✓1
HiveMind (projectmentor)✓———✓—✓3
Hivemind (Activeloop)———✓——✓2
Hivemind———✓——✓2
HOLO-Invariant————✓—✓2
Holographic———————0
holomem——————✓1
Honcho———✓——✓2
Huiran-cerebro———————0
HUMANs————✓—✓2
Hungry Hippa—✓—✓———2
HUQAN—✓—✓✓✓✓5
Hy-Memory————✓—✓2
Hyperconsciousness———✓✓—✓3
Hypha—✓—✓——✓3
iai-pme————✓—✓2
Icarus—✓——✓—✓3
IHMT———————0
INITE Brain—✓✓✓——✓4
Inno Agent—✓————✓2
inspeximus✓✓✓—✓—✓5
Intaris———✓—✓—2
invalidate—✓—✓✓✓✓5
Janus-Graph——✓————1
Jaz———————0
Joplin——————✓1
Juggler———————0
Jumbo Context————✓—✓2
kaeru————✓—✓2
Kage—✓———✓✓3
Kagura Memory Cloud———✓✓—✓3
KAISEN———————0
kannaka-memory—✓✓———✓3
KektorDB——————✓1
ken————✓—✓2
Kept——————✓1
KGLite——————✓1
Khabeer—————✓—1
Khoj———✓——✓2
Kimetsu—✓✓—✓—✓4
Kipi System—✓————✓2
Kiro Crew—✓—✓✓✓✓5
kiwi-mem———✓———1
Kleos—✓—✓✓—✓4
Klypix MCP—✓————✓2
Knowl—✓✓✓✓—✓5
knowledge-worker—✓——✓✓—3
kube-coder———✓✓—✓3
Kwipu———————0
LangChain———————0
LangGraph——————✓1
LangMem———✓———1
LeanKG———✓——✓2
Lemmalog——————✓1
Lerim——✓✓—✓✓4
Leteo————✓—✓2
Lethe————✓—✓2
Letta———✓——✓2
LEVH——————✓1
light-mem———————0
LightMem———————0
second-brain (LindaHaviv)———✓——✓2
Linggen Memory——✓✓——✓3
Lint-AI———✓——✓2
Living Mind Cortex———————0
LivingFeed———✓———1
LlamaIndex———————0
LLM Memory———————0
LWC—✓✓—✓—✓4
llm-wiki-memory———✓—✓—2
Lobu——✓✓✓✓✓5
local-memory-mcp——✓✓——✓3
Logseq———————0
LongtermMemory-MCP——————✓1
LoongFlow———————0
Lore✓✓—✓—✓✓5
LoreKit———✓✓——2
Loreweave——✓—✓—✓3
lossless-context-mcp————✓—✓2
M-flow———✓——✓2
m3 Memory——✓✓✓—✓4
Magic Context—✓—✓✓——3
MagiCore——✓✓✓—✓4
Mainline————✓—✓2
Apache Maka————✓—✓2
MAMA—✓✓✓✓—✓5
Mandalore———✓✓—✓3
MARM Memory✓——✓—✓✓4
MarsNMe———————0
Marvis———————0
Mastra Observational Memory——✓✓✓—✓4
MateClaw———✓——✓2
Matrix OS——————✓1
Maximem Synap SDK———————0
Mazemaker———————0
MCP Context Server——————✓1
MCP Memory Service—✓————✓2
MCP-Memory———✓✓——2
MegaMemory————✓—✓2
Mem0———✓✓——2
mem9———————0
Memanto———✓———1
Memary———————0
Membase———✓———1
Membrane———✓✓—✓3
MemBukkit——————✓1
MemContinuum—✓——✓—✓3
MemCP———————0
Memento———✓———1
Memento———✓———1
MeMesh✓✓—✓—✓✓5
MeMex Zero-RAG———————0
Memex——————✓1
memex—✓———✓✓3
MemHarness———————0
MemHop———✓——✓2
memhtml—✓✓———✓3
memini——✓———✓2
Memlayer———————0
MemLedger—✓——✓—✓3
MemMachine———✓——✓2
Memmy✓✓——✓—✓4
memo✓—✓—✓—✓4
Memobase———✓———1
memoir-cli✓——✓✓—✓4
Memoir———✓✓——2
KITE by Memoket——————✓1
MemoMind———————0
Memoose——✓—✓—✓3
Memora Engine——————✓1
Memora✓———✓—✓3
MemoraX Code——————✓1
Memori———✓——✓2
Memorix—✓—✓—✓✓4
Memorizer———✓——✓2
Memory Compiler✓————✓✓3
Memory Engine——✓✓✓—✓4
Memory Garden—✓———✓✓3
MemoryIndustry—✓————✓2
memory-lancedb-pro——✓✓——✓3
Memory Palace—✓———✓—2
memory-project✓———✓✓✓4
memory-ts—✓—————1
Memory Vault—✓—✓——✓3
MemoryBank———————0
MemoryBear———✓✓——2
MemoryOps AI—✓—✓✓✓✓5
MemoryOS———————0
MemoryWhale—✓———✓✓3
MemOS———✓———1
mempalace-code——✓✓——✓3
MemPalace——✓✓✓—✓4
MemSearch———————0
Memseek—✓—✓✓✓✓5
memsem✓✓✓✓✓—✓6
Memspec—✓✓✓✓✓✓6
memtomem——✓✓——✓3
memU——————✓1
memv——✓✓——✓3
Memvid—✓✓—✓—✓4
Mengram—✓—✓———2
MenteDB——✓✓——✓3
MentisDB——✓—✓—✓3
MerchantBench———✓✓—✓3
Mercury Agent———————0
Meridian———————0
MetaClaw—✓—✓✓—✓4
MeTTaClaw———————0
MEX————✓—✓2
MGI-Mind—✓——✓—✓3
Midas——✓✓✓—✓4
Mimir✓—✓✓✓✓✓6
MIND-Mem—✓—✓✓✓✓5
Mind——————✓1
MindCache—✓—✓———2
MindMemOS———✓——✓2
Mindreader——✓✓✓——3
MineContext———————0
mini-AGI———————0
Minta———✓✓—✓3
MIRA✓——✓——✓3
MIRIX———✓——✓2
Mnemo Cortex—✓——✓—✓3
Mnemo——————✓1
Mnemon————✓—✓2
mnemonic——————✓1
Mnemopi——✓———✓2
mnemora—✓✓✓——✓4
mnemory———✓✓✓—3
mnemos——————✓1
Mnemosyne (Nabzx)————✓—✓2
Mnemosyne✓—✓✓✓—✓5
mnesio——✓✓✓——3
mnestic——✓—✓—✓3
Mobius———✓———1
MoltBrain———✓———1
Moltis———————0
Monet—✓—✓✓—✓4
MOTH Memory Template——————✓1
Munder Difflin————✓——1
Muninn—✓—✓—✓✓4
MuninnDB—✓✓✓✓—✓5
MuscleMemory✓✓—✓✓✓✓6
MUSE Brain———✓——✓2
mushroomdb———✓✓—✓3
nano-brain——————✓1
nanobot———————0
NanoClaw———✓——✓2
Project N.E.K.O.———✓✓—✓3
NemoClaw———————0
Neo Agent Brain (Memory Core)———✓——✓2
Neo4j Agent Memory——✓✓———2
NEOTH✓✓————✓3
NeuraKeep——✓✓✓—✓4
NeuralMind—✓——✓—✓3
NeuroCA———————0
Neuron———✓——✓2
NeuroStack——————✓1
NexusMem✓—✓✓✓—✓5
no_human✓✓—✓✓✓✓6
Nocturne Memory———✓———1
NodeDB——✓✓——✓3
NOOA Memory———✓——✓2
Noosphere✓——✓✓——3
NornicDB——✓✓✓——3
NouGenShards——✓—✓—✓3
Nova AI✓✓——✓✓✓5
npcpy—✓—————1
Nuum———————0
Cortex (Obelyth)———✓—✓✓3
obsidian-mind———✓✓—✓3
obsidian-wiki——✓———✓2
Octobrain———✓———1
Octop Memory—✓—✓✓✓✓5
Octopoda———✓✓——2
ODS———————0
Off Grid AI Desktop———————0
oh-my-hermes—✓———✓✓3
OKF Agent Memory————✓——1
Ollama———————0
OMEGA——✓✓✓——3
OmegaClaw——————✓1
Omi—✓—✓✓—✓4
OmniClaude——————✓1
OmniIntelligence—✓——✓—✓3
OmniMem✓——✓——✓3
OmniMemory———————0
OmniNode Knowledge Base———————0
Hats—✓———✓✓3
Ontofelia—✓—✓——✓3
OntoMem———————0
Open Brain———————0
open-bridge———————0
open-cowork——————✓1
Open Graph Memory—✓—✓——✓3
Open Knowledge Format———————0
Open Second Brain✓✓—✓✓—✓5
Open WebUI———✓———1
OpenAkashic—✓————✓2
OpenClaw———✓———1
OpenCode Memory———✓——✓2
OpenCode Session Recall——————✓1
OpenCode———————0
OpenCompany———✓——✓2
OpenConcho———————0
OpenContext———————0
OpenExecutive———✓——✓2
OpenHands SDK———✓———1
OpenHuman——————✓1
OpenKB————✓✓—2
OpenLore———✓✓—✓3
OpenMake LLM✓——✓✓——3
OpenMasq——————✓1
LongMemory—✓✓✓✓——4
OpenSRE——————✓1
OpenViking———✓———1
openvurp————✓✓✓3
OpenWolf——————✓1
OpenWorker———✓✓—✓3
OpenYak———✓———1
OpenZync Core✓—✓✓✓—✓5
OptMem————✓——1
Orbital✓———✓✓✓4
Orgtree——————✓1
Ori Mnemos——————✓1
OriginTrail DKG V10———✓——✓2
Osiris—✓——✓—✓3
osk-system——————✓1
ostk-recall—✓✓✓✓——4
Otis——————✓1
Ouroboros—✓—✓✓—✓4
Outworked———✓———1
OwnMem✓✓——✓✓✓5
SageOx CLI———————0
Palazzo————✓——1
Paperclip———✓✓——2
Papez———✓——✓2
Particles✓✓——✓✓✓5
Pensyve—✓—✓——✓3
people-context———✓——✓2
Perseus Vault✓✓✓✓✓✓✓7
pi-jarvis——————✓1
pi-memory——————✓1
Pi———————0
PLTM———✓———1
PLUR—✓✓✓✓—✓5
PLUR1BUS✓✓✓✓✓—✓6
Pluribus—✓✓———✓3
PMB——————✓1
Polyphony ARC———————0
pond——————✓1
Portable Handoff——————✓1
Potpie—✓✓✓✓—✓5
PowerMem———✓———1
Prime Agent———✓✓—✓3
Prism———✓——✓2
Prismer Cloud——————✓1
PRO-LONG——————✓1
Pro Workflow———✓———1
Project Golem✓——————1
projectmem——————✓1
PromptX———————0
Provem✓✓✓✓✓✓✓7
Pydantic AI Harness———✓——✓2
Qwen Code—————✓✓2
Qwen MM Plugins——————✓1
RAGFlow Memory———✓——✓2
RainBox✓✓———✓✓4
RCK✓—————✓2
RE-call✓✓✓✓✓✓✓7
Reasonix—————✓✓2
Recall—✓————✓2
RecallNest✓———✓—✓3
RecallWeave—✓——✓—✓3
Recollect✓✓✓✓✓✓✓7
REDCELL—✓—✓——✓3
Redis Agent Memory Server——————✓1
Reflexion———————0
Rekal———✓——✓2
ReMe——————✓1
remem-mcp✓✓—✓——✓4
remem—✓✓✓—✓✓5
Remembra——✓✓✓—✓4
Rememora—✓——✓—✓3
Reporecall——————✓1
repowise✓✓——✓✓✓5
Resonant Mind———————0
Resonant———————0
Retrodict———————0
aios (rexleimo)—✓✓✓✓—✓5
RightMemory——————✓1
ripwire-rs———————0
ripwire——————✓1
RisuAI—————✓—1
Roampal Core——————✓1
RRSI———————0
ruflo——————✓1
RunarForge———✓———1
RushDB———✓——✓2
Rust Self-Learning Memory——————✓1
RuVector———————0
SAGE✓✓—✓✓✓✓6
SAGE Novelty Gate———✓✓——2
Scope Recall✓✓✓✓✓✓✓7
Screenpipe———————0
Second Brain—✓—✓——✓3
Second Me—————✓—1
SelMem——————✓1
Selvedge————✓—✓2
Semantica——✓—✓—✓3
Serena———✓———1
SESA———————0
Session Recall——————✓1
ShellBrain✓✓—✓✓—✓5
ShisaD—✓—✓✓✓✓5
Shodh-Memory————✓——1
Sibyl Memory———✓—✓✓3
sift-kg———————0
Signet AI——✓✓✓—✓4
Silica———————0
SillyTavern———————0
SilverBullet———————0
SimpleMem—✓—✓✓——3
sivtr———————0
SiYuan———————0
Skales———————0
SkillCorpus✓—————✓2
Slowave—✓—✓——✓3
Smriti—✓✓—✓—✓4
SmythOS SRE———✓——✓2
Somnigraph—✓——✓——2
Sonder Runtime✓✓✓—✓✓✓6
Soul of Waifu————✓——1
AMITY / Archangel-8———————0
Spector—✓✓———✓3
sqlite-memory-mcp✓—✓✓✓—✓5
Stash—✓—✓———2
state-memory-mcp————✓——1
Statewave—✓✓✓——✓4
Stella✓✓——✓✓✓5
Strands Agents———✓——✓2
StrataGate—✓—✓——✓3
Sugar——————✓1
SuperLocalMemory——✓✓✓——3
Supermemory———✓———1
Swafra———————0
SwarmAI—✓———✓✓3
Syke———————0
Synapse——————✓1
Synapse Layer———✓——✓2
T-Mem———————0
AgentOS (Tanglies)———✓———1
Task Orchestrator——————✓1
teamai-cli———✓——✓2
TeleMem———✓———1
Chronotope——————✓1
TemporalStore———————0
Temvera——✓—✓—✓3
TencentDB Agent Memory———✓✓——2
TERSE Memory———————0
Tessellum———————0
The Librarian—————✓✓2
Theurian—✓✓✓✓—✓5
ThoughtDAG——————✓1
Throughline—✓————✓2
Tideline——————✓1
TideMind✓✓——✓—✓4
Tigerless agent-memory——✓———✓2
TigrimOSR———✓—✓—2
Titen✓✓✓✓✓——5
token-optimizer———✓——✓2
Token Savior———✓——✓2
TokenMizer—✓—✓✓—✓4
TraceDecay——————✓1
Tree Ring Memory———✓——✓2
Trilium Notes———————0
TrueForge———✓✓—✓3
TrueMemory—✓————✓2
Tycho——————✓1
Ulpia——————✓1
UltraContext———✓✓—✓3
Universal Memory Engine✓✓—✓✓✓✓6
Memos———✓——✓2
Uteke———✓——✓2
Utopia✓✓✓✓✓✓✓7
Velantrim Crystal✓✓——✓✓✓5
VelesDB——————✓1
Veracium—✓—✓✓✓✓5
Verel✓✓✓✓✓✓✓7
Verimem—✓✓—✓—✓4
Vestige——✓—✓——2
Vibe Cognition————✓—✓2
vir✓✓———✓✓4
virtual-context——✓—✓—✓3
VirtualWife———————0
VISTA———————0
vLLM Semantic Router———✓——✓2
emem (Vortx AI)——✓—✓—✓3
Voyager—————✓—1
Waggle——✓✓——✓3
Waku Agent———————0
Wax——✓—✓—✓3
Weave—✓——✓——2
WeKnora✓✓—✓—✓✓5
Wenlan✓—————✓2
widemem.ai————✓—✓2
Windie Sandbox——————✓1
WindieOS———✓———1
windvane——————✓1
Wordcell——————✓1
XERJ——✓—✓—✓3
xiaoO———————0
yacmemo———✓—✓✓3
yantrik-mind———✓——✓2
Yantrik OS——————✓1
YantrikDB Engine—✓✓—✓—✓4
yantrikdb-hermes-plugin———✓——✓2
yantrikdb-mcp——————✓1
YantrikDB———✓✓——2
YesMem———✓——✓2
YourMemory———✓✓——2
Z-Waif———————0
ZCode———————0
ZenBrain———————0
Zep———✓———1
zer0dex——————✓1
ZeroStack——————✓1

Reading the counts

A system with six ticks is not better than one with two. It is differently shaped. Memory Engine governs access more thoroughly than anything else here and knows nothing about whether a memory is true; OptMem carries one mark and is among the most carefully reasoned designs in the corpus. Several systems carry a dash on a capability their design deliberately does not need.

Three things the counts show that the reports individually do not:

Read-path scoping is common; correction is not. Over half the atlas applies a scope key when retrieving. 68 systems of 757 carry a value-level tombstone. That gap is the atlas's central finding, and it is visible here in one column pair.

Trust is usually a number, not a state. Most systems collapse "how sure am I" into "how findable is this" — see decay and reinforcement.

Negative evidence is almost never tested. 486 repositories of 757 assert that particular material must not appear — the assertion every scope, deletion and correction claim in this atlas ultimately rests on. Read together rather than one at a time, they split cleanly, and the split says more than the count. A full re-score on 2026-08-08 found 27 of the 37 assert about a read path — 20 about a particular value, 7 about a scope boundary — while ten assert about a projection, a preamble, a summarization, a file or a write. All ten are real committed tests. Only the 27 are negative retrieval assertions.

Seven asserted a boundary at that reading: that a principal cannot retrieve another principal's material. Five are worth describing. MIRIX's test_filter_tags_db.py creates a memory under one scope, searches under another, and asserts the id is absent. Aukora Kernel does it better — an unrelated principal reads ok: false, a subject whose delegation manifest was revoked reads ok: false, and the owner reads "the secret" in the same block, so the denial is proved targeted rather than a blanket failure. EverOS does it at the endpoint: two owners, the same query string, assert c_ids.isdisjoint(m_ids) plus a positive control on each side, repeated for two agent owners sharing a keyword. CrewAI does it over a path hierarchy: three records under /other/scope, /crew/crew-a/inner and /crew/crew-b/inner, a Memory opened with root_scope="/crew/crew-a", and an assertion that recall returns exactly one result and it is the rooted one. CSM asserts the degenerate case the other four leave implicit: searchMemories called in project mode with no project id must return [], with the assertion message spelling out the intent — "project mode without a project ID must fail closed".

All five also hold scope_enforced. Their negative suites are therefore tests of a capability the same system already claims — which is worth having, and is not evidence about deletion or correction.

Twenty asserted about content at that reading: that particular material must not surface to anyone entitled to search, regardless of who is asking. Eight show the range. open-cowork's service tests assert that a session deleted while its extraction is queued leaves nothing searchable; its forbiddenHits eval field, which would name what a query must not return, is populated by no committed case. Verel's tests/test_memory_negative_eval.py asserts a REJECTED fact is invisible to every recall path — a suite built from the red-team finding that produced its tombstone. Project N.E.K.O.'s test_hard_filter_drops_negative_score asserts that an entry the user disputed is dropped before the rerank, the docstring giving the reason: "Stage-2 would either reinforce the dispute or, worse, cancel it." Helm is the weakest of them: its supersede case asserts recall returns exactly one active row and fails with "recall returned old value" if the replaced one appears. The value is still in the table and still readable through history, so this is a genuine read-path exclusion — but it covers replacement only. Helm's other two exits, forget and the confidence-floor prune, are hard deletes with nothing asserted about them, which is the case where a re-derivation would actually reinstate the value. agent-afk's it('excludes superseded facts from search') asserts the same about its FTS path, and Agno is the same shape against a judged verdict — a retired fact absent from live_facts() while both rows remain in the record. The Pydantic AI Harness asserts it about the prompt rather than the store: test_delete_existing_is_content_free requires a deleted body to be absent from the tool result, a search test requires all('secret' not in repr(match)) under a character budget, and two injection tests require a superseded line and a stale fact not to appear in the captured model context. Graphify adds the cheapest version of the shape and one nobody else has: test_negative_only_node_absent_from_sources asserts that a source cited only by answers marked dead_end appears in none of the three lesson lists — a source that failed rather than a value that was rejected.

Only the content kind probes the question the atlas is actually asking. A boundary test proves the filter works; a content test proves a value that was rejected, disputed or forbidden stays gone. Within that kind the sharpest cases raise a distinction the rest do not: a test that a superseded value stays hidden is cheap, because the row is still there to be filtered on. The expensive assertion is that a value the system destroyed does not come back — which requires something durable to check against, and is why the tombstone column and this one keep appearing together.

Two further things the joint reading shows. The positive control — asserting that the denial is targeted rather than an empty result — appears in Aukora and EverOS and is absent from the rest, and a negative test without one passes just as well when retrieval is broken. And the assertion shape is reachable from ordinary engineering practice: every boundary case above is an access-control test that happens to assert about recall rather than a result of memory research, and N.E.K.O. reached the content form from a companion app, where re-raising something the user asked you to drop is a product failure rather than a data-quality one.

Near-misses

Strictness is what makes the counts mean anything, and it hides the interesting cases. The ones worth knowing:

  • claude-mem has "tombstones" that synchronize row deletion across stores — not a rejected-value tombstone.
  • Mercury grades confidence three ways and has no discrete state.
  • Most trust-state systems stop short of the state that matters. Verel, RainBox, Gini and memsem carry an explicitly rejected state; Magic Context qualifies on stale and flagged.
  • RainBox's RetrievalEvent and Atomic Agent's FIFO-capped vote_events are logs of use and feedback, not of mutation.
  • ai-memory, nanobot and Basic Memory get an audit trail from git, which is a real mechanism and a different one.
  • Memanto resolves conflicts with a human and then deletes without a tombstone — the most carefully reasoned correction in the atlas, and the next extraction pass may undo it.
  • Daimon refuses the checkpoint write on a canonical key — NFKC-folded, casefolded, whitespace-collapsed, confusables translated — so casing and homoglyphs do not defeat it and a paraphrase does; a re-assertion test pins the refusal, and only a human unforget lifts a forget.
  • memsem is the near-miss in the other direction: its suppression table refuses the write and is keyed on the normalised value, and nothing but a human rejecting a candidate ever writes a row into it, so its own automatic supersession path reaches the store ungated.

What these systems are built on

The seven marks above are about mechanisms. This is the other question: what these systems store memory in, and which retrieval channels they run. Both come from each report's frontmatter, so the table cannot drift from the reviews.

It is a census, not a recommendation. It says what the corpus contains and nothing about what works: the largest row is a plurality of under half, and no row here has been shown to retrieve better than another. Choosing an engine from a distribution is the mistake this table is most likely to cause.

Two rows need reading before the big ones. Delegated to the adopter is a system whose storage is an adapter its user binds — a framework's BaseStore, an ORM, "application-chosen" — so it has no engine of its own to count. No arm named is a review whose retrieval summary named neither a lexical, vector nor graph channel; that is a gap in the review, not a system without retrieval.

Stored in Systems Read off code Retrieval arm Systems Read off code
Files on disk 386 342 Lexical 559 499
SQLite 377 325 Vector 489 423
Postgres 142 123 Graph 243 215
Delegated to the adopter 47 34 No arm named in the review 84 58
Graph database 43 39
Chroma 36 33
In-process only 35 28
Qdrant 28 21
Embedded key-value 24 20
LanceDB 24 19
Redis 17 12
Milvus 10 8
FAISS 9 7
MongoDB 8 6
DuckDB 5 5
Pinecone 2 1
Dolt 2 2
Elasticsearch 2 2
Weaviate 1 1
TepinDB 1 1

Counted across 757 reports, each of which may name more than one store. The Read off code column is the part of each row confirmed against the tree at the pinned commit: 644 of 757 reports have been read that way, and the other 113 were derived from the review's own summary lines and are labelled seeded rather than reviewed. Read the first number as what the corpus says about itself and the second as what has been checked.