Channels are Corvus’s messaging interfaces that allow your AI agent to communicate across multiple platforms simultaneously. Each channel implements a commonDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/dallay/corvus/llms.txt
Use this file to discover all available pages before exploring further.
Channel trait, providing a unified API for sending and receiving messages.
Channel Trait Interface
All channels implement the coreChannel trait defined in clients/agent-runtime/src/channels/traits.rs:
Message Types
ChannelMessage
Represents an incoming message from a channel:SendMessage
Represents an outgoing message to send:Supported Channels
Corvus supports a wide variety of messaging platforms:Real-Time Channels
- CLI - Command-line interface (stdin/stdout)
- Telegram - Telegram bot via long-polling
- Discord - Discord bot via WebSocket Gateway
- Slack - Slack bot via WebSocket API
- iMessage - macOS iMessage integration
- Matrix - Matrix protocol client
Webhook-Based Channels
- WhatsApp - WhatsApp Business Cloud API (Meta)
- Webhook - Generic HTTP webhook receiver
Enterprise Channels
- Lark - ByteDance Lark/Feishu
- DingTalk - Alibaba DingTalk
- QQ - Tencent QQ
- Mattermost - Self-hosted Mattermost
Legacy Channels
- IRC - Internet Relay Chat
- Signal - Signal messaging via signal-cli
- Email - SMTP/IMAP email integration
Allowlist Security Model
All channels use an allowlist-based security model to control who can interact with your agent:Configuration Pattern
Each channel has anallowed_users or allowed_numbers field:
Wildcard Access
Use"*" to allow all users (not recommended for production):
Empty Allowlist
An empty allowlist denies everyone by default - you must explicitly add users.Identity Formats
- Telegram: Username (without
@) or numeric user ID - Discord: Numeric user ID (snowflake ID)
- WhatsApp: Phone number in E.164 format (
+1234567890) - Slack: User ID from Slack API
- CLI: Always allows
"user"
Common Patterns
Starting Channels
Start all configured channels in daemon mode:Health Checks
Verify channel connectivity and authentication:Listing Channels
See which channels are configured:Binding Users (Telegram)
For Telegram, you can bind a user from the CLI:Channel-Specific Features
Draft Updates
Some channels support progressive message updates (streaming):- Telegram: Supported (editable messages)
- Discord: Limited (typing indicator only)
- CLI: No (instant output)
- WhatsApp: No (webhook-based)
Typing Indicators
Channels send typing indicators while processing:- Telegram:
sendChatActionwith"typing" - Discord:
POST /channels/{id}/typing - Slack: Slack WebSocket typing event
Message Splitting
Long messages are automatically split to respect platform limits:- Telegram: 4096 characters
- Discord: 2000 characters
- WhatsApp: 4096 characters
Configuration Example
Complete multi-channel configuration in~/.corvus/config.toml:
Next Steps
- Telegram Setup - Configure Telegram bot with BotFather
- Discord Setup - Create Discord application and bot
- WhatsApp Setup - Set up Meta Business Cloud API
- CLI Usage - Use the command-line interface
Reference
- Source:
clients/agent-runtime/src/channels/ - Trait definition:
clients/agent-runtime/src/channels/traits.rs - Channel implementations:
clients/agent-runtime/src/channels/{telegram,discord,whatsapp,cli}.rs