Skip to content
Memory runtimeOpen-source · Apache 2.0 · self-hosted

Supermemory returns scored hits.Statewave returns a traceable bundle.

Supermemory reranks scored search hits for recall. Statewave assembles a deterministic, traceable bundle every call.

smPOST /v4/search<300ms
reranked hits · by relevance score
"runs dispatch at Northwind…"0.83
"prefers email over calls…"0.71
score is a similarity rank, not a fact type
Sget_context600 budget
ranked bundle · per-row metadata
profile_factruns dispatch · Northwind[ep_4]
profile_factprefers email · conf 0.9[ep_9]
provenance · fact_ids → episodes
4typed memory kinds
4ranking signals, deterministic
0.905LoCoMo, n=1,540
0API keys to run
Postgres-only, runs offline

Reranked for recall, or assembled for proof

Supermemory extracts memories into a graph and answers search with hybrid retrieval plus a reranker. Statewave compiles typed memories and assembles a ranked bundle the same way on every call.

smSupermemory · hybrid search
graph
embedded, local embeddings
+
keyword
hybrid search
→
rerank
context-aware
POST /v4/search→ ranked hits by score
GET /v4/profileextracted user profile

Retrieval rides on a reranker

Hybrid search plus a context-aware reranker surface the most relevant hits, fast, at sub-300ms at scale. You get scored passages and an extracted profile; the score is a similarity rank, and ordering can shift as the index and reranker evolve.

SStatewave · Record → Compile → Context → Govern
01Recordimmutable episodes
02Compiletyped memories
03Contextranked bundle
04Governpolicy + receipt
typed memory kinds · ranking priority
profile_fact
10
procedure
8
episode_summary
5
raw_episode
3

Assembly is deterministic and inspectable

Given the same subject, task, token budget, and point in time, the assembler returns the identical bundle every run. Four signals set the order: kind priority, recency, task relevance, and temporal validity.

How order is decidedscore = priority + recency + relevance + validity
KIND PRIORITY
3–10
typed profile facts outrank raw episodes
RECENCY
0–5
linear by age, newest scores highest
TASK RELEVANCE
0–8
word overlap (0-5) or cosine similarity (0-8)
TEMPORAL VALIDITY
−4…+3
valid facts gain +3, expired ones lose 4

Where each capability lives

Both self-host on Postgres and are open-source. They diverge on what comes back, scored hits from a reranker, or a deterministic bundle you can inspect and govern.

RETRIEVAL & RANKING

What comes back

sm
Scored search hits, passages ranked by relevance
S
A ranked bundle of typed rows with per-memory metadata

How context is selected

sm
Hybrid vector + keyword search with a context-aware reranker
S
Deterministic assembly, ranked to a token budget

Same query, same result

sm
Reranked; ordering can shift as index state evolves
S
Byte-identical bundle every run

Retrieval latency

sm
Tuned for speed, sub-300ms at scale (vendor figure)
S
Single Postgres query; not independently latency-benchmarked here
GOVERNANCE & PROVENANCE

Inspectable retrieval

sm
Passages with similarity scores; profile extracted separately
S
Explicit kind, confidence, valid_from/to per row

Provenance

sm
Results trace to source documents
S
source_episode_ids per memory; immutable episode chain

Read-path policy / receipts

sm
Not a core primitive of the public API
S
Policy engine + optional immutable, hash-chained receipt per call

Subject deletion (GDPR)

sm
Delete documents and memories via the API
S
One call hard-deletes a subject’s episodes and memories
OPERATIONS & LICENSING

Memory model

sm
Graph engine plus extracted user profiles
S
Typed memories (4 kinds) plus immutable episodes

Storage

sm
Self-host binary (embedded engine); hosted platform on Cloudflare edge
S
Postgres and pgvector, no proprietary store

Deployment

sm
Self-hostable binary and a managed hosted platform with connectors and MCP
S
Self-hosted only

Best for

sm
Fast, high-recall retrieval over large mixed corpora
S
Eval-driven, inspectable, deterministic retrieval with governance

