Skip to main content
AgentOS includes 40 pre-built channel adapters that enable agents to communicate across messaging platforms, social media, team collaboration tools, and custom webhooks. Each adapter handles platform-specific authentication, message formatting, and bidirectional communication.

Architecture

Channel adapters are TypeScript workers that:
  • Register HTTP webhook endpoints to receive platform events
  • Parse incoming messages and route them to appropriate agents
  • Trigger agent chat functions with platform-specific session IDs
  • Send agent responses back through platform APIs
  • Emit security audit events for compliance tracking
// Typical channel adapter flow
Platform Webhookchannel::platform::webhook
resolveAgent()
agent::chat
sendMessage()
security::audit

Channel Categories

Messaging

15 messaging platforms including Telegram, Discord, Slack, WhatsApp, Teams

Social Media

9 social platforms including Bluesky, Reddit, Twitch, LinkedIn, Mastodon

Collaboration

12 team tools including Matrix, Mattermost, Rocket.Chat, Zulip, Discourse

Voice & Video

2 platforms: Mumble, Twitch

Notifications

2 platforms: Gotify, ntfy

Custom

Generic webhook adapter for any platform

Complete Channel List

Messaging Platforms (15)

ChannelPlatformUse Case
telegramTelegramInstant messaging, bot commands
discordDiscordCommunity chat, gaming servers
slackSlackEnterprise team communication
whatsappWhatsApp Business APICustomer support
emailSMTP/IMAPEmail automation
teamsMicrosoft TeamsEnterprise collaboration
google-chatGoogle ChatWorkspace integration
signalSignalEncrypted messaging
messengerFacebook MessengerSocial customer service
viberViberInternational messaging
lineLINEAsia-Pacific markets
ircIRCLegacy chat networks
xmppXMPP/JabberOpen protocol messaging
threemaThreemaPrivacy-focused messaging
feishuFeishu/LarkChina enterprise market

Social Media (9)

ChannelPlatformUse Case
blueskyBlueskyDecentralized social network
mastodonMastodonFederated social media
redditRedditCommunity engagement
twitchTwitchLive streaming chat
linkedinLinkedInProfessional networking
nostrNostrDecentralized protocol
discourseDiscourseForum discussions
gitterGitterDeveloper communities
keybaseKeybaseEncrypted social

Team Collaboration (12)

ChannelPlatformUse Case
matrixMatrixDecentralized chat
mattermostMattermostSelf-hosted Slack alternative
rocketchatRocket.ChatOpen-source team chat
zulipZulipThreaded conversations
revoltRevoltDiscord alternative
guildedGuildedGaming communities
webexCisco WebexEnterprise video/chat
dingtalkDingTalkChina enterprise market
flockFlockTeam productivity
pumblePumbleTeam messaging
twistTwistAsync communication
nextcloudNextcloud TalkSelf-hosted collaboration

Notifications & Other (3)

ChannelPlatformUse Case
gotifyGotifySelf-hosted push notifications
ntfyntfySimple HTTP notifications
mumbleMumbleVoice chat
webhookGeneric WebhookAny platform

Common Configuration

All channel adapters use the AgentOS vault for secure credential storage:
# Store platform credentials
agentos vault set TELEGRAM_BOT_TOKEN "your-token"
agentos vault set SLACK_BOT_TOKEN "xoxb-..."
agentos vault set DISCORD_BOT_TOKEN "..."

# Configure channel routing
agentos channel setup telegram
agentos channel enable telegram

CLI Commands

agentos channel list              # List all channels
agentos channel setup <name>      # Configure a channel
agentos channel test <name>       # Test channel connection
agentos channel enable <name>     # Enable channel
agentos channel disable <name>    # Disable channel

Agent Resolution

Channels use resolveAgent() to map platform identifiers to AgentOS agents:
const agentId = await resolveAgent(
  trigger,
  "telegram",  // channel type
  String(chatId)  // platform-specific identifier
);
This allows:
  • Multiple agents per channel (e.g., different Telegram chats)
  • Default agent fallback if no specific mapping exists
  • Dynamic agent assignment based on context

Security Features

  • Webhook Signature Verification: Telegram, Slack, and others validate request signatures
  • Token Encryption: All API keys stored in AES-256-GCM vault
  • Audit Logging: Every channel message emits security::audit event
  • SSRF Protection: Generic webhook adapter blocks private IP ranges
  • Rate Limiting: Per-agent GCRA token bucket prevents abuse

Message Splitting

All adapters use splitMessage() to handle platform character limits:
const chunks = splitMessage(text, 4096);  // Telegram limit
for (const chunk of chunks) {
  await sendMessage(chatId, chunk);
}
PlatformCharacter Limit
Telegram4,096
Slack4,000
Discord2,000
WhatsApp4,096
Twitter/Bluesky300
Mastodon500

Session Management

Each platform uses unique session identifiers for conversation continuity:
sessionId: `telegram:${chatId}`
sessionId: `discord:${channelId}`
sessionId: `slack:${channel}:${thread_ts}`
Sessions enable:
  • Conversation history recall
  • Thread-aware responses
  • Multi-user context separation

Next Steps

Messaging Platforms

Set up Telegram, Discord, Slack, and more

Social Media

Connect to Bluesky, Reddit, Twitch, LinkedIn

Custom Adapters

Build your own channel adapter

Security

Channel security and audit logging

Build docs developers (and LLMs) love