examples/nemoclaw/quickstart.md
Add persistent long-term memory to your NemoClaw OpenClaw agent using the @mem0/openclaw-mem0 plugin.
Note: This plugin requires Mem0 Platform mode (i.e., a Mem0 API key from app.mem0.ai). Open-source mode is not supported in NemoClaw sandboxes because the sandbox proxy blocks
/v1/embeddingsrequests required by the open-source backend. See Known Limitations for details.
| Resource | Recommended | Minimum |
|---|---|---|
| CPU | 4+ vCPU | 2 vCPU |
| RAM | 16 GB | 8 GB |
| Disk | 40 GB free | 20 GB free |
Accounts required:
nvapi-)m0-)Supported platforms: Ubuntu 22.04+, macOS (via Docker), Windows (WSL 2 + Docker)
Use this if you don't have NemoClaw installed yet. The script handles everything: Docker, Node.js, NemoClaw installation, onboarding, Mem0 plugin installation, network policy, and configuration.
# Download
curl -fsSL https://raw.githubusercontent.com/mem0ai/mem0/main/examples/nemoclaw/setup-mem0-nemoclaw.sh -o setup-mem0-nemoclaw.sh
# Run
chmod +x setup-mem0-nemoclaw.sh
./setup-mem0-nemoclaw.sh
The script runs through 7 phases:
| Phase | What it does | User input |
|---|---|---|
| 1 | Prerequisites (Docker, RAM, disk) | None (automatic) |
| 2 | Install NemoClaw | None (automatic) |
| 3 | NemoClaw onboarding (sandbox + k3s) | Sandbox name, NVIDIA API key |
| 4 | Install Mem0 plugin into sandbox | None (automatic) |
| 5 | Update network policy for api.mem0.ai | None (automatic) |
| 6 | Configure plugin | Mem0 API key, user ID |
| 7 | Verification | None |
Use this if you already have NemoClaw installed and onboarded with a sandbox in Ready state.
# Download
curl -fsSL https://raw.githubusercontent.com/mem0ai/mem0/main/examples/nemoclaw/install-mem0-plugin.sh -o install-mem0-plugin.sh
# Run
chmod +x install-mem0-plugin.sh
./install-mem0-plugin.sh
The script auto-detects your sandbox and runs 3 steps:
| Step | What it does | User input |
|---|---|---|
| 1 | Install Mem0 plugin into sandbox | None (automatic) |
| 2 | Update network policy for api.mem0.ai | None (automatic) |
| 3 | Configure plugin | Mem0 API key, user ID |
After either script completes, connect to the sandbox and start the gateway:
source ~/.bashrc
nemoclaw <sandbox-name> connect
nemoclaw-start
Look for this line in the startup output:
openclaw-mem0: registered (mode: platform, user: your-user-id, graph: false, autoRecall: true, autoCapture: true)
You can also verify with:
openclaw plugins list
The Memory (Mem0) plugin should show status loaded.
All test commands run inside the sandbox.
openclaw agent --agent main --local \
-m "My name is Alice and I work on distributed systems" \
--session-id test1
Look for: openclaw-mem0: auto-captured 1 memories
Start a new session (different --session-id):
openclaw agent --agent main --local \
-m "What do you know about me?" \
--session-id test2
Look for: openclaw-mem0: injecting 1 memories into context (1 long-term, 0 session)
The agent should respond with information from the previous session ("Alice", "distributed systems").
openclaw tui
Send messages and the plugin will automatically capture and recall memories in the background.
All options are set inside the sandbox via:
openclaw config set plugins.entries.openclaw-mem0.config.<key> <value>
| Key | Type | Default | Description |
|---|---|---|---|
mode | "platform" | "open-source" | "platform" | Backend mode |
apiKey | string | — | Mem0 API key (starts with m0-) |
userId | string | "default" | Unique identifier for the user |
autoRecall | boolean | true | Inject memories before each agent turn |
autoCapture | boolean | true | Store facts after each agent turn |
topK | number | 5 | Max memories per recall |
searchThreshold | number | 0.3 | Min similarity score (0-1) |
orgId | string | — | Mem0 organization ID |
projectId | string | — | Mem0 project ID |
enableGraph | boolean | false | Enable entity graph for relationships |
customInstructions | string | — | Rules for what Mem0 should store/exclude |
Once the plugin is active, the agent can use these tools during conversations:
| Tool | Description |
|---|---|
memory_search | Search memories by natural language |
memory_list | List all stored memories for a user |
memory_store | Explicitly save a fact |
memory_get | Retrieve a memory by ID |
memory_forget | Delete by ID or by query |
Run these inside the sandbox:
# Search all memories (long-term + session)
openclaw mem0 search "what languages does the user know"
# Search only long-term memories
openclaw mem0 search "user preferences" --scope long-term
# Search only session memories
openclaw mem0 search "current task" --scope session
# Memory stats
openclaw mem0 stats
For detailed troubleshooting steps, see the troubleshooting guide included in this directory.
npm tar TAR_ENTRY_ERROR ENOENT during NemoClaw installationThis is a known npm bug where concurrent tar extraction races cause ENOENT errors on deeply nested packages. The setup-mem0-nemoclaw.sh script works around this by cloning the NemoClaw repo and installing with --maxsockets=1 to serialize downloads. If you installed NemoClaw manually and hit this error:
git clone --depth 1 https://github.com/NVIDIA/NemoClaw.git ~/.nemoclaw-src
cd ~/.nemoclaw-src
npm install --maxsockets=1
npm link
sandbox not found during onboarding step 7The gateway restarted during onboarding and lost the sandbox state. Re-run nemoclaw onboard. When prompted that the sandbox already exists, choose y to recreate it.
npm error 403 Forbidden when installing plugin inside sandboxThe OpenShell gateway's TLS proxy blocks scoped npm packages (the %2f in the URL). Use the manual installation method (Method 2 in the scripts) which downloads outside the sandbox and uploads the tarball.
capture failed: Connection error or recall failed: Connection errorThe network policy is not applied or missing the mem0_api entry. Re-run the plugin install script or manually apply the policy:
openshell policy set <sandbox-name> --policy /tmp/nemoclaw-mem0-policy.yaml --wait
Telemetry event capture failed: TypeError: fetch failedThis is harmless. The Mem0 SDK's telemetry endpoint (us.i.posthog.com) is blocked by the sandbox proxy. It does not affect memory functionality.
disabled in openclaw plugins listThe memory slot is not set to openclaw-mem0. Inside the sandbox, run:
openclaw config set plugins.slots.memory openclaw-mem0
K8s namespace not ready on Ubuntu 24.04Ubuntu 24.04 defaults to cgroup v2 which causes k3s (used by NemoClaw) to fail. Apply the cgroup fix:
sudo python3 -c "
import json, os
p = '/etc/docker/daemon.json'
c = json.load(open(p)) if os.path.exists(p) else {}
c['default-cgroupns-mode'] = 'host'
json.dump(c, open(p, 'w'), indent=2)
"
sudo systemctl restart docker
Then re-run nemoclaw onboard.
Open-source mode is not supported in NemoClaw sandboxes. The Mem0 open-source mode requires calling /v1/embeddings on an external LLM provider. NemoClaw's sandbox proxy intercepts all OpenAI-compatible API requests but only allows /v1/chat/completions through. Use platform mode instead.
| File | Description |
|---|---|
setup-mem0-nemoclaw.sh | Full setup script (NemoClaw + Mem0 plugin) |
install-mem0-plugin.sh | Plugin-only install script (NemoClaw already set up) |
troubleshooting-guide.pdf | Detailed setup and troubleshooting guide |
quickstart.md | This file |