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
| Channel | Documentation | Transport |
|---|---|---|
| Slack | Setup | Socket Mode |
| Telegram | Setup | Long polling |
| Discord | Setup | Gateway WebSocket |
| Feishu / Lark | Setup | Webhook |
| Setup | WhatsApp Business webhook | |
| Google Chat | Setup | Webhook |
| Microsoft Teams | Setup | Webhook |
| LINE | Setup | Webhook |
| Matrix | Setup | Long polling |
| Mattermost | Setup | Webhook |
| Signal | Setup | Signal CLI service |
| WeCom | Setup | Webhook |
| DingTalk | Setup | Webhook |
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.
| Channel | Official documentation | Candidate source |
|---|---|---|
| ClickClack | OpenClaw | @openclaw/clickclack |
| iMessage | OpenClaw | openclaw runtime |
| IRC | OpenClaw | @openclaw/irc |
| Nextcloud Talk | OpenClaw | @openclaw/nextcloud-talk |
| Nostr | OpenClaw | @openclaw/nostr |
| QQ Bot | OpenCorvus fields · OpenClaw | @openclaw/qqbot |
| Raft | OpenClaw | @openclaw/raft |
| Reef | OpenClaw | openclaw runtime |
| SMS | OpenClaw | @openclaw/sms |
| Synology Chat | OpenClaw | @openclaw/synology-chat |
| Tlon | OpenClaw | @openclaw/tlon |
| Twitch | OpenClaw | @openclaw/twitch |
| Zalo | OpenClaw | @openclaw/zalo |
| Zalo Personal | OpenClaw | @openclaw/zalouser |
Run channel-runtime
cd packages/channel-runtimecp .env.example .envbun run devregisterAdapters() 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/sendMediaOpenCorvus 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.