OpenClaw
OpenClaw is a personal AI assistant you run on your own devices, one agent, reachable across WhatsApp, Telegram, Slack, Discord and more. The catch with a multi-channel agent is that memory usually fragments per channel. Korely fixes that: install one plugin, select it as your memory backend, and the agent carries the same memory, your typed facts, your graph, into every conversation.
korely-openclaw plugs into OpenClaw's exclusive memory slot.
Once selected, your agent gets the memory_* tools backed by
Korely, plus automatic recall before each turn.
Not available yet. korely-openclaw is not
published: it is on neither npm nor ClawHub, so the install command below
does not work today. This page describes the plugin as it will ship. Until
then, an OpenClaw agent can reach Korely through the
REST API or the
SDK.
Requirements
OpenClaw with plugin API 2026.4.24 or newer. The plugin
declares this in its compat; OpenClaw will refuse to load it
on an older gateway. Check with openclaw --version and upgrade
if you're behind.
You also need a Korely API key. Get one free, the hobby tier is free, no credit card.
Install
Once the plugin is published (not yet, see above), one command installs it:
openclaw plugins install korely-openclawSelect it as your memory backend
OpenClaw uses one exclusive memory slot. Point it at korely and
add your key (prefer ${KORELY_API_KEY} or a SecretRef
over a plaintext value), then restart the gateway:
{ plugins: { slots: { memory: "korely" }, entries: { korely: { enabled: true, config: { apiKey: "${KORELY_API_KEY}", userId: "default", autoRecall: true, // inject memory before each turn (default true) autoCapture: false, // store the reply after each turn (default false) topK: 6, }, }, }, },}openclaw gateway restartWhat your agent gets
With Korely selected as the memory backend, the agent can:
- Use the
memory_*tools,memory_search,memory_add,memory_get,memory_list,memory_update,memory_delete. These call Korely directly; typed facts are extracted and contradictions resolved server-side. - Auto-recall, before each turn, Korely's
get_contextassembles the user's active typed facts plus the most relevant memories and injects them as a<korely-memory>block. Pure retrieval: no model runs on the read path. - Auto-capture (opt-in), when enabled, the agent's reply is stored after each successful turn, embedded, and its entities extracted into the graph.
Example session: WhatsApp
Here is auto-recall in practice. You message your agent on WhatsApp; before the model runs, Korely injects the relevant context, and the agent answers with your own history.
You › When is my lease renewal due, and what did the landlord
say about the rent?
# auto-recall: get_context runs before the model and injects a
# <korely-memory> block with the facts that are true now
← injected context:
"Lease renewal call with Anna (2026-05-28): Renewal deadline is
July 1. Anna confirmed a 3% increase, 1,200 to 1,236 EUR per
month starting August. She wants the signed copy by post."
Agent › Your lease renewal is due July 1. On the May 28 call Anna
confirmed a 3% increase, 1,236 EUR per month starting in August,
and she asked for the signed copy by post. Want me to create a
task with a reminder for the last week of June? Read-only vs read-write
A multi-channel agent anyone can message is a bigger surface than a coding
assistant on your laptop. That's why autoCapture is
off by default: the agent reads memory (auto-recall +
memory_search) but only writes when it explicitly calls
memory_add. Once you trust the loop, turn on auto-capture to
have replies stored automatically:
config: { apiKey: "${KORELY_API_KEY}", autoRecall: true, autoCapture: true, // now replies are stored after each successful turn}Configuration
| Key | Default | What it does |
|---|---|---|
apiKey | KORELY_API_KEY env | Your kor_live_... key. |
baseUrl | https://api.korely.ai | API base URL override. |
userId | None | Default end-user scope for memories. |
agentId | openclaw | Label stored on writes. |
autoRecall | true | Inject relevant memories + facts before each turn. |
autoCapture | false | Store the agent's reply after each successful turn. |
topK | 6 | Max results for memory_search / memory_list. |
tokenBudget | 800 | Token budget for the auto-recall block. |
Troubleshooting
| Symptom | Fix |
|---|---|
| Plugin installed but no memory tools |
Set plugins.slots.memory to "korely" and
restart the gateway (openclaw gateway restart). Only one
plugin can own the memory slot. Verify with
openclaw plugins inspect korely --runtime --json.
|
401 invalid_key in the gateway logs |
Set KORELY_API_KEY in the gateway's environment (or
config.apiKey); the key must start with kor_live_.
|
429 quota_exceeded | You've hit the write quota for your tier (the hobby tier allows 250 writes and 25,000 queries per month). Upgrade if you need more. |
| Auto-recall injects nothing |
Add memories first (memory_add or
autoCapture: true), the agent can't recall what hasn't
been stored, and keep userId consistent between writes and reads.
|
Why Korely
Reads are retrieval, not generation. Memories become typed facts with bi-temporal validity, so when a new memory contradicts an old one the old fact is superseded, invalidated, never silently overwritten. Auto-recall returns the facts that are true now plus the relevant memories, assembled rather than re-generated. EU-hosted.
For the full method surface, see the SDK reference. For how facts, supersession and time work, see temporal facts.
Something not working? Email
[email protected] with your OpenClaw
version (openclaw --version) and the gateway log line you're
seeing. We read every message.