Overview
Corvus supports 15+ messaging platforms through a unified channel system. Each channel can be independently configured with authentication, allowlists, and platform-specific settings.Supported Channels
Telegram
Bot API with streaming support
Discord
WebSocket gateway integration
Slack
Socket Mode and webhook support
Meta Business Cloud API
Matrix
Decentralized messaging
Signal
signal-cli HTTP integration
iMessage
macOS AppleScript integration
IRC
Classic IRC with TLS
IMAP/SMTP support
Lark/Feishu
WebSocket & webhook modes
DingTalk
Stream Mode integration
Official Bot SDK
Mattermost
Self-hosted Slack alternative
Webhook
HTTP webhook endpoint
CLI
Command-line interface
Channel Security Model
Allowlist behavior:- Empty array
[]: Deny all inbound messages (secure by default) - Wildcard
["*"]: Allow all senders (explicit opt-in) - Specific IDs: Exact-match allowlist (recommended)
Finding Your Identity
If you’re unsure which identity to allowlist:- Start the channel with an empty allowlist
- Send a test message to your bot
- Check the logs for the unauthorized sender identity
- Add that value to
allowed_usersand rerun channel setup
Telegram Configuration
Create a Bot
Message @BotFather on Telegram and create a new bot with
/newbot.Configuration Fields
Bot token from @BotFather.
List of allowed Telegram usernames (without
@) or user IDs.Examples:- Username:
["alice", "bob"] - User ID:
["123456789"] - Allow all:
["*"]
Streaming mode for progressive response updates:
off: Send complete response as single message (default)partial: Update draft message during generation
Minimum interval between draft message edits (to avoid rate limits).
Discord Configuration
Create Application
Go to Discord Developer Portal and create a new application.
Create Bot
Under “Bot”, click “Add Bot” and enable:
- Message Content Intent
- Server Members Intent (optional)
Invite Bot
Under “OAuth2” → “URL Generator”, select:
- Scopes:
bot - Permissions:
Send Messages,Read Message History
Configuration Fields
Bot token from Discord Developer Portal.
Server (guild) ID to restrict bot to. Leave empty for all servers.
List of allowed Discord user IDs (numeric).
Process messages from other bots (always ignores own messages).
Only respond to messages that @mention the bot.
Slack Configuration
Create Slack App
Go to Slack API and create a new app.
Add Bot Scopes
Under “OAuth & Permissions”, add bot token scopes:
chat:writechannels:historygroups:historyim:history
Configuration Fields
Bot User OAuth Token (starts with
xoxb-).App-level token for Socket Mode (starts with
xapp-).Specific channel ID to monitor. Leave empty for all channels.
List of allowed Slack member IDs (starts with
U).WhatsApp Configuration
Create Meta Business App
Go to Meta for Developers and create a Business app.
Get Credentials
From WhatsApp → API Setup:
- Copy Access Token
- Copy Phone Number ID
- Define a Verify Token (any random string)
Configuration Fields
Access token from Meta Business Suite.
Phone number ID from WhatsApp API Setup.
Webhook verification token (you define this).
App secret for webhook signature verification. Can also be set via
CORVUS_WHATSAPP_APP_SECRET.Allowed phone numbers in E.164 format (e.g.,
+1234567890).Use ["*"] to allow all numbers.Signal Configuration
Requires signal-cli running in HTTP daemon mode.URL of signal-cli HTTP daemon.
E.164 phone number of signal-cli account.
Filter messages by group:
- Omit: Accept all messages (DMs and groups)
"dm": Only accept direct messages- Group ID: Only accept messages from specific group
Allowed sender phone numbers in E.164 format.
Lark/Feishu Configuration
Lark (international) and Feishu (China) support two receive modes:Event receive mode:
websocket: Persistent connection, no public URL required (recommended)webhook: HTTP callback, requires public HTTPS endpoint
Use Feishu (China) endpoint instead of Lark (international).
IRC Configuration
Email Configuration
Webhook Configuration
Generic HTTP webhook endpoint:Channel Health Checks
Check the health of configured channels:- Authentication credentials
- Network connectivity
- API endpoint availability
- Webhook configuration
Quick Reconfiguration
To reconfigure channels without affecting other settings:Complete Example
Next Steps
Memory Configuration
Configure memory backends and embedding providers