OpenClaw
OpenClaw is a personal AI assistant you run on your own devices: one agent, reachable on WhatsApp, Telegram, Slack, Discord and more. With a multi-channel agent, memory tends to split per channel. The Korely plugin keeps it in one place: install it, select it as your memory backend, and the agent carries the same memories and facts into every conversation.
korely-openclaw goes into OpenClaw's memory slot, which holds
one plugin at a time. Once selected, your agent gets six
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 (on 1 November 2026 npm answered 404 for the
package). This page describes the plugin as it is written in our
repository, version 0.1.0. Its tests pass, and the
openclaw commands below are the ones OpenClaw documents, but
we have not run the plugin inside a live OpenClaw gateway. Until it is
published, 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 field, which OpenClaw checks when
you install it. Check with openclaw --version and upgrade
if you're behind.
You also need a Korely API key. Get one free: the Hobby plan costs nothing.
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 has one memory slot. Point it at korely and add your
key (use ${KORELY_API_KEY} or a SecretRef, not the key
in plain text), 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_updateandmemory_delete. They call Korely directly. Korely writes the facts and closes replaced ones on its own side, about ten seconds after a write (extraction). - Auto-recall. Before each turn, Korely's
get_contextassembles the facts that are true now plus the most relevant memories, and the plugin adds them to the prompt as a<korely-memory>block (a context block). No language model runs on Korely's side when it reads. - Auto-capture (off by default). When you turn it on, the agent's reply is stored as a memory after each successful turn, and Korely writes facts from it like from any other memory.
Example session: WhatsApp
Here is auto-recall in practice. You message your agent on WhatsApp. Before the model runs, the plugin adds the relevant context, and the agent answers from your own history. The text below is an example.
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 (abridged, from its memories section):
"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
An agent that anyone can message on several channels is exposed to more
input than a coding assistant on your laptop. That is why
autoCapture is off by default. The agent
reads memory (auto-recall and memory_search) but writes only
when it calls memory_add, memory_update or
memory_delete. Every stored reply also counts as a write
against your monthly quota. Once you trust the loop, turn on auto-capture
to store replies 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 for reads and writes. Without it, reads cover every end user of the project, so set it when more than one person talks to the agent. |
agentId | openclaw | The agent name: stored on writes and used to filter memory_search, memory_list and auto-recall, so memories written under another agent_id are not recalled. It counts toward your plan's named agents. |
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 have used your plan's monthly writes or queries (the message says which; the Hobby plan 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), because the agent cannot recall what
was never stored. Also keep userId and agentId
the same for writes and reads.
|
Why Korely
Korely turns memories into facts with dates. When a new memory replaces an old fact, the old fact is closed with its end date and stays in history, and is not overwritten. Auto-recall returns the facts that are true now plus the relevant memories, assembled and not rewritten by a model. Your data is stored in the EU.
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.