Compare Slack, Microsoft Teams, Telegram, and Discord support across Agent Barn’s Hermes and OpenClaw runtimes.
This reference describes the capabilities currently exposed and enforced by Agent Barn. The underlying platforms and runtimes may offer additional features that Agent Barn does not configure.
Compatibility scope
Every Agent has:
- One communication platform.
- One runtime.
- One platform bot or application identity.
- One encrypted platform credential set.
- One independent conversation and activity history.
The platform and runtime are selected when the Agent is created. They cannot be changed through Agent configuration later.
To move work to another platform or runtime, create another Agent and apply the required Template, Skills, model, credentials, and access settings.
Where this page says a control is not available, it means Agent Barn does not currently expose it as a routing policy. The underlying platform may still provide an equivalent control through its own administration.
Quick answer
- Slack
- Strict shared-channel mention behavior and workspace collaboration
- Microsoft Teams
- Microsoft 365 environments, when OpenClaw and a public messaging endpoint are acceptable
- Telegram
- Lightweight bot deployment with groups and configurable direct messages
- Discord
- Server, channel, user, and role-based boundaries
These are selection guidelines, not platform rankings. Choose based on the required access boundary, tenant environment, runtime, and operational model.
| Requirement | Usually the best fit | Why |
|---|---|---|
| Workspace channels and strict per-message mentions | Slack | Both runtimes are supported, Socket Mode avoids a public webhook, and shared-channel threads require a fresh mention |
| Microsoft 365 and Teams app governance | Microsoft Teams | Native Teams application flow, personal, team, and group-chat scopes, and tenant credentials |
| Lightweight group and direct-message bot | Telegram | One bot token, both runtimes, and configurable group and DM policies |
| Server, channel, user, and role restrictions | Discord | Both runtimes and the most granular shared-space access model |
| Hermes runtime | Slack, Telegram, or Discord | Hermes does not support Microsoft Teams |
| OpenClaw runtime | Any supported platform | OpenClaw supports all four platforms |
Runtime support
| Runtime | Slack | Microsoft Teams | Telegram | Discord |
|---|---|---|---|---|
| Hermes | Supported | Not supported | Supported | Supported |
| OpenClaw | Supported | Supported | Supported | Supported |
The API uses agent_type for the runtime:
hermes
openclawFeature comparison
Each capability below describes what Agent Barn configures and enforces for that platform.
| Capability | Slack | Microsoft Teams | Telegram | Discord |
|---|---|---|---|---|
| Shared spaces | Channels | Teams and group chats | Group chats | Servers and channels |
| Direct messages | Off, open, or user allowlist | Open in the generated runtime configuration | Off, open, or user allowlist | Disabled |
| Shared-space policy | Open or channel allowlist | Open; no Agent Barn chat allowlist | Open or chat allowlist | Open or server allowlist |
| Channel-level restriction | Yes | Not through Agent Barn | Chat-level only | Yes |
| User-level restriction | DM allowlist | Not through Agent Barn | DM allowlist | Shared-channel user allowlist |
| Role-level restriction | No | Not through Agent Barn | No | Yes |
| Mention gating | Strict fresh mention | Explicit mention; direct reply may qualify | Explicit mention; direct reply may qualify | Enabled by default and configurable |
| Public inbound endpoint | No | Yes | No | No |
| Hermes home destination | First allowed channel | Not applicable | First allowed chat | Explicit alert destination |
| OpenClaw heartbeat destination | Not configured by Agent Barn | Not configured by Agent Barn | Not configured by Agent Barn | Explicit alert destination |
| Credential uniqueness enforced | Slack bot token | No | No | Discord bot token |
“Not through Agent Barn” means that the underlying platform may provide controls that are not represented as an Agent Barn routing policy.
Connection methods
Three platforms use an outbound connection opened by the Agent runtime. Microsoft Teams is the exception: it calls into a public Agent Barn endpoint.
Slack
Socket Mode
Outbound
The runtime opens the connection using a bot token and an app-level token. No public Slack event webhook is required.
Microsoft Teams
Public HTTPS messaging endpoint
Inbound
Teams calls an Agent Barn endpoint, which relays the request to the Agent’s OpenClaw runtime.
Telegram
Telegram Bot API
Outbound
The runtime connects with the bot token. No public Telegram webhook URL is required by this setup.
Discord
Discord Gateway
Outbound
The runtime opens a WebSocket for real-time events. No webhook or Interactions Endpoint URL is required.
The Microsoft Teams messaging endpoint has this shape:
https://AGENT_BARN_HOST/api/v1/webhooks/teams/AGENT_ID/messagesA Teams deployment therefore needs a stable external Agent Barn URL, public HTTPS access to the Teams webhook route, and a Teams or Azure bot registration configured with the generated messaging endpoint.
Slack, Telegram, and Discord need no inbound route into the deployment.
Credential requirements
| Platform | Required Agent credentials | Additional setup identifiers |
|---|---|---|
| Slack | Bot token and app-level token | Optional Slack configuration token for automated application creation |
| Microsoft Teams | App ID, app password or client secret, and tenant ID | Public messaging endpoint and Teams app package |
| Telegram | Bot token | Numeric chat and user IDs for allowlists |
| Discord | Bot token | Application, server, channel, user, and role IDs as needed |
Secret classification
| Value | Classification |
|---|---|
| Slack bot token | Secret |
| Slack app-level token | Secret |
| Teams app password or client secret | Secret |
| Telegram bot token | Secret |
| Discord bot token | Secret |
| Teams app ID | Not secret |
| Teams tenant ID | Identifier — still avoid unnecessary disclosure |
| Discord Application ID | Not secret |
| Channel, chat, server, user, and role IDs | Identifiers — not authentication credentials |
Credential validation timing
| Platform | When a bad credential normally surfaces |
|---|---|
| Slack | Bot and app tokens are validated during creation, and checked by the running Agent |
| Microsoft Teams | During the automatic start, or when Teams calls the messaging endpoint |
| Telegram | The bot token is validated through Telegram during creation, and checked again by the runtime |
| Discord | Usually when the Agent runtime starts and attempts to authenticate with Discord |
Slack and Discord bot tokens must be unique across active Agents on their respective platforms. Agent Barn returns a conflict if the token is already assigned.
Use a distinct bot or application identity for every production Agent, including on platforms where uniqueness is not enforced.
Access controls
Platform access and Agent Barn sharing answer different questions:
- Platform access controls who may communicate with the Agent through Slack, Teams, Telegram, or Discord.
- Agent Access controls who may view or administer the Agent inside Agent Barn.
Configure both boundaries.
Slack
| Boundary | Available policies |
|---|---|
| Channels | Open or allowlist |
| Direct messages | Off, open, or user allowlist |
| Shared-channel activation | Explicit mention required |
| Private channel membership | Bot must be invited |
Recommended production baseline:
Channel access: Allowlist
Direct messages: Off or Allowlist
Mention gating: RequiredSlack provides directory-backed channel and user selection in Agent Barn. Private channels appear only after the Slack bot has been invited.
Microsoft Teams
| Boundary | Current Agent Barn behavior |
|---|---|
| Team and group-chat policy | Open |
| Personal chat policy | Open |
| Agent Barn chat allowlist | Not available |
| Agent Barn user allowlist | Not available |
| Shared-space activation | Explicit mention required |
The practical boundary comes from the Microsoft tenant ID, Teams administrator approval, where the Teams application is installed, Teams policies and permissions, and the generated messaging endpoint.
Teams is not the right current choice when Agent Barn-level per-chat or per-user allowlists are mandatory.
Telegram
| Boundary | Available policies |
|---|---|
| Group chats | Open or allowlist |
| Direct messages | Off, open, or user allowlist |
| Group activation | Explicit mention required |
| Group membership | Bot must be added manually |
Recommended production baseline:
Group access: Allowlist
Direct messages: Off or Allowlist
Mention gating: RequiredTelegram allowlists use numeric chat and user IDs. Usernames and group names are not accepted as access identifiers.
Review Telegram Group Privacy separately. It controls what Telegram delivers to the runtime before Agent Barn’s own routing and mention policies apply.
Discord
| Boundary | Available policies |
|---|---|
| Servers | Open or allowlist |
| Channels | Optional channel restriction |
| Users | All users or user allowlist |
| Roles | Role allowlist |
| Direct messages | Disabled |
| Shared-channel activation | Explicit mention enabled by default |
Recommended production baseline:
Server access: Allowlist
Allowed channels: Explicitly configured
Allow all users: Disabled
Allowed users or roles: Explicitly configured
Require explicit mention: Enabled
Direct messages: DisabledWhen Allow all users is disabled, at least one allowed user or role ID is required.
Discord calls servers “guilds” in its API. Agent Barn API fields therefore use names such as discord_guild_ids.
Mention behavior
Agents should not act on ordinary conversation in shared spaces unless they are intentionally addressed.
Slack
Slack provides the strongest mention boundary.
A fresh explicit mention is required for each message in a channel or thread. Earlier participation does not automatically engage the Agent for later thread messages.
Microsoft Teams, Telegram, and Discord
These platforms require mentions in shared spaces, but a direct reply to the Agent’s own message may still count as addressing that Agent.
This reply behavior remains scoped to the Agent whose message was replied to.
Discord exposes Require an explicit mention in server channels as a setting. Keep it enabled unless the channel is deliberately dedicated to one Agent.
Direct messages
Direct messages do not require a mention on platforms where Agent Barn supports them:
- Slack: according to the configured DM policy.
- Microsoft Teams: personal scope is open.
- Telegram: according to the configured DM policy.
- Discord: direct messages are disabled.
Mention gating is materialized when the Agent starts. Routing changes require a restart before they take effect in the runtime.
Operational differences
Creation and startup
| Platform | API result after creation | Guided web behavior |
|---|---|---|
| Slack | Stopped | Access is reviewed, then the Agent is started |
| Microsoft Teams | Automatically starts | Creation attempts to reach Running or Error |
| Telegram | Stopped | Access is reviewed, then the Agent is started |
| Discord | Stopped | Operator opens the Agent and selects Start |
The Slack and Telegram web flows are guided: after the Agent is created, the wizard opens its access step so channels, chats, and direct-message policies can be reviewed before the Agent starts.
A stopped Agent can be configured without deploying its runtime. For a running Agent, platform-routing changes use Apply & Restart. For a stopped Agent, Apply saves the configuration and leaves it stopped.
Activity name enrichment
| Platform | Agent Barn activity display |
|---|---|
| Slack | Channel and sender names are resolved on a best-effort basis |
| Microsoft Teams | No equivalent Agent Barn directory enrichment |
| Telegram | Chat names are resolved through the Telegram bot API |
| Discord | Channel and user names are resolved through the Discord bot API |
Telegram and Discord directory results are cached, so a recently changed name may not appear immediately. Numeric identifiers remain authoritative even when Agent Barn displays a human-readable name.
Scheduled and proactive destinations
| Platform and runtime | Agent Barn-configured destination |
|---|---|
| Slack with Hermes | First allowed channel |
| Microsoft Teams | No platform destination field |
| Telegram with Hermes | First allowed chat |
| Discord with Hermes | Explicit alert destination channel |
| Discord with OpenClaw | Explicit heartbeat destination channel |
For Slack or Telegram with Hermes, order matters, because the first allowed destination becomes the home destination. A proactive destination must also satisfy platform membership and send-permission requirements.
Additional platform-specific behavior
| Platform | Behavior |
|---|---|
| Slack with Hermes | Optional verbose mode announces intermediate work |
| Microsoft Teams | Streaming is disabled in the generated OpenClaw configuration |
| Telegram | Telegram Group Privacy affects which group messages reach the runtime |
| Discord | Message Content Intent is required; Server Members Intent is required for role-based restrictions |
Choose a platform
Use this decision sequence.
Do you require Microsoft Teams?
Choose OpenClaw with Microsoft Teams. Hermes cannot be combined with Teams.
Runtime: OpenClaw
Platform: Microsoft TeamsConfirm that a public HTTPS messaging endpoint and Microsoft tenant administration are acceptable.
If Agent Barn-level per-chat or per-user allowlists are required, evaluate another platform, or enforce the restriction through Microsoft tenant and installation controls.
Do you require Discord roles as an access boundary?
Choose Discord. It is the only current Agent Barn platform with a shared-space role allowlist, and it supports independent server, channel, user, role, and mention boundaries.
Discord direct messages are not available.
Do you require controlled direct messages?
Choose Slack or Telegram. Both support Off, Open, and a user allowlist.
Slack offers directory-backed user selection. Telegram uses manually entered numeric user IDs.
Microsoft Teams personal chat is open in the generated configuration and has no Agent Barn user allowlist. Discord direct messages are disabled.
Do you require the strictest shared-thread mention behavior?
Choose Slack. It requires a fresh mention for each shared-channel or thread message, while Teams, Telegram, and Discord may deliver a direct reply to the Agent without another textual mention.
Do you want the lightest platform credential setup?
Telegram normally requires one bot token. Group setup can still require BotFather configuration, a Group Privacy review, manual chat and user ID collection, and explicit group membership.
Do you need the richest Agent Barn shared-space policy?
| Priority | Better fit |
|---|---|
| Server, channel, user, and role boundaries | Discord |
| Workspace channel discovery and strict mentions | Slack |
| Lightweight groups and configurable DMs | Telegram |
| Microsoft tenant integration | Microsoft Teams |
Choose a runtime after the platform
| Requirement | Runtime guidance |
|---|---|
| Microsoft Teams | OpenClaw is required |
| Slack | Hermes or OpenClaw |
| Telegram | Hermes or OpenClaw |
| Discord | Hermes or OpenClaw |
| Hermes command approval modes | Choose Hermes |
| Hermes scheduled home-channel behavior | Slack, Telegram, or Discord |
| Broadest platform compatibility | OpenClaw |
Platform compatibility should eliminate invalid runtime choices, but it should not be the only runtime-selection factor. Also consider the runtime operating model, command approval requirements, Template compatibility, required Skills and integrations, scheduled and proactive work, resource footprint, and existing operational experience.
See Choose an Agent runtime for the full comparison.
Multi-platform Agents
To expose the same role on several platforms, create one Agent per platform:
- Slack Agent
- Telegram Agent
- Discord Agent
They may share
- The same published Template version
- The same Skill versions, where provider requirements are satisfied
- The same model selection
- Equivalent Agent instructions
- Organization-owned Shared Credentials where appropriate
They do not share
- Platform bot identity
- Platform secrets
- Agent ID
- Runtime deployment
- Conversation history
- Activity and tool-call history
- Logs
- Health state
- Cost attribution
- Agent Access assignments
- Proactive destination
Avoid presenting several independent Agents as one continuous cross-platform conversation, unless an explicit external synchronization design exists.
Use a separate bot or application identity for each Agent. Never run several Agent runtimes against the same Slack, Telegram, or Discord bot token.
API values
Platform values
slack
teams
telegram
discordRuntime values
hermes
openclawThe API field is named agent_type:
{
"platform": "telegram",
"agent_type": "hermes"
}Valid combinations
agent_type | platform | Valid |
|---|---|---|
hermes | slack | Supported |
hermes | teams | Not supported |
hermes | telegram | Supported |
hermes | discord | Supported |
openclaw | slack | Supported |
openclaw | teams | Supported |
openclaw | telegram | Supported |
openclaw | discord | Supported |
Platform-specific creation fields
Slack:
{
"platform": "slack",
"slack_bot_token": "REDACTED",
"slack_app_token": "REDACTED",
"slack_group_policy": "allowlist",
"slack_channel_ids": ["C1234567890"],
"slack_dm_policy": "off",
"slack_dm_user_ids": []
}Microsoft Teams:
{
"platform": "teams",
"agent_type": "openclaw",
"teams_app_id": "REDACTED",
"teams_app_password": "REDACTED",
"teams_tenant_id": "REDACTED"
}Telegram:
{
"platform": "telegram",
"telegram_bot_token": "REDACTED",
"telegram_group_policy": "allowlist",
"telegram_allowed_chat_ids": ["-1001234567890"],
"telegram_dm_policy": "off",
"telegram_allowed_user_ids": []
}Discord:
{
"platform": "discord",
"discord_bot_token": "REDACTED",
"discord_group_policy": "allowlist",
"discord_guild_ids": ["123456789012345678"],
"discord_allowed_channel_ids": ["234567890123456789"],
"discord_allow_all_users": false,
"discord_allowed_user_ids": [],
"discord_allowed_role_ids": ["345678901234567890"],
"discord_require_mention": true,
"discord_home_channel_id": "234567890123456789"
}Each create request must also include the common Agent fields, including:
{
"name": "Example Agent",
"template_key": "REPLACE_WITH_TEMPLATE_KEY",
"model": "REPLACE_WITH_MODEL",
"skill_ids": []
}The API validates runtime and platform compatibility. Platform and runtime fields are not available in the Agent update contract.
Setup guides
Continue with the setup guide for the selected platform.
After connecting the platform:
- Review Agent health and logs
- Test an allowed shared-space request.
- Test an unmentioned shared-space message.
- Test a user or destination outside the intended boundary.
- Record credential ownership and rotation procedures.
- Review the Template and Skills assigned to the Agent.