Supermemory is an open-source memory and context engine with a self-hostable binary and a managed hosted platform; retrieval is hybrid vector-plus-keyword search with context-aware reranking. Rows reflect each product's public docs as of August 2026; verify self-hosted vs. hosted-platform feature parity before procurement.

smReach for Supermemory when

Latency and recall over large, mixed corpora are the priority, chats, documents, and app events ingested and searched under 300ms. You want a managed platform with connectors and MCP out of the box, an extracted user profile and memory graph, and you're comfortable with reranked results rather than a fixed, byte-identical ordering.

SReach for Statewave when

Determinism is part of the contract, retrieval must be inspectable row by row, and every context call needs provenance back to its source episodes, with an optional immutable receipt and read-path policy enforcement. Eval-driven teams that grade end-to-end answer accuracy, not just retrieval recall, live here.

"Why did the agent say that?"

An agent states a fact about a returning customer. The same history runs through each system: one returns scored passages, the other a provenance chain plus a receipt.

smSupermemory · scored hits
# search the memory store
› sm.search("who is alice")
  ↳ results[] # passages + scores
"runs dispatch at Northwind…"0.83
which run? which policy?not in the response
You get relevant passages and a similarity score. Which source document each came from is traceable, but confidence, validity, and whether a governance policy touched the result aren't part of the answer the agent was handed.
SStatewave · bundle + provenance
# ranked rows with metadata
› sw.get_context("user-alice",
  task="who is alice", max_tokens=600)
runs dispatch · Northwindconf 0.92 · [ep_4]
prefers emailvalid · [ep_9]
provenancefact_ids → episodes
Every row carries its kind, confidence, validity, and source_episode_ids. Why did the agent say X is a finite walk, fact_ids to memories to source episodes, and the same call can emit an immutable receipt of what was included and why.

Every call can leave a receipt

Supermemory returns scored search results from an extracted profile graph. Statewave governs assembly on the read path and can emit an immutable, provenance-traced receipt, in the Apache 2.0 core.

state-assembly receiptimmutable · ULID-addressable
receipt_id01J9Z4RT8K···
integrity_hashsha256:a3f9c1e0···
policy_bundlebundle:7c21 (enforce)
included · 3 facts, 2 episodes · 1,180/1,500 tokens
profile_factconf 0.92 · valid[ep_4, ep_9]
procedureconf 0.88 · valid[ep_2]
episode_summarysupersededdropped
1 memory redacted · label:pii
{}
Policy engine
Content-hashed YAML or JSON bundles. Deny or redact by sensitivity label and caller identity; log_only audits a policy before you enforce it.
#
Sensitivity labels
Per-memory pii, financial, and secret tags in a GIN-indexed array, so policy filters run inside the query.
←
Full provenance
Every compiled memory keeps the source episode ids, confidence score, and validity window it was derived from.
⌫
Subject deletion
One GDPR-style call erases every episode, memory, and receipt for a subject. No orphaned rows.

Two teams, two scoreboards

Both publish benchmarks, but different things. Statewave reports end-to-end QA accuracy; Supermemory reports retrieval precision, recall, and latency, shown apart, not stacked into one winner bar.

!

Read these apart, not against each other. A retrieval metric, Precision@1 or Recall@k, measures whether the right passage was fetched. An end-to-end QA-accuracy metric measures whether the agent's final answer was correct, and depends on the answerer model and the judge. Different metrics, different answerer models, different sample sizes. A direct "0.905 vs 59.7%" comparison would be meaningless.

SStatewave · end-to-end QA accuracyDETERMINISTIC READ PATH
0.905accuracy
LoCoMo
n=1,540 · robust figure
0.967accuracy
LongMemEval
n=30 · directional
Hybrid retrieval lift · v10
LoCoMo +2.1LongMemEval +16.0

Source: smaramwbc/statewave-memory-benchmarks README · server/api/memories.py.

smSupermemory · retrieval + latencyRETRIEVAL METRIC

Retrieval precision, recall, and speed, as published by Supermemory. Hybrid search plus a context-aware reranker; ordering can shift with index state. supermemory.ai/research/longmembench

