Unified Channel Architecture

Every channel in Animus follows the same pattern: authenticate → receive → dispatch → respond. The ChannelManager owns all connector runtimes, routes inbound messages to agent sessions, and sends auto-replies back through the originating channel.

Each channel binds to a specific agent via agent_id in its config. Sessions are scoped per-channel and per-conversation — a Telegram user and an IRC user talking to the same agent get independent session histories.

Channel dispatch flow
Inbound event (platform-specific)
  → ChannelManager receives
    → Session lookup (channel + conversation)
      → Agent execution (LLM + tools + memory)
        → Auto-reply sent via originating channel
          OR tool output (file, web, diary, Lua)
Per-channel agent binding
Independent session routing
Unified REST API
Single admin UI
Auto-reply on all channels
Live

Available Channels

💬

IRC

RFC 2812

Full IRC interface — the original chat protocol. Mature, lightweight, and still the backbone of open-source communities.

Persistent socket connection to an IRC server. Channels and DMs are mapped to agent sessions. The bot joins configured channels, responds to messages (with optional mention filtering), and handles DMs and notices independently.

Supported features
Channel messages
Direct messages
Notice handling
Auto-reconnect
Per-channel agent
DM allowlist
Respond toggles
Use cases
Community support bot · DevOps notification relay · Open-source project helper · IRC-native agent interface
✈️

Telegram

Bot API (HTTPS + JSON)

Official Bot API integration. Zero ToS risk — bots are Telegram's intended use case. Free, instant setup via @BotFather.

Long polling via getUpdates with offset-based acknowledgment. Private chats, groups, supergroups, and forum topics are each routed to independent agent sessions. Message threading via message_thread_id. Offset persisted across restarts.

Supported features
Private chats
Groups & supergroups
Forum topics
Auto-reply
Offset persistence
Bot identity verification
Use cases
Customer support bot · Personal assistant · Team notification hub · Language learning tutor
🔷

VKontakte

Community API (HTTPS + JSON)

Community bot adapter for VK — the dominant social network in Russia and CIS countries. Community tokens provide official bot access.

Long Poll server fetches events in real time. Messages route to sessions by peer_id. Wall posts and wall comments create separate session types. Comments are threaded via reply_to_comment. Auto-reply sends via the Messages API.

Supported features
Post
Reply
Like
Send message
Get conversations
Get messages
Wall comments
Delete
Use cases
Community management · Customer engagement in CIS markets · Content publishing assistant · Wall comment moderation
🦋

Bluesky

AT Protocol (PDS + XRPC)

AT Protocol adapter connecting to Bluesky's decentralized social network. Uses PDS (Personal Data Server) endpoints with session refresh.

Connects to a PDS instance using handle + app password. Creates a session for JWT-based auth, with automatic token refresh via refreshSession. Posts, replies, likes, and searches through XRPC methods.

Supported features
Post
Reply
Like
Search
Browse
Notifications
Delete
Token refresh
Use cases
Social media presence · Public engagement bot · Content discovery agent · Brand monitoring
🐘

Mastodon

REST + WebSocket (Mastodon API)

Integration with the Fediverse via the Mastodon API. Works with any Mastodon-compatible instance.

Authenticates via OAuth to a Mastodon instance. Streams events via WebSocket or polls the REST API. Posts, boosts, replies, and direct messages.

Supported features
OAuth auth
Toots & replies
Streaming events
Fediverse compatible
Use cases
Fediverse presence · Open-source community engagement · Decentralized social management
📧

Email

AgentMail (REST + WebSocket)

Full email integration via AgentMail. Real-time inbox monitoring via WebSocket with REST polling fallback. Thread-aware dispatch and comprehensive message management.

Connects to the AgentMail WebSocket for real-time message.received events. Inbound emails are dispatched to agent sessions with message ID and thread ID included for direct reply. Falls back to REST polling on persistent WS failure. Multi-account routing with per-account agent assignment.

Supported features
List inboxes
List threads
Get thread / message
Send
Reply
Forward
Search
Drafts
Mark read / Delete
WebSocket real-time
Multi-account
Use cases
Customer support triage · Automated email replies · Newsletter digest agent · Multi-account email routing · Draft management assistant
Planned

Coming Next

💼

Slack

Events API + Web API

Workspace integration via Slack's Events API. Real-time message events, threaded conversations, channel management. Enterprise-ready.

Events API
Threaded conversations
App home
Slash commands
Block kit
🎮

Discord

Gateway (WebSocket)

Discord bot via Gateway intents. Server channels, DMs, threads, reactions. The dominant platform for community-driven projects.

Gateway intents
Server channels
Threads
Reactions
Slash commands
Voice (future)
📱

WhatsApp

Companion device protocol

WhatsApp integration via the companion device protocol. Requires initial QR pairing. Reaches the world's largest messaging user base.

Companion pairing
Private chats
Group chats
Media support
Read receipts
🔒

Signal

signal-cli bridge

End-to-end encrypted messaging via signal-cli bridge. Privacy-first communication with the Signal protocol's security guarantees.

E2E encryption
Private chats
Group chats
signal-cli bridge
🐙

GitHub

Webhooks + REST API

GitHub integration for code-aware agents. Respond to issues, review PRs, manage discussions. Agent as a team member.

Issue responses
PR reviews
Webhook events
Code search
Discussions

One API for Everything

All channels are managed through a single REST endpoint. Create an IRC channel, a Telegram bot, and a VK community — all through the same API shape. The admin UI provides a unified interface; the API provides programmatic control.

Secrets are masked in responses and preserved on partial updates. Enable and disable channels without deleting config. Connection status is live.

REST API
GET    /api/v1/channels
POST   /api/v1/channels
GET    /api/v1/channels/{name}
PATCH  /api/v1/channels/{name}
DELETE /api/v1/channels/{name}
POST   /api/v1/channels/{name}/enable
POST   /api/v1/channels/{name}/disable