EverMemOS memory plugin for OpenClaw.
This plugin provides:
- Auto-Recall: retrieve relevant long-term memories before each agent turn and inject them via
prependContext. - Auto-Capture: capture conversation turns after each run and store them in EverMemOS.
- Explicit memory tools: search, store, and profile access from the agent.
- CLI and slash commands for setup/status/search/wipe workflows.
openclaw plugins install @evermemos/openclaw-evermemosSet memory slot:
plugins:
slots:
memory: openclaw-evermemosplugins:
entries:
openclaw-evermemos:
enabled: true
config:
baseUrl: http://localhost:1995
userId: your-user-id
recallEnabled: true
captureEnabled: true| Field | Type | Default | Notes |
|---|---|---|---|
baseUrl |
string |
http://localhost:1995 |
EverMemOS server base URL |
apiKey |
string? |
undefined |
Reserved for hosted mode |
userId |
string |
default-user |
Memory scope identifier |
recallEnabled |
boolean |
true |
Enable auto-recall hook |
recallMaxResults |
number |
6 |
Max injected memory count |
retrieveMethod |
hybrid | embedding | bm25 | agentic | rrf |
hybrid |
embedding->vector, bm25->keyword mapping |
memoryTypes |
string[] |
["episodic_memory", "profile"] |
Memory types to search |
includeProfile |
boolean |
true |
Include profile in context |
profileFrequency |
number |
10 |
Inject full profile every N turns |
captureEnabled |
boolean |
true |
Enable auto-capture hook |
captureStrategy |
last_turn | all | user_only |
last_turn |
Turn selection strategy |
asyncMode |
boolean |
true |
Capture in fire-and-forget mode |
debug |
boolean |
false |
Extra debug logs |
queryPrefix |
string? |
undefined |
Optional recall query prefix |
tags |
string[] |
[] |
Optional tags used in capture |
timeoutMs |
number |
5000 |
HTTP timeout for all API calls |
Hooks: before_prompt_build and before_agent_start (compatibility).
Flow:
- Extract latest user message from current run context.
- Search EverMemOS (
/api/v1/memories/search). - Format memory block into:
<evermemos_context>...</evermemos_context>- Return
{ prependContext }.
Failure behavior: logs warning and continues without memory injection.
Hook: agent_end.
Flow:
- Extract turns from run messages.
- Filter by
captureStrategy. - Store selected turns via
/api/v1/memories.
Failure behavior: never breaks user response path.
evermemos_memory_search- Query long-term memory.
evermemos_memory_store- Explicitly store memory content.
evermemos_memory_profile- Get profile memory.
- Update action currently returns TODO fallback until stable profile write schema is finalized.
openclaw evermemos setup
openclaw evermemos status
openclaw evermemos search "<query>" --limit 6
openclaw evermemos wipe --yes/memory search <query>
/memory store <content>
/memory profile
GET /healthPOST /api/v1/memoriesGET /api/v1/memories/searchDELETE /api/v1/memories(for CLI wipe)
npm install
npm run typecheckUse the provided script on a real machine with OpenClaw + EverMemOS running:
./scripts/e2e-acceptance.shOptional environment overrides:
EVERMEMOS_BASE_URL=http://localhost:1995 \
EVERMEMOS_USER_ID=your-user-id \
OPENCLAW_CONFIG_PATH=/path/to/openclaw.yml \
REPORT_PATH=./TEST_REPORT_E2E.md \
./scripts/e2e-acceptance.shThe script validates checklist items and outputs a Markdown report file.
- Local-first defaults are intentional (
localhost:1995). - Memory slot is exclusive in OpenClaw (
kind: "memory"). - If EverMemOS is down, plugin degrades gracefully (no hard failure).