OpenClaw Memory: Mem0 vs MemoryRouter

John Rood··6 min read

OpenClaw's memory slot takes one plugin, and Mem0 now competes for it with an official one: @mem0/openclaw-mem0. It makes a real case for the slot. The agent decides what deserves remembering, and the store lives on Mem0's platform or on hardware you run. MemoryRouter fills the same slot with a relay that captures direct exchanges and keeps them in one vault that every connected tool reads.

Both keep working context alive across sessions. They split on what gets kept, what it costs, and who can read it.

The mem0 side

The plugin installs from the OpenClaw CLI, and the memory slot is exclusive, so mem0 activates only once the slot points at it:

openclaw plugins install @mem0/openclaw-mem0

Then you choose where memory lives. Platform mode connects to Mem0's cloud with an API key, and the shortest path is setup from inside a chat: send Setup Mem0 from mem0.ai/claw-setup to your agent in any channel, give it your email, and paste the six-digit code from your inbox. The plugin writes its own config into openclaw.json. The open-source mode needs no Mem0 key at all and runs the pipeline yourself, with your own embedder, vector store, and LLM (the defaults call OpenAI; local components are a config swap). The docs list OpenClaw 2026.4.25 and newer as fully supported.

The default after openclaw mem0 init is skills mode. Triage extracts durable facts from the conversation through importance gates. Recall rewrites your message into searches before each turn and injects the best matches under a token budget. Dream runs periodic consolidation, merging duplicates and retiring stale entries. Automatic recall and capture stay on as well.

Capture is deliberately selective. Mem0 keeps the full text of chosen user and assistant messages after noise filtering and secret redaction, with no per-message character cutoff, and it draws from recent messages plus earlier work summaries rather than every line of a conversation. Your agent gets eight memory tools covering search, add, update, delete, and diagnostics, with scopes and categories on the search side. Subagents can recall a parent's memories, though their own sessions are not captured.

Mem0's OpenClaw documentation is the source for the details above, read October 14, 2026.

The MemoryRouter side

Two commands put the mr-memory plugin in place:

openclaw plugins install npm:mr-memory
openclaw mr <your-memory-key>

It runs as a relay on OpenClaw's hooks. Memories arrive in the prompt before your request reaches the model, and completed turns are filed at agent_end from direct user prompts and model replies only. Tool calls and subagent runs never enter the record. A follow-up pass distills those messages into reflections, and search reaches both the reflections and the raw exchanges underneath, so a broad question and its finest detail are each one lookup apart. openclaw mr upload is optional and sits apart from the relay: point it at what you want included, notes like MEMORY.md and the memory/ folder along with stored session transcripts, once you approve the scope it lists.

One vault serves every surface you connect: Claude Code and Codex pull from it inside their own sessions, editors reach it over MCP, and the ChatGPT and Claude connectors share it too. Storage is hosted. Memories live on MemoryRouter's infrastructure and return to whichever tool asks for them; model credentials never change hands. openclaw mr off puts the gateway back to stock settings and the vault stays untouched. The OpenClaw page covers setup end to end, uploads included.

What mem0 gets right

Self-hosting comes first. Open-source mode runs the entire pipeline where you deploy it, with components you choose end to end. When a hard rule says chats cannot sit on someone else's infrastructure, this is the path that can satisfy it, and a hosted vault cannot.

The developer surface is the second. Mem0 is a platform for building products: SDKs, an API, an MCP server, and graph memory with entity linking on the higher plans. If you already build on mem0, its OpenClaw plugin keeps one memory vendor across your product and your gateway, and the userId scoping is designed for apps with many end users.

Setup is the third. A chat message and an inbox code is less friction than any config file, ours included.

What the slot choice changes

What gets stored is the first split. Mem0 keeps conclusions: triage reads the conversation and files the fact that passed its gates, whether that is a preference, a rule, or a decision. MemoryRouter keeps the direct exchanges and builds reflections above them, so the reasoning that produced a decision stays recoverable next to the decision. A fact tells you what got settled. The exchange tells you why, which is the part you actually need when a decision starts to look wrong.

Reach is the second. Mem0's platform scopes memory to a userId in their cloud, and any surface wired to Mem0 reads it. MemoryRouter's vault starts wide on day one: the same recall answers Claude Code and Codex sessions, MCP editors, and both chat connectors, and the reviewed upload folds in notes and transcripts already on your disk. If your week spans several tools that each forget you, that spread is the point of the vault.

Billing shape is the third. Mem0's platform meters two request types, adds and retrievals: 10,000 and 1,000 monthly on the free tier, 50,000 and 5,000 for $19, and 500,000 and 50,000 for $249. Recall fires before each turn, so traffic, not archive size, decides the tier. Open-source mode drops the meters and moves those calls onto your infrastructure. MemoryRouter bills one way: $20 per month from day fifteen, 200M memory tokens bundled, and $0.50 per 1M beyond.

The decision

Keep mem0 in the slot if you are building on mem0, if you want the self-hosted pipeline, or if the lightest possible setup matters and the extraction model fits how you work. For the platform-level comparison, that is covered in MemoryRouter vs Mem0.

Take the vault if the problem is your own work rather than a product's: several tools, more than one machine, notes and old sessions you want counted as memory, and one flat bill. Earlier in this series, the same slot decision played out against LanceDB and ByteRover.

Start your MemoryRouter vault so OpenClaw's memory is shared with every tool you use.