OpenClaw
OpenClaw agents use Meaning Memory in two ways:
- As tools: the agent searches, remembers and keeps commitments through
mm-mcp, configured as an OpenClaw MCP server. - Across channels: a small capture script reads OpenClaw’s session transcripts, so an agent recalls in chat what it did in a cron job or a heartbeat. This is Throughline.
Set up each agent’s workspace and an access policy first: steps 1 to 4 of the Quickstart. Install Meaning Memory where OpenClaw runs, so mm-mcp is on its PATH (inside the container, if OpenClaw runs in one).
Add the MCP server
Section titled “Add the MCP server”Give each agent its own server entry, named after the agent:
openclaw mcp set mm-support-bot '{"command": "mm-mcp", "env": { "MM_AGENT": "support-bot", "MM_ACTOR": "support-bot", "MM_BACKEND": "file", "MM_WORKSPACE": "/srv/support-bot-mm", "MM_CONFIG_DIR": "/srv/support-bot-mm", "MM_SCOPE_AUTH_CONFIG": "/srv/scope_auth.yaml", "MM_ALLOW_INTERNAL": "1"}}'Saved MCP server "mm-support-bot" to /home/node/.openclaw/openclaw.json.The variables are the same as for Claude Code and Cursor. Check the setup before the agent uses it:
openclaw mcp doctorIf it reports stdio command not found or not executable: mm-mcp, Meaning Memory isn’t installed where OpenClaw runs.
Several agents in one OpenClaw
Section titled “Several agents in one OpenClaw”OpenClaw’s MCP servers are shared by every agent in the instance, and each server runs as one Meaning Memory agent. So add one server per agent (mm-support-bot, mm-billing-bot, …), then give each agent only its own, by denying the others’ tools in that agent’s entry in openclaw.json:
{ "agents": { "list": [ { "id": "support-bot", "tools": { "deny": ["mm-billing-bot__*"] } }, { "id": "billing-bot", "tools": { "deny": ["mm-support-bot__*"] } } ] }}Without this, an agent could call another agent’s server and act under that agent’s name. To share memory between agents, use scope groups, not each other’s servers.
Capture sessions for Throughline
Section titled “Capture sessions for Throughline”The customer kit includes integrations/openclaw/openclaw_capture.py. It reads OpenClaw’s session transcripts and passes each new or changed session to meaning-memory capture-session. Copy it somewhere stable, such as /opt/mm/openclaw_capture.py.
Run it where it can read OpenClaw’s state directory and write each agent’s workspace: inside the OpenClaw container, or on the host if that directory is mounted there. Run it as the user that owns the workspaces, and pass the state directory explicitly; the default, ~/.openclaw, is the running user’s home. Schedule it next to one drain per agent, so the captures become searchable:
*/10 * * * * mm python3 /opt/mm/openclaw_capture.py --state-dir /home/node/.openclaw --agent support-bot=/srv/support-bot-mm --agent billing-bot=/srv/billing-bot-mm*/5 * * * * mm MM_BACKEND=file meaning-memory consolidate --agent-id support-bot --drain-only --workspace /srv/support-bot-mm --config-dir /srv/support-bot-mm*/5 * * * * mm MM_BACKEND=file meaning-memory consolidate --agent-id billing-bot --drain-only --workspace /srv/billing-bot-mm --config-dir /srv/billing-bot-mm[support-bot] 3f2a91c0 captured (chat, key lines 1/1)[support-bot] 7c01de55 captured (cron, key lines 0/0)done: 2 captured, 0 failedWhat it sends, and what it keeps out:
- Sent: what users and agents said, as written. Conversation text can contain names, email addresses and other personal details; Meaning Memory stores only the agent’s own key lines from it, but those are stored as the agent wrote them.
- Sent: a record of each completed tool call: tool name, ok or error, and identifier fields such as a thread id or post id. A recipient is reduced to a short hash for every tool, and an email tool’s recipient is not sent at all.
- Never sent: the agent’s reasoning, tool results, and tool arguments other than those identifier fields.
- Chats, cron jobs and heartbeats are labelled as such; probe sessions in
verifyandsmokelanes are skipped.
A tool call becomes a memory only if the engine knows that tool. Out of the box that is OpenClaw’s message tool; the script’s README in the customer kit shows how to register your own tools, and lists the script’s other options.
Running it repeatedly is safe. The script records which sessions it has handed over (in .openclaw-capture-state.json in each workspace) and sends only new or changed ones, newest first. Each run handles up to 50 sessions per agent and the last 400 messages of each, within the past 26 hours by default; a larger backlog is worked through over the next runs. The engine stores a session that hasn’t changed only once.
Then tell the agent to check working memory when asked about something that happened elsewhere; see Recall it from another channel.