Channels
How messages flow in and out of OpenClaw — the 24+ messaging surfaces you can connect, what each one does well, and the security defaults that matter.
What channels are, in one sentence#
A channel is the messaging surface that connects your real life to your agent — Slack, WhatsApp, iMessage, Discord, etc. The Gateway holds the connection; the channel translates inbound messages into a shape the agent runtime can read, and the agent’s responses back into the format the channel expects.
OpenClaw supports more channels than any other agent runtime we know of — 24+ at last count.
The full list#
From the canonical channels index:
Chat / IM: WhatsApp · Telegram · Slack · Discord · Google Chat · Signal · Microsoft Teams · Matrix · Feishu · LINE · Mattermost · Nextcloud Talk · Synology Chat · Tlon · WeChat · QQ · WebChat · Yuanbao
iMessage variants: iMessage (native) · BlueBubbles (more mature)
Other: IRC · Twitch · Nostr · Zalo · Zalo Personal
Voice nodes: macOS · iOS · Android (via Voice Wake and Talk Mode)
That’s a long list. In practice, most people pair 2–3 channels and never touch the rest.
Picking your first channel#
If you’re learning OpenClaw and want to test it works, the picking order is:
| Order | Channel | Why |
|---|---|---|
| 1st | Telegram | Bot pairing is the simplest. No workspace admin needed. Free tier good enough. |
| 2nd | Discord | Personal server is fine. Pairing’s mature. Voice channels too if you want. |
| 3rd | Slack | If you have a workspace. Slightly more setup; OAuth scopes to think about. |
| Later | QR-pair via official channel; works but needs more attention. | |
| Mac users | iMessage / BlueBubbles | macOS-only host. BlueBubbles bridge is more reliable. |
| Specialty | everything else | Add when you have a specific reason. |
What every channel shares#
All channels in OpenClaw inherit the same security defaults:
- DM policy =
pairingby default. Unknown senders get a one-time code, not your agent. (§6.1 check 2) allowFromallowlist in~/.openclaw/openclaw.json. Even after pairing, only senders on the allowlist reach the agent.- Per-channel rate limits (configurable).
- Webhook signature validation (where the channel supports it — e.g. Slack signing secret).
Why this matters: the friendliest “convenience hack” is to set
dmPolicy="open"and add"*"to allowFrom for testing. Don’t. It’s the same thing as leaving your front door unlocked. The pairing flow takes 30 seconds. Use it.
Channels by use case#
”I want a personal assistant in my pocket”#
Pair Telegram or WhatsApp. Both are mobile-native. Telegram’s bot model is simpler; WhatsApp pairing via the official channel is more involved but works.
”I want a work bot in our team chat”#
Slack if you’re on Slack. Microsoft Teams if you’re on Teams. Google Chat if you’re on Workspace. All three need workspace admin OAuth approval — clear it with whoever owns the workspace before installing.
”I want my Mac to be the agent host”#
iMessage (native or BlueBubbles) so your phone gets responses. Voice Wake so you can say “hey claw” without typing. The full Mac-native shape is documented at docs.openclaw.ai/platforms/macos.
”I want a community/server bot”#
Discord is the cleanest. Public Discord channels with dmPolicy="open" need a fully sandboxed agent (see §6.1 check 4) — do this carefully.
”I want voice without a Mac”#
Voice nodes are macOS / iOS / Android only. On Linux, you’re text-channels-only for now. See §1.4 drawback #6 for the honest take.
What to know before pairing#
- OAuth scopes for Slack/Discord/Teams/Google Chat are broader than they need to be by default. Read what you’re granting before clicking through. Scope minimisation is §6.2 signal #4.
- Bot identity — give your bot a distinct username/handle so its messages are visibly bot-tagged. Cleaner conversation flow.
- Allowlist before testing in public. Even your own DM should be in
allowFrombefore you’re surprised by the pairing prompt.
A walkthrough — pairing Telegram in 5 minutes#
- Open Telegram, message
@BotFather, send/newbot. Pick a name and a username. BotFather gives you a token. - In
~/.openclaw/openclaw.json, add:{ "channels": { "telegram": { "token": "123456:ABC-...", "dmPolicy": "pairing", "allowFrom": ["@yourusername"] } } } - Restart the daemon:
openclaw daemon restart - Find your bot in Telegram. Send any message. Get back a pairing code.
- Approve:
openclaw pairing approve telegram <code> - Send another message. The agent responds.
Total time: 5–10 minutes. Most other channels follow a similar shape (token + allowlist + pairing).
Things to try#
- Pair Telegram + Discord with the same agent, message from both, see that the agent feels like one consistent personality. (That’s the value of single-agent + workspace-files identity.)
- Set up Microsoft Teams + a daily 9am cron that summarises Teams channel activity. Useful for absent-from-meetings days.
- Bridge IRC if you’re in a community that still uses it. OpenClaw supports it; few other agent runtimes do.
- Voice Wake on Mac — say “hey claw, what’s on my calendar?” and watch it work.
What we are NOT going to claim#
We’ve not paired all 24 channels ourselves. The docs source is canonical for what’s supported; specific channel quirks (Signal’s pairing flow vs Telegram’s, for instance) need real-deployment validation. Each channel’s own docs page is the source of truth for that channel’s specifics.
What to read next#
- §3.1 Index — patterns vs packages framing
- §3.3 Tools — what the agent does (built-in tools)
- §3.4 Models — the brain choice
- §4 Plugins — specific channel connector field notes (Slack et al)
- §6.1 Self-hosting checklist — security posture for channels