Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Channels: Overview

A channel is a messaging surface the agent talks through. One ZeroClaw instance can bind multiple channels simultaneously: the same agent can answer in Discord, Telegram, email, and over the REST gateway without you running separate processes.

An agent lists the channels it answers on; see Agents for how channels attach to an agent (and how a peer group lets agents on a shared channel address each other).

Channels are implementations of the Channel trait in zeroclaw-api. Each one is feature-gated at compile time, so a minimal build only includes the channels you want.

The default ZeroClaw build includes a lean channel bundle: ACP, webhook, email, and Telegram. These cover local/editor sessions, gateway ingress, and common first-run external messaging without compiling every bundled platform integration. Pre-built binaries use this lean default. For source installs that need the historical broad channel set, run install.sh --source --preset full, build with --features channels-full, or use individual channel-* features for selective builds:

sh

./install.sh --source --preset full
cargo build --features channels-full
cargo build --no-default-features --features "agent-runtime,gateway,channel-discord"

Categories

Chat platforms

Real-time messaging where the agent can hold a conversation, get notified of new messages via push or long-poll, and reply as a bot user.

ChannelFeature flagDedicated guide
Matrixchannel-matrixMatrix
Mattermostchannel-mattermostMattermost
LINEchannel-lineLINE
Nextcloud Talkchannel-nextcloudNextcloud Talk
Signalchannel-signalSignal
WhatsApp Cloud APIchannel-whatsapp-cloudWhatsApp
WhatsApp Webwhatsapp-webWhatsApp
Discord, Slack, Telegram, iMessage, WeChat personal iLink Bot, DingTalk, Lark, QQ, IRC, Mochat, Notionper channelOther chat platforms

Social & broadcast

One-to-many or public-feed integrations.

ChannelFeature flagProtocol / service
Blueskychannel-blueskyAT Protocol
Nostrchannel-nostrNIP-01 relays
Twitter / Xchannel-twitterAPI v2
Redditchannel-redditJSON API

See Social channels.

Email

ChannelFeature flagNotes
IMAP / SMTPchannel-emailClassic poll-based inbox
Gmail Pushchannel-emailGoogle Pub/Sub push notifications: real-time, no polling

See Email.

Voice & telephony

ChannelFeature flagService
ClawdTalkchannel-clawdtalkTelnyx SIP real-time voice
Voice Callchannel-voice-callTwilio / Telnyx / Plivo
Voice Wakevoice-wakeLocal wake-word detection
TTSalways compiled with channel supportOutbound speech synthesis (OpenAI, ElevenLabs, Google Cloud, Edge, Piper)

See Voice & telephony.

Webhooks & programmatic

ChannelFeature flagShape
Webhookchannel-webhookInbound HTTP → agent
CLIalways onLocal stdin/stdout
Gateway REST/WSalways onHTTP + WebSocket
ACP (Agent Client Protocol)channel-acp-serverJSON-RPC 2.0 over stdio: editor/IDE sessions

See Webhooks and ACP.

Configuration

Modern channel instances are configured under [channels.<type>.<alias>], with default as the common first alias. Set them through any config surface:

Gateway dashboard

Open /config/channels in the web dashboard.

zerocode

In the Config pane, under Channels.

Secrets (bot tokens, API keys, passwords) are stored encrypted; set them through the gateway, zerocode, or zeroclaw config set (masked), never in plaintext. The channels entry on an agent binds a channel alias to that agent. Field names differ per channel; zeroclaw config schema is the authoritative list. Fields that recur across many channels:

KeyWhat it does
enabledOn/off without removing the section
mention_onlyIgnore messages that don’t @-mention the bot (chat platforms)
proxy_urlPer-channel proxy (http/https/socks5/socks5h); overrides global [proxy]
excluded_toolsTools withheld from the model when answering on this channel
draft_update_interval_msStreaming edit cadence (default 500 ms)
approval_timeout_secsSeconds to wait for operator approval on always_ask tools before auto-denying

Inbound senders are gated through peer groups, not a per-channel field.

Streaming capability

Channels declare what kind of streaming they support: see Providers → Streaming for the capability matrix and what supports_draft_updates / supports_multi_message_streaming mean.

Adding a channel

Implementing a new channel means adding a file to crates/zeroclaw-channels/src/ that implements the Channel trait. The canonical reference is any existing channel of similar shape: discord.rs for push-based, email_channel.rs for polling, webhook.rs for HTTP-driven.