LoCoMo · retrieval
59.7%P@1
83.5%Recall@10
LongMemEval · recall
95%Recall@15
~720 tokens added · 99.4% context reduction
retrieval latency
<300ms
consistently · across 100B+ tokens/mo
MemScore
qualitylatencycost
a triple, by design, not one number

Source: supermemory.ai and github.com/supermemoryai/supermemory, checked 2026-08-19. Figures are Supermemory's own; conditions differ from Statewave's harness.

reproduce it yourself · statewave-memory-benchmarks
$ git clone https://github.com/smaramwbc/statewave-memory-benchmarks.git
$ cd statewave-memory-benchmarks && pip install -r requirements.txt
$ python -m benchmarks.locomo.run --backend statewave \
  --answerer-model gpt-4o --judge-model gpt-4o
# deterministic read path, same bundle on every run

Moving from Supermemory to Statewave

Documents become episodes, search becomes context. Plan a parallel-run period; the cutover is typically read-then-write, not a flag flip.

one command · connects any MCP client
$ npx @statewavedev/statewave
→ API + admin console + Postgres up via Docker · healthy in under 2 min · no account
SUPERMEMORY
STATEWAVE
POST /v3/documents { content }
sw.create_episode("user-alice", …)
direct swap
Documents and chats land as immutable episodes; compilers extract typed memories.
POST /v4/search { q }
sw.get_context("user-alice", task="…", max_tokens=600)
direct swap
Ranked, token-bounded bundle with per-memory metadata and an optional receipt, not raw scored hits.
GET /v4/profile
profile_fact memories in the bundle
direct swap
The extracted profile becomes typed profile_fact rows with confidence and validity.
spaces
subject_id scoping
direct swap
Per-space isolation maps onto Statewave subjects.

Supermemory's extracted user profile maps onto Statewave's profile_fact memories; free-form documents land as episodes and are compiled into typed memories. If you rely on Supermemory's memory-graph visualization or sub-300ms hosted latency, benchmark Statewave on your own corpus before committing.

FAQ

Frequently asked

Straight answers, not marketing lines.

How is Statewave different from Supermemory?

Supermemory ingests documents and chats, extracts memories into a graph with user profiles, and answers search with hybrid retrieval and a reranker, tuned for recall and speed. Statewave compiles typed memories with confidence and validity, ranks them to a token budget, and returns a deterministic bundle with read-path governance and optional receipts.

Can I compare Statewave’s 0.905 against Supermemory’s 59.7%?

No, they measure different things. Statewave’s 0.905 is end-to-end QA answer accuracy on LoCoMo; Supermemory’s 59.7% is Precision@1, a retrieval metric. Different metrics, different sample sizes. Read each on its own terms, and benchmark both on your own workload.

Isn’t Supermemory also open-source and self-hostable?

Yes, but the two binaries ask different things of you. Supermemory’s self-hosted binary is zero-config, an embedded graph engine with local embeddings and no database to provision. Statewave’s self-hosted core asks you to run Postgres and pgvector. The read path also differs: deterministic, provenance-traced assembly with receipts, versus fast, recall-tuned reranked search with an extracted profile.

Which one is faster?

Supermemory is engineered for speed and publishes sub-300ms retrieval at scale. Statewave doesn’t headline a latency number; its read path is a single Postgres query, designed around determinism rather than raw throughput.

What makes Statewave retrieval deterministic?

Four ranking signals, kind priority, recency, task relevance, and temporal validity, combine to a fixed token budget. The same subject, task, and point in time always produce the same bytes.

Does it work with Claude, Cursor, or Codex?

Yes. One command boots the runtime, and its shipped MCP server connects any MCP-compatible client. Supermemory’s hosted platform also ships MCP and connectors; Statewave is self-hosted, so you operate Postgres and a container.

Can I run it fully offline?

Yes. Statewave’s storage is Postgres plus pgvector, self-hosted with no cloud dependency. Supermemory’s local binary also runs standalone, but its managed platform is a Cloudflare-edge service.

Give your agent context it can prove

Self-host the Apache 2.0 runtime, wire it to your MCP client, and every context call can return a receipt.