Skip to content

Channel Overview

Talon connects to 22 messaging channels simultaneously. Every channel is driven by the same AI agent and shares a unified conversation history — messages from Telegram, Discord, Slack, and everywhere else all appear in the same conversation list in the mobile app.

When a message arrives on any channel, Talon follows the same pipeline:

  1. The channel listener receives the incoming message.
  2. The message is passed to the AI agent along with the conversation history retrieved from the shared ConversationStore.
  3. The agent processes the message (optionally using tools, executing code, browsing the web, etc.).
  4. The response is sent back through the same channel.
  5. Both the incoming message and the response are persisted to the SQLite-backed ConversationStore.

Because all channels write to the same store, conversation history survives restarts and is visible across the mobile app, web app, and any connected channel.

All channels are configured under channels.<type>.accounts.<name> in talon.json. You can have multiple accounts per channel type — for example, two different Telegram bots or three Discord servers.

{
"channels": {
"telegram": {
"accounts": {
"my-bot": {
"bot_token": "..."
}
}
},
"discord": {
"accounts": {
"my-server": {
"bot_token": "..."
}
}
}
}
}

Two options are available on most channels regardless of type:

Restrict which users or identifiers can send messages to the bot. When set, Talon ignores messages from anyone not on the list. The format of each entry is channel-specific (Telegram user IDs, Discord user IDs, email addresses, etc.).

{
"allow_from": ["123456789", "987654321"]
}

Override the default AI model for a specific channel account. Use the provider/model format.

{
"bot_token": "...",
"model": "openai/gpt-4o"
}
ChannelConfig KeyRequired Fields
Telegramtelegrambot_token
Discorddiscordbot_token
Slackslackbot_token, app_token
WhatsAppwhatsappverify_token, access_token, phone_number_id
Emailemailimap_host, smtp_host, email, password
Webhookwebhookincoming_path, outgoing_url
Matrixmatrixhomeserver, user_id, access_token
Microsoft Teamsteamswebhook_url, app_id, app_secret
Messengermessengerpage_access_token, verify_token
Twilio (SMS)twilioaccount_sid, auth_token, phone_number
LINElinechannel_access_token, channel_secret
Signalsignalapi_url, phone_number
IRCircserver, port, nickname, channels
Mattermostmattermosturl, token
Zulipzulipsite, email, api_key
Rocket.Chatrocketchaturl, user_id, auth_token
Google Chatgooglechatwebhook_url
Webexwebexaccess_token, webhook_secret
DingTalkdingtalkwebhook_url, secret
Feishu / Larkfeishuapp_id, app_secret, verification_token
ntfyntfyserver, topic
Mastodonmastodoninstance_url, access_token