This is the install guide. If you only open one file, open this one.
It works for a person reading along and for an AI agent doing the install for you. If you are handing this to an assistant, the whole instruction is: "Install Mnemo Cortex — follow INSTALL.md."
This page assumes you know nothing about the AI host platforms Mnemo integrates with — Claude Desktop, Claude Code, OpenClaw, LM Studio, AnythingLLM, Agent Zero, Hermes Agent, Ollama Desktop, and the generic MCP hosts (Open WebUI, llama.cpp, LobeChat, Jan). Each gets a one-paragraph orientation below, then a link to its full integration doc.
The repo root has several robot.* files. They have similar names and
very different jobs, so here is the whole family in one place:
| File | What it is | Do you read it? |
|---|---|---|
INSTALL.md ← you are here |
The install instructions, in English | Yes — start here |
README.md |
What Mnemo Cortex is and why. The long-form story | Yes, if you want the overview |
robot.info |
A data file. Structured JSON describing the product, so an AI can answer questions about Mnemo without scraping this repo | No — it is for machines |
robot.install |
A data file. The JSON settings the installer reads. Edit it only if you want to change a default like the port | No — it is for machines |
robot-install.sh |
The installer program itself | No — you run it, §2a |
In one line: INSTALL.md tells you how. robot.install is a
settings file the installer reads. They are one character apart and
they are not the same thing — if you landed on a wall of JSON, you
wanted this page.
Mnemo Cortex is a server plus per-host bridges. Both layers need installing. They are independent products you assemble:
┌────────────────────────┐ ┌──────────────┐
│ Layer A: Mnemo server │ ◀─── HTTP ────▶│ MCP bridge │ ◀─── stdio ──▶ Your user's
│ (Python, port 50001) │ │ (Node, per- │ AI host
│ │ │ user agent) │ (e.g. Claude
│ Stores memory + facts │ │ │ Desktop)
└────────────────────────┘ └──────────────┘
robot-install.sh integrations/<host>/
Layer A: the server runs once per machine and listens on
localhost:50001. It stores all memories and facts. Install it once;
every AI host on the box talks to the same server.
Layer B: the host bridge is a small Node.js MCP server that runs inside whatever AI host your user runs (Claude Desktop, LM Studio, etc.). It translates between the host's MCP protocol and Mnemo's HTTP API. There is one bridge per host type, but most hosts can be configured in under five lines once the server is up.
Skip the host bridge and the AI host has no way to call Mnemo. Skip the server and the bridge has nothing to call.
Two ways. Pick one.
For agents and CI. Reads robot.install (JSON
manifest), runs the install, prints a single JSON object on stdout.
Defaults are sensible — a manifest with only the service block
already produces a working local install.
./robot-install.shIf the user has API keys to wire in (OpenRouter for reasoning,
optional Google or OpenAI for embeddings), set them in the
environment before running — the installer reads the env var
named in api_key_env and writes it into a 0600-permission env
file alongside the systemd unit. Never paste keys into the JSON
manifest.
Success: {"ok": true, "steps": {...}, "smoke_test": {"ok": true}}.
Failure: {"ok": false, "error": "...", ...} with exit code 1.
Sandbox test before touching real state:
MNEMO_INSTALL_VENV_DIR=/tmp/test-venv \
MNEMO_INSTALL_CONFIG_DIR=/tmp/test-config \
MNEMO_INSTALL_SYSTEMD_DIR=/tmp/test-systemd \
MNEMO_INSTALL_DRY_RUN=1 \
./robot-install.shFor humans who want the interactive wizard. See README §Install Guide Steps 1–4.
This is the part that depends on what your user runs. Identify the host first, then follow the matching integration guide.
Ask. Or check these tells:
| Tell | Likely host |
|---|---|
User typed cc or claude in a terminal |
Claude Code |
| Desktop app, runs locally, no API key required | Claude Desktop (Anthropic-built) |
| User mentions "ClawdBot," "Rocky," or "Sparky" | OpenClaw |
| Desktop app with a model picker; user picked Qwen / Llama / Mistral | LM Studio (most common GUI for local models) |
| User has "workspaces"; can drag PDFs into chat | AnythingLLM |
| Docker container; user mentions "Bullwinkle" / "Agent Zero" | Agent Zero |
User runs hermes ... in a terminal; mentions Nous Research |
Hermes Agent |
User said ollama launch openclaw or ollama run |
Ollama Desktop |
| User's assistant is ChatGPT (chatgpt.com); mentions "Custom GPT" or "GPTs" | ChatGPT |
User runs llama-server directly |
llama.cpp |
| Browser-based, multi-model dashboard | Open WebUI |
| Chinese-friendly UI, MIT-licensed clone of ChatGPT | LobeChat |
| Cross-platform desktop, "AI playground" framing | Jan |
If none match, ask the user: "What AI assistant or model host are you using? I need the name so I can wire memory in correctly."
Each path below is a full README with copy-pasteable config and verified gotchas. Read the one that matches your user's host.
| Host | Integration dir | What it is in one line |
|---|---|---|
| Claude Code | integrations/claude-code/ |
Anthropic's terminal CLI agent — runs in your user's shell, reads/writes files, executes commands. |
| Claude Desktop | integrations/claude-desktop/ |
Anthropic's desktop app. Drag-and-drop .mcpb bundle install — no clone, no Node, no JSON editing. Step-by-step OS guides: Windows · Linux. |
| OpenClaw | integrations/mcp-bridge/ |
Open-source local AI agent framework (the "ClawdBot" platform). Generic MCP bridge wires Mnemo in via one config block. |
| LM Studio | integrations/lmstudio/ |
Desktop GUI for running local LLMs (Qwen, Llama, etc.). Native MCP support since v0.3.17 — edit mcp.json and restart. |
| AnythingLLM | integrations/anythingllm/ |
Desktop GUI with workspace-scoped chat. Two-step setup: MCP config + flip workspace to "Automatic mode" so memory fires without @agent prefix. |
| Agent Zero | integrations/agent-zero/ |
Autonomous Docker-based agent (the "Bullwinkle / BW" platform). In-container MCP setup. |
| Hermes Agent | integrations/hermes/ |
Nous Research's open-weights agent framework (v0.12.0+). Config-only via hermes mcp add. |
| Ollama Desktop | integrations/ollama-desktop/ |
Ollama as the local LLM, OpenClaw as the MCP host, terminal launcher (ollama launch openclaw). Note: Ollama Desktop's own chat window does not support MCP. |
| ChatGPT (Custom GPT) | integrations/chatgpt/ |
OpenAI's ChatGPT via Custom GPT Actions (REST over public HTTPS, not MCP) — a small authenticated gate pins ChatGPT to one memory tenant. |
| Open WebUI / llama.cpp / LobeChat / Jan / other MCP host | README §Use With Any Local LLM | Generic MCP setup. Each has a short config snippet in the README. |
- Absolute paths only. Every host's MCP config requires the
absolute path to
integrations/mcp-bridge/server.js. Relative paths break silently — the host launches the bridge from the wrong cwd andnodethrows ENOENT. MNEMO_AGENT_IDmust be unique per host. Set it tolmstudio,claude-desktop,cc, etc. If two hosts share an agent ID, their memories collide and cross-agent dreaming can't tell them apart.MNEMO_URLmust point at the server. Defaulthttp://localhost:50001. If the server runs on another machine on the LAN, use that machine's IP and confirm the firewall allows the port.- Use a tool-capable model. Qwen3, Llama 3.2, Mistral, and
Gemma 2 invoke tools correctly. Small models (under 7B) often
narrate tool calls instead of making them — the response
reads like "saved with id abc123" but no
mnemo_savewas ever called and no memory was stored. If you can't verify a save landed inmnemo-cortex recall, the model is hallucinating tool calls — scale up.
After Layer A and Layer B are both wired, run these checks:
# Server is up
mnemo-cortex health
# Save a known string from the agent's perspective
# (whatever syntax the host's MCP UI exposes — see integration doc)
# Then in a shell, query the server directly:
curl -s -X POST http://localhost:50001/context \
-H "Content-Type: application/json" \
-d '{"prompt": "the known string", "agent_id": "YOUR-AGENT-ID", "max_results": 5}'If recall finds the string, the round-trip works. If it doesn't,
walk back the chain:
curl http://localhost:50001/health— server reachable?- Check the MCP host's tool list — is
mnemo_saveregistered? - Check
MNEMO_AGENT_IDmatches between save and recall scopes.
For deeper diagnostics: mnemo-cortex doctor.
Install verified? One step left: read CORTEX-OS.md — the operating manual that teaches you (the agent) how to actually use what you just installed: the startup ritual, what to save, when to recall, session discipline. Installing memory without adopting the operating patterns is how agents end up with a database they never think to read.
-
FrankenClaw (Franky) — the former "hands" companion to Mnemo's "memory". Withdrawn from public distribution — do not install; see the withdrawal notice.
-
Disco-Bus —
https://github.com/GuyMannDude/disco-bus. Standalone agent-to-agent messaging (successor to Sparks Bus, which is archived atGuyMannDude/sparks-buswith a forwarding banner). Not required for Mnemo; install only if your user wants multi-agent delivery confirmation. -
mnemo-plan —
https://github.com/GuyMannDude/mnemo-plan. Starter template for the brain repo. If your user wants persistent current state (project pads, lane files) in addition to persistent memory, fork this template and point the bridge'sBRAIN_DIRenv var at it. The bridge auto-enables the brain-file MCP tools whenBRAIN_DIRexists.
| Symptom | Likely cause |
|---|---|
Agent claims it saved a memory, but mnemo-cortex recall returns nothing |
Model is narrating tool calls without invoking them. Use a tool-capable model (Qwen3, Llama 3.2, Mistral). |
| Bridge starts, then exits with ENOENT | Relative path in the host's MCP config. Use the absolute path to server.js. |
recall returns "No chunks" for every query |
Embedding model name doesn't match provider. See README §Troubleshooting. |
| Server unreachable from another machine | Firewall. ufw allow from <subnet> to any port 50001. Default bind is 127.0.0.1; switch to 0.0.0.0 in the manifest's service.host only if you want LAN access (and add auth). |
| Memories from two hosts show under one agent | MNEMO_AGENT_ID not set or duplicated. Each host needs a unique value. |
| Stage 0.5 fact extractions stop arriving overnight | Dreamer cron not installed, or reasoning provider env var missing from the systemd unit. mnemo-cortex doctor will flag both. |
This install is for your user, not of your user. If you hit any of these, stop and ask:
- The user hasn't told you which AI host they run, and §3a's tells don't match.
- The user's machine doesn't have Python 3.11+ (server requirement) and you don't know if they want WSL2, Docker, or a different host.
robot-install.shreports{"ok": false}with an error you don't recognize. Paste the error to the user — don't guess.- The user has a paid Mnemo deployment somewhere else and you'd be installing a second one. Confirm they want a separate instance.
When in doubt: install nothing destructive; surface the question.