Mem0 recalls what's similarStatewave decides what's delivered
Mem0 ranks by relevance and hands you the result. Statewave assembles a deterministic, token-bounded context bundle and returns an integrity-hashed receipt of exactly what the agent saw.
ContextAssembler
deterministic · token-bounded
Ranked by similarity, or assembled by policy
Mem0 partitions memory by an id you pass, then ranks what it finds by a blend of vector similarity, keyword overlap and entity matches. Statewave ingests each event as an immutable episode, compiles those into typed memories with confidence and validity, and assembles a ranked bundle the same way on every call.
Retrieval is non-deterministic
The caller picks an id and the store ranks by relevance. Expiry exists but is opt-in with no default, and there is no kind priority and no recency decay — so an address the customer changed months ago, with no expiry set, can still rank above the current one.
Assembly is deterministic and inspectable
Given the same subject, task, and token budget, the assembler returns the identical bundle every run. Four additive signals set the order: kind priority (3–10), recency (0–5), task relevance (0–8), and temporal validity (−4 to +3).
Where each capability lives
Both are memory layers for agents. They diverge on what the runtime enforces and what you have to build or pay for.
How context is selected
- m0
- Top-k embedding-nearest as the candidate pool, then re-scored
- S
- Deterministic assembly, additively scored to a token budget
Ranking signals
- m0
- Vector similarity fused with keyword and entity boosts; optional reranker
- S
- Kind priority, recency, task relevance, temporal validity
Stale / expired facts
- m0
- Optional expiry, off by default; no confidence score or decay
- S
- Penalised −4 and dropped before assembly
Same query, same result
- m0
- Varies with the index
- S
- Byte-identical bundle every run
Proof of what the agent saw
- m0
- None
- S
- Immutable, ULID-addressable receipt with an integrity hash
Policy on the read path
- m0
- Implement it in your app
- S
- Declarative bundles: deny or redact by label and caller
Provenance to source
- m0
- Session ids automatic; links to source documents by hand
- S
- Source episode ids, confidence, and validity per memory
Subject deletion (GDPR)
- m0
- One call per subject; change history is retained
- S
- One call clears episodes, memories, and receipts
Storage
- m0
- Pluggable vector stores
- S
- Postgres and pgvector, nothing else to run
Graph / relationship memory
- m0
- OSS: graph config removed, relations no longer returned. Platform: graph affects the score, no graph payload to query
- S
- Typed memories with provenance, no graph tier
Interface
- m0
- Python and TypeScript SDKs, REST, CLI, hosted MCP server
- S
- REST, Python and TypeScript SDKs, MCP server, connectors
License
- m0
- Apache 2.0 core, paid platform
- S
- Apache 2.0 throughout, runs fully offline
Mem0 v3 deleted the open-source graph-store drivers (Neo4j, Memgraph, Kuzu, Apache AGE, Neptune); the graph_store config block is no longer read, and search results no longer carry a relations field. On the managed Platform there is no graph store to configure and no graph payload in the response — entity connections reach the caller only through the combined score. Rows reflect each product's public docs and source as of August 2026.
You are giving a single assistant persistent memory, want a mature SDK with broad framework integrations, and one identity scope — user, agent, run, or app — describes how your data partitions.
Agents run in production across many sessions and you need deterministic context, provenance back to source episodes, policy enforced on the read path, and an auditable receipt for every decision.
One returning customer, two runtimes
A support agent resumes a customer thread three weeks later. In between, the customer moved house and pasted a card number into an earlier message. The same episode history runs through each system.
Every call leaves a receipt
Mem0 leaves auditability to your application. In Statewave every assembly is governed and recorded in the core, on the read path, under Apache 2.0.
A fair, in-harness run
Measured on Mem0's own harness, same models, judge unchanged. A narrow margin you can re-run beats an inflated one you cannot.
Statewave scored higher on both in this run. Treat n=30 as directional; LoCoMo at n=1,540 is the robust figure.
Facts persist across sessions, token budgets hold, provenance traces to source episodes, and compilation stays idempotent.
Moving over from Mem0
One command boots the whole runtime. Every Mem0 call has a direct counterpart, and each write lands as an immutable episode.
Frequently asked
How is Statewave different from Mem0?
Mem0 ranks memories by relevance for an id you pass. Statewave compiles raw episodes into typed memories, ranks them with a fixed scoring model to a token budget, applies policy on the read path, and returns an integrity-hashed receipt of exactly what was delivered.
What makes retrieval deterministic?
A fixed scoring model: kind priority (3–10), recency (0–5), task relevance (0–8), and temporal validity (−4 to +3). The same subject, task, and budget produce the same bundle every time.
What is a state-assembly receipt?
An immutable, ULID-addressable record of one context call. It carries a byte-level integrity hash of what was delivered and references the policy bundle hash, so ‘what did the agent see, under which policy’ is answerable forever.
Does it work with Claude, Cursor, or Codex?
Yes. One command (npx @statewavedev/statewave) boots the runtime and auto-wires Claude Code, Claude Desktop, Cursor, VS Code Copilot, and Codex CLI. Any MCP-compatible client connects too.
Can I run it fully offline?
Yes. Storage is Postgres-only and self-hosted. The heuristic compiler keeps everything on your network; nothing leaves unless you configure an LLM compiler or hosted embeddings.
Give your agent context it can prove
Self-host the Apache 2.0 runtime, wire it to your MCP client, and every context call comes back with a receipt.
"mem0" is a trademark of its respective owner. References to mem0 on this page are nominative, for benchmark-comparison purposes only, and do not imply any affiliation with or endorsement by mem0ai.