Channels

14 adapters, one unified message format. Every adapter normalizes inbound messages into the same InboundMessage shape regardless of platform.

ChannelRequired config keysAuth method
Telegrambot_token@BotFather bot token
Discordbot_tokenDiscord Developer Portal bot token
Slackbot_token, app_tokenSlack app tokens (socket mode)
WhatsAppphone_number_id, access_tokenMeta permanent access token
Emailusername, password (IMAP+SMTP)IMAP/SMTP credentials
SMSaccount_sid, auth_token, from_numberTwilio credentials
Matrixhomeserver, user_id, access_tokenMatrix access token
IRCserver, nickNone (or SASL via server config)
Signalphone_numberLocal signal-cli registration
Webhooknone requiredOptional HMAC secret
Mastodoninstance_url, access_tokenOAuth2 access token
Microsoft Teamsapp_id, app_passwordAzure Bot Framework
MattermosttokenPersonal access token
Nextcloud Talkurl, username, password, room_tokenNextcloud credentials

Enabling a channel

Either run the guided wizard:

cortex channels add discord

Or write the config block directly — every key supports ENV:VAR_NAME secret resolution:

[channels.discord]
enabled = true
bot_token = "ENV:DISCORD_BOT_TOKEN"

Checking channel status

cortex channels list

Shows every configured channel and whether its adapter is currently connected.

Writing your own channel adapter

Subclass ChannelAdapter from cortexflow-sdk and implement connect(), disconnect(), and send() — see Plugins & SDK for a full example, or examples/plugins/ on GitHub for three complete, tested plugins.