Skip to main content
profClaw’s chat provider system provides a unified abstraction across all messaging platforms. One agent, every channel.

Supported Channels

ProviderTypeStatusKey Capability
WebChatBuilt-inStableZero-setup browser widget
SlackWorkStableSocket Mode, Block Kit, slash commands
DiscordCommunityStableSlash commands, components
TelegramMessagingStableWebhooks, inline buttons
WhatsAppMessagingStableWhatsApp Business API
MatrixOpen ProtocolStableE2EE, federated
Microsoft TeamsWorkStableAdaptive Cards, Bot Framework
Rocket.ChatSelf-hostedBetaOpen-source Slack alternative
IRCLegacyBetaClassic IRC protocol
SignalSecureBetaE2EE, signald bridge
LINEAsiaBetaLINE Messaging API
ZaloVietnamBetaZalo OA API
ViberMessagingBetaViber Bot API
Facebook MessengerSocialBetaMeta Messenger Platform
WeChatChinaBetaWeChat Official Account
Tlon/UrbitDecentralizedExperimentalUrbit network
CustomDIYStableBuild your own provider
Google ChatWorkBetaGoogle Workspace
MattermostSelf-hostedBetaOpen-source Teams alternative
DingTalkChinaBetaAlibaba DingTalk
WeComChinaBetaTencent WeCom
Feishu/LarkWorkBetaByteDance enterprise
QQSocialBetaTencent QQ
NostrDecentralizedExperimentalNostr protocol
TwitchStreamingBetaTwitch chat integration
Nextcloud TalkSelf-hostedBetaNextcloud messaging
Synology ChatSelf-hostedBetaSynology NAS chat
WebChat is enabled by default with no credentials required. It is always available at http://localhost:3000. All other providers require credential setup.

Capabilities Comparison

FeatureWebChatSlackDiscordTelegramWhatsAppTeams
Direct MessagesYesYesYesYesYesYes
Group/ChannelNoYesYesYesNoYes
Slash CommandsNoYesYesNoNoYes
Buttons/MenusNoYesYesYesLimitedYes
File UploadsNoYesYesYesYesYes
ReactionsNoYesYesNoNoNo
ThreadsNoYesYesNoNoYes
Rich BlocksNoYesNoNoNoYes
E2E EncryptionNoNoNoNoYesNo
OAuth InstallNoYesYesNoNoYes

Multi-Account Support

profClaw supports multiple accounts per provider. Each account is independently configured and can be assigned to different channels or teams:
# settings.yml
chat:
  slack:
    accounts:
      - id: work
        bot_token: xoxb-work-...
        is_default: true
      - id: community
        bot_token: xoxb-community-...

Architecture

All providers implement the same interface, allowing the execution engine and security layer to treat all channels uniformly:
  • Inbound: Receive messages via webhooks or long-polling
  • Outbound: Send messages and structured responses
  • Status: Health checks and connection monitoring
  • Auth: OAuth flows or manual token configuration
User Message
    |
    v
[Chat Provider]  ----incoming----> [Message Handler]
                                         |
                                    [AI Executor]
                                    [Tool Pipeline]
                                         |
[Chat Provider]  <---outbound-----  [Response]

Webhook Setup

Most providers require a public HTTPS webhook URL to deliver events. Use profclaw serve to start the server, then expose it with a tunnel during development or configure your domain for production.
Use a tunnel tool to expose your local server:
# Using cloudflared (recommended, free, no account needed for quick tunnels)
brew install cloudflared
cloudflared tunnel --url http://localhost:3000

# Or using ngrok
ngrok http 3000
Use the generated HTTPS URL as your webhook base URL in the provider’s developer portal.
All webhook endpoints validate request signatures from the provider. Never disable signature verification in production.

Configuration Pattern

All providers follow the same environment variable pattern - enable a provider by setting its credentials:
# Slack
SLACK_BOT_TOKEN=xoxb-...
SLACK_APP_TOKEN=xapp-...
SLACK_SIGNING_SECRET=...

# Discord
DISCORD_BOT_TOKEN=...

# Telegram
TELEGRAM_BOT_TOKEN=...
Providers with no credentials set are simply not loaded. There is no need to explicitly disable them.

Security Considerations

Chat providers inherit the global security mode. Restrict which channels or users the agent responds to:
chat:
  channels:
    slack:
      allowedChannels:
        - C0123456789  # #engineering
        - C9876543210  # #devops
      allowedUsers:
        - U012345678   # Specific user IDs only

Health Check

profclaw doctor --chat
Shows connection status for all configured chat providers, including last event received and any authentication errors.