Skill id / OpenClaw folder name: install-memory-powermem-full. For the shortest install-only path, use install-memory-powermem (quickstart).
This skill folder includes supplementary docs:
- powermem-intro.md — What PowerMem is, features, vs file-based memory.
- config-reference.md — Config keys, state dir, commands.
How It Works
- Auto-Capture: After a conversation, the plugin sends valuable user/assistant text to PowerMem (optional infer / intelligent extraction).
- Auto-Recall: Before each turn, it searches memories and can inject a
<relevant-memories>block into context.
When User Asks to Install
Recommended order (TO C): (1) OpenClaw installed and default model + provider auth configured. (2) Python 3.10+ verified (python3 --version) before venv / pip install. (3) pip install powermem and pmem available to the gateway (PATH or pmemPath). (4) Install the memory-powermem plugin. No powermem.env is required for the default path.
The curl install.sh deploys the plugin and OpenClaw entries; with -y it may still create ~/.openclaw/powermem/powermem.env as an optional template—it does not run pip install powermem. That file is not required if the user relies on OpenClaw-injected LLM + default SQLite.
-
Check OpenClaw
openclaw --version. If missing:npm install -g openclaw,openclaw onboard.
Ensureagents.defaults.modelis set (e.g.openai/gpt-4o-mini) and the corresponding provider / API key works for normal chat—the plugin reuses that for PowerMem whenuseOpenClawModelis true (default). -
Check Python (required before venv / pip)
PowerMem needs Python 3.10 or newer. Runpython3 --versionfirst; the minor version must be ≥ 10 (e.g. 3.10.x, 3.12.x). Optional strict check:python3 -c "import sys; assert sys.version_info >= (3, 10), 'Need Python 3.10+'; print(sys.version.split()[0], 'OK')"If it fails: upgrade Python or use a specific binary (e.g.
python3.12) for all commands below instead ofpython3. -
Install PowerMem (CLI — default)
- Venv recommended: e.g.
python3 -m venv ~/.openclaw/powermem/.venv && source ~/.openclaw/powermem/.venv/bin/activate. pip install powermem.- Defaults: Plugin injects SQLite at
<OpenClaw stateDir>/powermem/data/powermem.dband LLM + embedding env vars derived from OpenClaw. TypicalstateDiris~/.openclawunless the user uses another instance (OPENCLAW_STATE_DIR,--workdir). - Optional
envFile: Path to a PowerMem.envfor extra tuning. If the file exists,pmemloads it; OpenClaw-derived vars still override the same keys whenuseOpenClawModelis true. useOpenClawModel: false: Disables injection; user must supply a complete PowerMem config via.envand/or environment variables.- Verify:
pmem --version. If the gateway does not inherit the venv, setpmemPathto the absolute path ofpmem.
- Venv recommended: e.g.
-
HTTP path (enterprise / shared server)
- Same Python 3.10+ requirement as CLI; then
pip install powermem,.envin server working directory,powermem-server --host 0.0.0.0 --port 8000. - Check:
curl -s http://localhost:8000/api/v1/system/health.
- Same Python 3.10+ requirement as CLI; then
-
Install the plugin
openclaw plugins install /path/to/memory-powermem(oropenclaw plugins install memory-powermemfrom npm), or runinstall.shfrom the memory-powermem repo — see One-click plugin deploy (install.sh) below for curl / flags /--workdir. -
Configure OpenClaw
CLI — defaults (recommended, matches plugin defaults):
Do not setenvFileunless you need a file. Example:openclaw config set plugins.enabled true openclaw config set plugins.slots.memory memory-powermem openclaw config set plugins.entries.memory-powermem.config.mode cli openclaw config set plugins.entries.memory-powermem.config.pmemPath pmem openclaw config set plugins.entries.memory-powermem.config.useOpenClawModel true --json openclaw config set plugins.entries.memory-powermem.config.autoCapture true --json openclaw config set plugins.entries.memory-powermem.config.autoRecall true --json openclaw config set plugins.entries.memory-powermem.config.inferOnAdd true --jsonCLI — optional
.envoverride file:openclaw config set plugins.entries.memory-powermem.config.envFile "$HOME/.openclaw/powermem/powermem.env"(Only matters if that path exists; OpenClaw can still override LLM keys when
useOpenClawModelis true.)HTTP:
openclaw config set plugins.entries.memory-powermem.config.mode http openclaw config set plugins.entries.memory-powermem.config.baseUrl http://localhost:8000Optional:
apiKeyif the server uses auth. -
Verify
Restart gateway, then in another terminal:openclaw plugins listConfirm memory-powermem is listed and its status is loaded. If it is missing or not loaded, fix install/slot config and restart the gateway before running LTM checks.
openclaw ltm health openclaw ltm add "I prefer coffee in the morning" openclaw ltm search "coffee"
One-click plugin deploy (install.sh)
Requires: OpenClaw installed (openclaw --version). The script does not run pip install powermem; ensure pmem is on PATH when the gateway runs or set pmemPath.
Default: configures plugin CLI mode. With -y, it may still create ~/.openclaw/powermem/powermem.env as an optional template — not required if you use OpenClaw-injected LLM + default SQLite.
curl -fsSL https://raw.githubusercontent.com/ob-labs/memory-powermem/main/install.sh | bash
From a local clone (no download):
cd /path/to/memory-powermem && bash install.sh
Non-interactive (defaults: CLI, may seed env file):
curl -fsSL https://raw.githubusercontent.com/ob-labs/memory-powermem/main/install.sh | bash -s -y
Target a different OpenClaw instance:
curl -fsSL https://raw.githubusercontent.com/ob-labs/memory-powermem/main/install.sh | bash -s -- --workdir ~/.openclaw-second
What the script does: resolve OpenClaw workdir → choose or default cli / http and paths → for CLI, optionally seed powermem.env if missing → deploy plugin to <workdir>/extensions/memory-powermem → npm install there → set OpenClaw config (plugins.enabled, slots.memory, entries.memory-powermem).
After (CLI): openclaw gateway, then openclaw ltm health — you usually do not need to edit powermem.env when using plugin defaults.
After (HTTP): start PowerMem with a proper .env in the server cwd, then start the gateway.
Copy a skill into OpenClaw
Copy one skill you want into ~/.openclaw/skills/<skill-name>/ (folder name should match the skill id). The quickstart and full-guide skills are independent.
Quickstart (install-memory-powermem) — Linux / macOS:
mkdir -p ~/.openclaw/skills/install-memory-powermem
cp /path/to/memory-powermem/skills/install-memory-powermem/SKILL.md \
~/.openclaw/skills/install-memory-powermem/
Full guide (install-memory-powermem-full) — Linux / macOS: copy all .md files in that folder.
mkdir -p ~/.openclaw/skills/install-memory-powermem-full
cp /path/to/memory-powermem/skills/install-memory-powermem-full/*.md \
~/.openclaw/skills/install-memory-powermem-full/
Full guide — Windows (PowerShell):
New-Item -ItemType Directory -Force "$env:USERPROFILE\.openclaw\skills\install-memory-powermem-full"
Copy-Item "path\to\memory-powermem\skills\install-memory-powermem-full\*.md" `
"$env:USERPROFILE\.openclaw\skills\install-memory-powermem-full\"
Multi-instance OpenClaw (--workdir / OPENCLAW_STATE_DIR)
Install script:
curl -fsSL https://raw.githubusercontent.com/ob-labs/memory-powermem/main/install.sh | bash -s -- --workdir ~/.openclaw-second
Manual config for that instance:
OPENCLAW_STATE_DIR=~/.openclaw-second openclaw config set plugins.slots.memory memory-powermem
Plugin data and default SQLite follow that instance’s stateDir.
Available Tools
| Tool | Description |
|---|---|
| memory_recall | Search long-term memories. Params: query, optional limit, scoreThreshold. |
| memory_store | Save text; optional infer. Params: text, optional importance. |
| memory_forget | Delete by memoryId or by query search. |
Configuration (summary)
| Field | Default | Description |
|---|---|---|
mode |
cli |
cli or http. |
baseUrl |
— | Required for HTTP; if mode omitted and baseUrl set → HTTP. |
apiKey |
— | HTTP server auth. |
envFile |
— | Optional CLI .env (used only if file exists). |
pmemPath |
pmem |
CLI binary path. |
useOpenClawModel |
true |
Inject LLM/embedding from OpenClaw + default SQLite under state dir. |
recallLimit |
5 |
Max memories per recall. |
recallScoreThreshold |
0 |
Min score 0–1. |
autoCapture / autoRecall / inferOnAdd |
true |
Auto memory pipeline and infer on add. |
Daily Operations
openclaw gateway
openclaw ltm health
openclaw ltm add "Some fact to remember"
openclaw ltm search "query"
openclaw config set plugins.slots.memory none
openclaw config set plugins.slots.memory memory-powermem
Restart the gateway after slot or plugin config changes.
Troubleshooting
| Symptom | Fix |
|---|---|
| Python < 3.10 | Run step 2 first; upgrade Python or use python3.11 / python3.12 for venv and pip install. Do not skip the version check. |
pip install powermem fails |
Confirm Python 3.10+, clean venv. See PowerMem issues. |
pmem not found |
Activate venv or set pmemPath to the full binary. |
openclaw ltm health unhealthy (CLI) |
Confirm agents.defaults.model and provider keys in OpenClaw; gateway version should expose plugin config + runtime.modelAuth. Or set useOpenClawModel: false and a full envFile. |
| Health OK but add/search errors | Embedding/LLM mismatch for your provider—see gateway logs; try optional PowerMem .env from .env.example. |
| Wrong SQLite file / instance | Data is under that OpenClaw instance’s stateDir (OPENCLAW_STATE_DIR / --workdir). |
| HTTP mode | Server running, baseUrl correct, apiKey if enabled. |
openclaw plugins list: no memory-powermem, or status is not loaded |
Re-run plugin install; set plugins.enabled true and plugins.slots.memory = memory-powermem; restart gateway; run openclaw plugins list again until memory-powermem shows loaded. |
| Add/search returns 500 or empty | Check PowerMem / gateway logs; often missing or mismatched LLM_* / EMBEDDING_* in envFile when useOpenClawModel is false or overrides are incomplete. |