Korely

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:

Terminal window
openclaw plugins install korely-openclaw

Select 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", // the person the memories are about (see the table below)
autoRecall: true, // inject memory before each turn (default true)
autoCapture: false, // store the reply after each turn (default false)
topK: 6,
},
},
},
},
}
Terminal window
openclaw gateway restart

What 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 and memory_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_context assembles 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.

openclaw agent whatsapp
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

KeyDefaultWhat it does
apiKeyKORELY_API_KEY envYour kor_live_... key.
baseUrlhttps://api.korely.aiAPI base URL override.
userIdNoneDefault end user for reads and writes. Without it, reads cover every end user of the project, and, since Korely 1.0.12, a memory the plugin saves (with its agentId and no userId) is read as the agent's own memory, not as a person's. If the memories are about the person who talks to the agent, set it; with more than one person, set it for each.
agentIdopenclawThe 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.
autoRecalltrueInject relevant memories + facts before each turn.
autoCapturefalseStore the agent's reply after each successful turn.
topK6Max results for memory_search / memory_list.
tokenBudget800Token budget for the auto-recall block.

Troubleshooting

SymptomFix
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.