EverOS OpenClaw Plugin gives OpenClaw persistent memory through the ContextEngine API.
Important distinction:
context-engine plugin, not a memory slot plugin.Use this skill when the user wants to:
Use this skill when the user wants:
memory_store / memory_searchDo not use this skill for:
Automatic lifecycle behavior:
HookTriggerWhat happensbootstrap()Session startsBackend health check and session state initassemble()Before each turnSearches relevant memory and injects it as contextafterTurn()After each turnSaves new messages from the turncompact()Compaction checkParticipates in token-budget decisionsdispose()Session endsClears in-memory session state
User-facing result:
This task is not complete until all of the following are true:
openclaw.json is configured correctlyBefore changing anything, tell the user:
OpenClaw will need a restart during setup. After restart, wait about 1 minute, then send a short natural-language message here to verify memory.
Do not skip this notice if you are going to restart OpenClaw automatically.
Default backend:
bash
curl -sf http://localhost:1995/health && echo "OK" || echo "NOT_RUNNING"
If the backend is healthy, continue.
If it is not healthy, tell the user plainly:
The EverOS backend is not reachable yet. I can still finish plugin installation now, but automatic recall/save will not work until the backend is running.
If the user asks how to start the backend, give the shortest useful path:
bash
git clone https://github.com/EverMind-AI/EverMemOS.git
cd EverMemOS
docker compose up -d
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync
cp env.template .env
# edit .env
uv run python src/run.py
Preferred one-shot install:
bash
npx --yes --package @evermind-ai/openclaw-plugin everos-install
Manual alternative:
bash
npm install -g @evermind-ai/openclaw-plugin
everos-install
What the installer does:
plugins.load.pathsevermind-ai-everos to plugins.allowplugins.slots.contextEngine = "evermind-ai-everos"plugins.slots.memory = "none" to avoid slot conflictsplugins.entries["evermind-ai-everos"]If the installer is unavailable, patch ~/.openclaw/openclaw.json manually.
Expected config shape:
json
{
"plugins": {
"allow": ["evermind-ai-everos"],
"slots": {
"memory": "none",
"contextEngine": "evermind-ai-everos"
},
"entries": {
"evermind-ai-everos": {
"enabled": true,
"config": {
"baseUrl": "http://localhost:1995",
"userId": "everos-user",
"groupId": "everos-group",
"topK": 5,
"memoryTypes": ["episodic_memory", "profile", "agent_skill", "agent_case"],
"retrieveMethod": "hybrid"
}
}
}
}
}
Merge-safe patch:
bash
jq '
.plugins = (.plugins // {}) |
.plugins.load = (.plugins.load // {}) |
.plugins.load.paths = ((.plugins.load.paths // []) + ["/path/to/evermemos-openclaw-plugin"] | unique) |
.plugins.allow = ((.plugins.allow // []) + ["evermind-ai-everos"] | unique) |
.plugins.slots = (.plugins.slots // {}) |
.plugins.slots.memory = "none" |
.plugins.slots.contextEngine = "evermind-ai-everos" |
.plugins.entries = (.plugins.entries // {}) |
.plugins.entries["evermind-ai-everos"].enabled = true |
.plugins.entries["evermind-ai-everos"].config = (
(.plugins.entries["evermind-ai-everos"].config // {}) + {
"baseUrl": "http://localhost:1995",
"userId": "everos-user",
"groupId": "everos-group",
"topK": 5,
"memoryTypes": ["episodic_memory", "profile", "agent_skill", "agent_case"],
"retrieveMethod": "hybrid"
}
)
' ~/.openclaw/openclaw.json > tmp.json && mv tmp.json ~/.openclaw/openclaw.json
Restart command:
bash
openclaw gateway restart
Immediately before restart, tell the user:
EverOS is installed. I am restarting OpenClaw now. After about 1 minute, send a short message so we can verify memory recall.
Verification has two parts.
Backend:
bash
curl http://localhost:1995/health
User-facing natural-language test:
Say: "Remember: I like espresso."
Then ask: "What coffee do I like?"
This is the preferred validation because it checks the real user flow instead of just config.
After successful setup, send this handoff message in the user's language. Do not remove sections.
text
EverOS is ready.
-- WHAT YOU CAN DO NEXT --
From now on, you can use normal natural language to make OpenClaw remember information.
You do not need to call memory tools manually.
Examples:
- "Remember: I like espresso."
- "Remember: this project uses PostgreSQL by default."
- "My coding style prefers small functions and explicit naming."
Later you can ask:
- "What coffee do I like?"
- "What database does this project use by default?"
-- CURRENT CONNECTION --
EverOS backend:
BASE_URL: <base-url>
OpenClaw config file:
~/.openclaw/openclaw.json
-- RECOVERY --
1. Keep your EverOS backend data and configuration
2. Reinstall this plugin on the new machine
3. Write the same `baseUrl`, `userId`, and `groupId` back into `openclaw.json`
4. Restart OpenClaw to reconnect to the same memory space
-- BACKUP --
- Back up `~/.openclaw/openclaw.json`
- Back up the EverOS backend data directory or database
- Back up the EverMemOS `.env` and deployment configuration
SymptomFixPlugin not loadingCheck plugins.allow, plugins.load.paths, and plugins.slots.contextEngineBackend unhealthyCheck baseUrl and ensure the EverOS backend is runningNo recallVerify the backend contains memories and the query is meaningfulNo saveVerify afterTurn() is running and backend write API is reachableMemory plugin conflictMake sure plugins.slots.memory = "none"
Base: http://localhost:1995
MethodPathDescriptionGET/healthHealth checkPOST/api/v1/memoriesSave memoryGET/api/v1/memories/searchSearch memoryDELETE/api/v1/memoriesDelete memory
When talking to users:
memory slot plugin