Guide
Mem0
Memory that is searchable, editable and deletable, lives outside any one conversation, and can be read by more than one bot. Connected over MCP, so nothing runs in your container. Works the same on Hermes and OpenClaw.
What It Is For
Both frameworks already remember things — see Hermes memory and OpenClaw memory. Mem0 is a different shape, and the difference is what decides whether you want it:
- It is a store you can query. Memories go in as facts, come back by similarity search, and can be updated or deleted individually rather than being buried in a transcript.
- It is outside the bot. Two bots pointed at the same Mem0 account and the same
user_idsee the same memories. Rebuild a container and the memories are still there. - It is scoped by id. Memories hang off a user, agent, app or run id, so one bot serving several people can keep them apart.
The flip side is equally plain: those facts leave your container and live on Mem0’s service. If that is not acceptable for the data in question, keep to the framework’s own memory, which stays on your instance.
Connect It
- Open the dashboard, go to Tools, and choose the running bot you want to give memory to. Tools are installed per instance, not per account.
- Find Mem0 and connect it. The endpoint field shows
https://mcp.mem0.ai/mcpas a placeholder — type or paste it in, since a placeholder is not a value and the form will not save without one. - Create an API key in the Mem0 dashboard, change the auth mode from None to Bearer, and paste the key. The token field only appears once the mode is not None.
That third step is not optional here, and it is worth knowing why. Mem0’s MCP server defaults to a browser sign-in flow: the client opens a window and you approve. A hosted bot has no browser and nobody sitting at it, so the headless path — an API key sent as a bearer token — is the one that works. If you connect with authentication set to None, every call will come back unauthorised.
The steps are the same on Hermes Agent and OpenClaw.
What the Agent Can Do With It
The MCP server exposes a full set of memory operations, not just writing and searching: add_memory, search_memories, get_memories, get_memory, update_memory, delete_memory, delete_all_memories, delete_entities, list_entities, list_events and get_event_status.
You do not call these by name in chat — once connected, the agent knows the tool is there. To check it by hand, the connector installs a client you can drive directly:
# Hermes
/opt/data/tools/dashboard-api-connectors/mem0/tool \
mcp call add_memory '{"text":"Prefers dark mode","user_id":"USER_ID"}'
# OpenClaw
/home/node/.openclaw/tools/dashboard-api-connectors/mem0/tool \
mcp call search_memories '{"query":"interface preference","user_id":"USER_ID"}'Note that the destructive operations are in that list too. The installed skill tells the agent to confirm before anything destructive or externally visible, but if several bots share one account, a delete_all_memories is shared as well. Give each bot its own id unless sharing is the point.
Pick Your Ids Before You Start
The single decision that matters is what goes in user_id. Get it wrong and you either mix two people’s memories together or split one person’s across ids that never see each other. A workable default: one stable id per real human the bot serves, chosen from something you already have — an account id, not a display name that can change.
Where It Lands in Your Bot
- Hermes Agent: skill at
/opt/data/skills/openclaw-launch-mem0. - OpenClaw: skill at
/home/node/.openclaw/workspace/skills/openclaw-launch-mem0.
The key is held in the client’s own config rather than in the skill text, and the client will not follow a redirect while carrying it.
Troubleshooting
- Unauthorised on every call. The connector is set to None, or the key is a project key from the wrong workspace. Reconnect with Bearer and a key from the Mem0 dashboard.
- Nothing comes back from a search. Usually the id. Search with the same
user_idyou wrote with; a memory stored under one id is invisible from another. - It remembers something wrong and keeps repeating it. That is what
update_memoryanddelete_memoryare for — ask the bot to forget the specific fact rather than clearing everything. - Memory still resets between sessions. Check the tool is connected on that instance, and that the agent is actually being asked to recall. Connecting a store does not by itself make a bot consult it every turn.
Try It
Connect it, tell the bot two or three durable facts about how you work, then start a fresh conversation and ask what it knows about you. If the answers survive the restart, the wiring is right.
Related: the Tools catalog, Hermes memory, OpenClaw memory, Mnemosyne, Qdrant.