Persistent Memory for OpenClaw: The Conversation Behind the Decision
OpenClaw ships with real memory: a curated MEMORY.md, searchable daily notes, and background consolidation. Anyone telling you stock OpenClaw cannot remember is selling something. The native layer works, right until it asks you to be the person who keeps it current.
A decision gets made mid-conversation, with reasoning that lives only in the session where it happened. If nobody turned it into a note, the next session starts without it. The default fix is writing more detailed notes and curating MEMORY.md by hand, and that labor lands on you in the weeks you are busiest.
What the plugin adds
mr-memory is the memory layer we publish for OpenClaw. The install is two commands:
openclaw plugins install npm:mr-memory
openclaw mr <your-memory-key>
After that, relevant memories are retrieved and injected into the prompt through OpenClaw hooks, and at agent_end the direct user/assistant conversation is captured. Tool call iterations, subagent work, and internal processing are filtered out, so the vault does not fill with function-call noise. Workspace files sync at gateway startup and at the start of each new session, debounced at 60 seconds, with a hash manifest so only the files that actually changed move. After an openclaw update, run openclaw plugins update mr-memory to keep the relay current.
Relay, not proxy
The plugin runs inside OpenClaw. It retrieves and injects before model input and captures at agent end. It does not intercept or proxy provider requests, which means your model routing stays exactly as it is. Inference and provider API keys remain inside the gateway; the only thing sent to MemoryRouter is configured memory content. That boundary is why this works with whatever provider mix you already run.
Run the two-session proof
Verify the path before real decisions depend on it.
- Run
openclaw mr statusand confirm the vault is reachable. - In an ordinary conversation, say: "Remember: the synthetic demo project's release phrase is ORCHID-7419." Let the turn finish and allow ingestion time.
- Start a fresh conversation with no transcript carried over and ask: "What is the demo project's release phrase I told you before?"
- If ORCHID-7419 does not come back, ask the agent to use
memory_searchfor the demo project and inspect what it returns.
A confirmation reply proves nothing on its own. The fact arriving in the second session is the result you are checking for.
Uploading old history is a separate decision
Installing the relay does not backfill anything. openclaw mr upload is its own operation, and it reads more than people expect: workspace files like MEMORY.md, memory/**/*.md, AGENTS.md, and TOOLS.md, plus session transcripts under ~/.openclaw/agents/main/sessions/. It can also take explicit file or directory paths, a custom workspace directory, or another agent's state directory. Review what it will read before you run it against a workspace with anything private in it, then check openclaw mr status to see what landed.
For multi-agent gateways and scheduled work
- One gateway, several agents: each agent can map to its own vault through
agentKeys. Unmapped agents fall back to the shared key, and a fallback means shared recall, not isolation. Map every agent that should stand alone, and test it. - Scheduled tasks: a cron job can receive relevant memory when it runs through the plugin's supported agent lifecycle and resolves an authorized key. It does not get the whole vault automatically, and internal or consolidation sessions follow different capture rules. Prove a harmless one against a synthetic fact before relying on it unattended.
- Consolidation: the reflection hierarchy is wired in. When consolidation debt crosses the threshold, a background agent turn writes reflections with your own model. It is excluded from your conversation and from capture, and locked against double-firing. Set
"autoConsolidate": falseto run consolidation by hand instead.
What it does not do
openclaw mr offrestores stock OpenClaw defaults and keeps your memories in the vault.openclaw mr deleteclears the vault, and that reaches every client sharing it. Uninstalling the plugin does not erase remote memories.- It is not a local store. Configured memory content is sent to MemoryRouter for storage and retrieval. If a constraint says nothing leaves the machine, the native file layer is the answer that respects it.
- It does not capture everything. Direct user and assistant messages are the scope. Tool traces, subagent output, and internal events stay out by design.
- It does not promise a fixed speedup. Recall latency depends on network, vault size, and retrieval settings.
The OpenClaw page walks the setup end to end, and the documentation covers every command, the multi-agent mapping, and troubleshooting.
Create your MemoryRouter account, run the two commands above, and keep the why from today's session available to tomorrow's.