Skip to content

Channels overview

OpenCorvus channel ingress with native adapters and explicitly planned provider integrations.

packages/channel-runtime/ maps every external platform to a platform : channel : thread identity. Each thread owns one OpenCorvus session, so replies retain the same task context.

Supported channels

ChannelCatalog exposes 27 channel identities. Thirteen native adapters are runtime-ready; fourteen provider integrations remain planned. The catalog is the single source for backend configuration, runtime construction, the Overlay settings UI, and documentation links.

Native OpenCorvus adapters

ChannelDocumentationTransport
SlackSetupSocket Mode
TelegramSetupLong polling
DiscordSetupGateway WebSocket
Feishu / LarkSetupWebhook
WhatsAppSetupWhatsApp Business webhook
Google ChatSetupWebhook
Microsoft TeamsSetupWebhook
LINESetupWebhook
MatrixSetupLong polling
MattermostSetupWebhook
SignalSetupSignal CLI service
WeComSetupWebhook
DingTalkSetupWebhook

Planned provider integrations

The remaining 14 identities are not runtime-ready. Their current upstream packages require the OpenClaw application runtime rather than a thin standalone provider contract. OpenCorvus does not embed that application runtime or maintain a large compatibility runtime.

ChannelOfficial documentationCandidate source
ClickClackOpenClaw@openclaw/clickclack
iMessageOpenClawopenclaw runtime
IRCOpenClaw@openclaw/irc
Nextcloud TalkOpenClaw@openclaw/nextcloud-talk
NostrOpenClaw@openclaw/nostr
QQ BotOpenCorvus fields · OpenClaw@openclaw/qqbot
RaftOpenClaw@openclaw/raft
ReefOpenClawopenclaw runtime
SMSOpenClaw@openclaw/sms
Synology ChatOpenClaw@openclaw/synology-chat
TlonOpenClaw@openclaw/tlon
TwitchOpenClaw@openclaw/twitch
ZaloOpenClaw@openclaw/zalo
Zalo PersonalOpenClaw@openclaw/zalouser

Run channel-runtime

Terminal window
cd packages/channel-runtime
cp .env.example .env
bun run dev

registerAdapters() starts configured native channels and skips planned entries.

Message flow

Provider gateway
-> ChannelAdapter.onMessage(IncomingMessage)
-> ChannelRuntime.handleMessage()
-> session create/reuse
-> client.session.prompt()
-> exact assistant response
OpenCorvus event stream
-> ChannelRuntime.handleEvent()
-> provider-owned sendText/sendMedia

OpenCorvus remains authoritative for sessions, channel links, permissions, attachments, and model execution.

Add a channel

  • Promote a planned provider only when it exposes a thin standalone lifecycle/ingress/outbound contract; do not reproduce another application’s runtime surface.
  • For an OpenCorvus-specific channel, add one native adapter and register its factory in the native factory projector.
  • Do not add a provider switch, a second channel list, or a large compatibility runtime.

See Environment reference for shared controls.