Every inbound and outbound message in ZeroClaw flows through theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/openagen/zeroclaw/llms.txt
Use this file to discover all available pages before exploring further.
Channel trait. The trait normalises platform differences — polling vs. webhooks, threading models, typing indicators, reactions — so the agent orchestration layer never needs to know which platform it is talking on.
Channel trait
The trait lives atsrc/channels/traits.rs. Three methods are required; the rest have default no-op implementations you can override.
ChannelMessage carries a normalised message with fields id, sender, reply_target, content, channel, timestamp, and an optional thread_ts for platforms that support threading.
Built-in channels
CLI
Interactive terminal session. Polling (stdin read loop).
Telegram
Telegram Bot API. Polling via
getUpdates with long-poll timeout.Discord
Discord Bot. Polling via gateway websocket.
Slack
Slack Bot. Webhook or Socket Mode.
Mattermost
Mattermost Bot. Webhook delivery.
iMessage
iMessage via BlueBubbles or similar bridge. Polling.
Matrix
Matrix protocol. Polling via sync API.
Signal
Signal Messenger via signal-cli bridge. Polling.
WhatsApp via WA Web bridge. Polling.
Linq
Linq messaging. Polling.
IMAP/SMTP email channel. Polling.
IRC
IRC client. Polling via TCP connection.
Lark
Lark / Feishu. Webhook delivery.
DingTalk
DingTalk. Webhook delivery.
Tencent QQ. Polling.
Nostr
Nostr decentralised protocol. Relay polling.
Webhook
Generic inbound webhook endpoint. Push delivery via ZeroClaw gateway.
MQTT
MQTT broker subscription. Polling via broker keep-alive.
Nextcloud Talk
Nextcloud Talk. Polling.
WATI
WATI WhatsApp Business API. Webhook delivery.
ClawdTalk
ZeroClaw-native inter-agent channel.
Delivery modes
| Mode | How it works | Examples |
|---|---|---|
| Polling | ZeroClaw calls the platform API on a timer or long-poll loop | Telegram, Discord, Matrix, Signal, QQ, IRC, Email |
| Webhook / Push | Platform pushes events to ZeroClaw’s gateway server | Slack Socket Mode, Lark, DingTalk, WATI, generic Webhook |
src/gateway/) must be reachable from the platform. Use a tunnel (cloudflare, tailscale, ngrok, or custom) to expose a local instance.
Channel allowlist
Each channel supports anallowed_users list that gates which senders the agent will process. Messages from users not on the list are silently dropped in the listen loop before they reach the orchestration layer.
CLI commands
Registering a new channel
Implement the Channel trait
Create your implementation file in
src/channels/. Implement the three required methods: name(), send(), and listen().Register in the channel factory
Add your channel to
src/channels/mod.rs so it can be instantiated from config.