स्मृति apache-2.0 · open memory layer

a memory layer for agents

Memory that knows when.

Most memory layers store what's true. SMRITI also remembers what was true, and until when — facts are superseded, never deleted, with the validity window handed to the model at read time.

one sqlite file no postgres · no docker · no binary 4-channel fusion retrieval ~1.5k lines you can read in a sitting
query · "where does the user live?"
user lives in Hyderabad CURRENT
2026-012026-06-01today
ingesting…
the field · june 2026

Where SMRITI is built differently

The strong open layers landed within weeks of each other — Garry Tan's GBrain (Apr 5), Supermemory's fully-local pivot, and the established mem0 / Zep. This compares architecture you can verify by reading the code, not accuracy claims. Benchmarks get their own panel below, honestly.

Capability SMRITI GBrain Supermemory
local
mem0 Zep
full partial / gated none — honest read; SMRITI does not sweep every row (Zep matches on temporal; all match on openness).
head to head

Credit where due, gap where real

Each of these solved something genuinely — but the headline strengths deserve scrutiny too. Four rows per card: the strength, the strength challenged, the gap, and SMRITI's answer.

GBrain

garry tan · yc · mit
Postgres + pgvector
+
Their strength
Self-wiring typed knowledge graph with zero LLM calls for extraction, proven at 146k pages in Tan's own production agents.
The strength, challenged
"Zero-LLM" shifts the cost to you — the graph self-wires only inside operator-authored skills. 146k pages is one brain, curated by its own author. Headline accuracy comes from BrainBench — a benchmark GBrain wrote for itself.
!
The gap
Needs Postgres; you hand-author the markdown skills (no structure synthesised for facts that don't fit one); no as-of-date validity model; coupled to OpenClaw / Hermes.
SMRITI's answer
Same entity graph idea as one of four channels — but in a single SQLite file, framework-agnostic, with bi-temporal supersession GBrain doesn't model.

Supermemory

supermemory.ai · mit · local
one binary
+
Their strength
Claims #1 on LongMemEval, LoCoMo & ConvoMem. One-binary local mode, RAG + connectors + embedded agent. The mature, full-stack option.
The strength, challenged
#1 is self-graded — own judge, own splits, the pattern by which every vendor tops a board at once. The open local binary is days old; the track record belongs to the closed cloud product.
!
The gap
A large system you trust rather than read; temporal handling and "forgetting" are internal — you can't see why a fact was dropped or which window applied.
SMRITI's answer
Not racing it on accuracy — racing it on transparency. ~1.5k readable lines, supersession that's auditable, and validity windows printed into the context the model sees.

mem0

90k+ devs · open core
graph = $249/mo
+
Their strength
Mature SDK and the widest ecosystem — CrewAI, LangGraph, Flowise drop-ins. The pragmatic production default.
The strength, challenged
90k devs is a distribution moat, not an architecture one — maturity hasn't bought accuracy: third-party runs place mem0 near 49% on LongMemEval vs Hindsight's 91.4%.
!
The gap
Graph features sit behind a paid tier; local self-host wants Docker + Postgres + Qdrant; knowledge-updates can leave stale facts competing with fresh ones.
SMRITI's answer
Graph, temporal and fusion are all in the free Apache-2.0 core, and write-time supersession retires the stale fact instead of leaving it to fight the new one.

Zep / Graphiti

temporal kg · open core
graph DB infra
+
Their strength
The right temporal model — a true bi-temporal knowledge graph for reasoning about how facts changed over time. SMRITI borrows this thesis.
The strength, challenged
The right model is no longer practically open — and despite the purpose-built temporal graph, Zep lands mid-pack (~63.8%). The model alone doesn't win; retrieval fusion does the rest.
!
The gap
Carries a graph database as infrastructure; the community edition was deprecated; the advanced temporal features are cloud-only.
SMRITI's answer
Keep Zep's temporal model, drop the database tax — the same validity windows and supersession in one SQLite file, fully local, nothing gated.
nomenclature · borrowed precision

The stack, named in its own tongue

Not branding — Indian epistemology worked out a technical vocabulary for memory two millennia before vector databases, and the pipeline maps almost one-to-one. The Nyaya line anubhava → samskara → smriti (experience leaves impressions; recollection arises from them) is the write path. Vedanta's badha — sublation, a later cognition invalidating an earlier one without erasing that it occurred — is supersession.

STAGE 01
अनुभव
anubhava
direct experience
episodic store
append-only turns
STAGE 02
ग्रहण
grahana
grasping, apprehension
fact extraction
1 call / session
STAGE 03
संस्कार
samskara
impression left by experience
consolidated
fact store
STAGE 04
बाध
badha
sublation — invalidated, never erased
supersession
invalid_at + pointer
STAGE 05
स्मरण
smarana
the act of recollection
retrieval — shabda
artha · sambandha · kala
STAGE 06
संगम
sangama
confluence of rivers
RRF fusion
4 streams → 1 ranking
STAGE 07
प्रसंग
prasanga
context, occasion
packed context
with provenance
the four channels of smaranaशब्द shabda · word · BM25/अर्थ artha · meaning · vectors/सम्बन्ध sambandha · relation · entity hop/काल kala · time · date proximity
and the restअवधि avadhi · a fact's validity window/पदार्थ padartha · the entity table/लघु laghu & पूर्ण purna · mode aliases, accepted in code/परीक्षा pariksha · benchmark harness/न्याय nyaya · the judge/मौन mauna · abstention, knowing when not to answer
what SMRITI has not proven yet

The numbers are targets, not trophies

SMRITI ships the LongMemEval + LoCoMo harness so you generate its score on your hardware. Until that run exists, here are the published reference points it has to meet — shown as the bar to clear, not a win to claim.

HindsightLongMemEval
91.4%
ZepLongMemEval
63.8%
mem0LongMemEval
49.0%
SMRITIyour run goes here
— · —

Why this panel exists. Vendor numbers use different judges, answer models and splits — they aren't directly comparable, which is exactly how everyone "wins" at once. The only honest comparison is one you run yourself with a fixed judge. Run lite and full modes side by side; report both.

how it works · the whole thing

Write consolidates. Read reflects.

# WRITE — consolidation at write time session ─▸ episodic log · अनुभव append-only · embedded · FTS5 └▸ fact extraction · ग्रहण 1 LLM call / session └▸ conflict resolve: tier 1 key collision ─▸ supersede 0 tokens tier 2 semantic clash ─▸ arbitrate 1 tiny call supersession = badha · बाध — never deleted invalid_at + superseded_by = full history # READ — reflection at read time query ─▸ smarana · स्मरण, 4 channels: 1 shabda bm25 · sqlite fts5 2 artha vectors · facts + episodes 3 sambandha entity hop · graph-lite 4 kala nearest dates ─▸ fuse · sangama · संगम (RRF) ─▸ annotate CURRENT / SUPERSEDED-on ─▸ packed context · prasanga · प्रसंग

run it

# 11 offline tests, no keys, no network pip install -e . && pytest tests/ # see supersession live python examples/quickstart.py # your benchmark number python -m bench.download python -m bench.run --bench longmemeval \ --data data/longmemeval_oracle.json \ --mode lite --limit 50

lite — zero LLM at write time, fully offline.
full — adds extraction + supersession via any OpenAI-compatible endpoint.