Caricamento in corso...
Caricamento in corso...
Last synced: Today, 22:00
Technical reference for the OpenClaw framework. Real-time synchronization with the official documentation engine.
Use this file to discover all available pages before exploring further.
OpenClaw routes replies back to the channel where a message came from. The model does not choose a channel; routing is deterministic and controlled by the host configuration.
telegramwhatsappdiscordircgooglechatslacksignalimessagelinewebchatchannels.<channel>.defaultAccountaccountIddefaultAccountaccounts.defaultDirect messages collapse to the agent’s main session by default:
agent:<agentId>:<mainKey>agent:main:mainEven when direct-message conversation history is shared with main, sandbox and tool policy use a derived per-account direct-chat runtime key for external DMs so channel-originated messages are not treated like local main-session runs.
Groups and channels remain isolated per channel:
agent:<agentId>:<channel>:group:<id>agent:<agentId>:<channel>:channel:<id>Threads:
:thread:<threadId>:topic:<topicId>Examples:
agent:main:telegram:group:-1001234567890:topic:42agent:main:discord:channel:123456:thread:987654When
session.dmScopemainlastRouteallowFromallowFromIn that mismatch case, OpenClaw still records inbound session metadata, but it skips updating the main session
lastRouteChannel plugins can mark an inbound session record as
createIfMissing: falselastRouteRouting picks one agent for each inbound message:
bindingspeer.kindpeer.idguildIdrolesguildIdteamIdaccountIdaccountId: "*"agents.list[].defaultmainWhen a binding includes multiple match fields (
peerguildIdteamIdrolesThe matched agent determines which workspace and session store are used.
Broadcast groups let you run multiple agents for the same peer when OpenClaw would normally reply (for example: in WhatsApp groups, after mention/activation gating).
Config:
json5{ broadcast: { strategy: "parallel", "120363403215116621@g.us": ["alfred", "baerbel"], "+15555550123": ["support", "logger"], }, }
See: Broadcast Groups.
agents.listbindingsExample:
json5{ agents: { list: [{ id: "support", name: "Support", workspace: "~/.openclaw/workspace-support" }], }, bindings: [ { match: { channel: "slack", teamId: "T123" }, agentId: "support" }, { match: { channel: "telegram", peer: { kind: "group", id: "-100123" } }, agentId: "support" }, ], }
Session stores live under the state directory (default
~/.openclaw~/.openclaw/agents/<agentId>/sessions/sessions.jsonYou can override the store path via
session.store{agentId}Gateway and ACP session discovery also scans disk-backed agent stores under the default
agents/session.storesessions.jsonWebChat attaches to the selected agent and defaults to the agent’s main session. Because of this, WebChat lets you see cross‑channel context for that agent in one place.
Inbound replies include:
ReplyToIdReplyToBodyReplyToSenderBody[Replying to ...]This is consistent across channels.
© 2024 TaskFlow Mirror
Powered by TaskFlow Sync Engine