Channels
PocketPaw connects to multiple messaging platforms through channel adapters. Each adapter translates between the platform’s native protocol and PocketPaw’s internal message bus.
Supported Channels
Web Dashboard
Built-in real-time web interface with streaming, sessions, and tool activity.
Telegram
Full bot API with topic support, inline keyboards, and streaming via edit-in-place.
Discord
Slash commands, DM and mention support, streaming with edit-in-place.
Slack
Socket Mode (no public URL needed), thread support, app_mention events.
Business API or Personal mode via QR scan. No Meta account needed for personal.
Signal
Privacy-focused messaging via signal-cli REST API.
Matrix
Decentralized, federated protocol via matrix-nio.
Microsoft Teams
Bot Framework SDK integration for enterprise collaboration.
Google Chat
Webhook and Pub/Sub modes via Google Chat API.
Running Channels
Web Dashboard (Default)
The web dashboard is the default mode. Simply run:
pocketpawThe dashboard auto-starts all configured channel adapters on startup. You can manage channels from the Channels modal in the sidebar.
Headless Mode
Run specific channels without the web dashboard:
# Single channelpocketpaw --telegrampocketpaw --discordpocketpaw --slack
# Multiple channelspocketpaw --discord --slack --whatsapp
# All channel flagspocketpaw --telegram --discord --slack --whatsapp --signal --matrix --teams --gchatChannel Management API
The web dashboard exposes REST endpoints for channel management:
| Endpoint | Method | Description |
|---|---|---|
/api/channels/status | GET | Get status of all channels |
/api/channels/save | POST | Save channel configuration |
/api/channels/toggle | POST | Start or stop a channel |
Streaming Behavior
Each channel handles streaming differently based on platform limitations:
| Channel | Streaming Method |
|---|---|
| Web Dashboard | Real-time WebSocket chunks |
| Telegram | Edit-in-place (message updates) |
| Discord | Edit-in-place (1.5s rate limit) |
| Slack | Thread message updates |
| Accumulate + send on completion | |
| Signal | Accumulate + send on completion |
| Matrix | Edit-in-place (m.replace) |
| Teams | Accumulate + send on completion |
| Google Chat | Accumulate + send on completion |
Channel-Specific Session Keys
Each channel generates unique session keys to maintain separate conversations:
- Telegram:
{chat_id}or{chat_id}:topic:{topic_id} - Discord:
{channel_id}ordm:{user_id} - Slack:
{channel_id}:{thread_ts} - WhatsApp:
{phone_number} - Signal:
{phone_number} - Matrix:
{room_id} - Teams:
{conversation_id} - Google Chat:
{space_name}
Access Control
Each channel supports allow-listing to restrict who can interact with your agent:
# Telegramexport POCKETCLAW_ALLOWED_TELEGRAM_IDS="123456,789012"
# Discordexport POCKETCLAW_DISCORD_ALLOWED_GUILD_IDS="111,222"export POCKETCLAW_DISCORD_ALLOWED_USER_IDS="333,444"
# Slackexport POCKETCLAW_SLACK_ALLOWED_CHANNEL_IDS="C01,C02"
# WhatsAppexport POCKETCLAW_WHATSAPP_ALLOWED_PHONE_NUMBERS="+1234567890"