Your agent is running and optimized. Now it needs a voice. Channels are how you talk to your agent — through Telegram, WhatsApp, Discord, iMessage, Slack, or the built-in WebChat. Today you connect them all.
The abstraction that lets one agent live on any messaging surface simultaneously.
Bot commands, inline keyboards, group mode, and media handling beyond the Day 2 basics.
Meta Business API setup, phone number linking, and what works differently vs Telegram.
Bot creation, server permissions, slash commands, and multi-server support.
macOS-only iMessage bridge and the Slack workspace plugin — who each one is for.
The built-in browser interface at port 18789. No setup needed — it’s already running.
Whitelisting, user IDs, and stopping strangers from talking to your agent.
Connect at least two channels and send your first cross-channel message before Day 6.
A channel is any messaging interface connected to your Gateway. Your agent lives in the Gateway. Channels are just doors into it. One agent — many doors.
You send a message on Telegram. The Telegram adapter forwards it to the Gateway. The Gateway passes it to your AI model. The response comes back through the same adapter to your Telegram chat. WhatsApp, Discord, iMessage — identical flow, different adapter.
All channels share the same memory, the same SOUL.md, the same model config. Switch from Telegram on your phone to Discord on your laptop mid-conversation and your agent remembers everything. Context is in the Gateway, not the channel.
Easiest to set up. Free API. Works on every platform. The default first channel for most users.
QR code scan links your existing WhatsApp account via Baileys. Most reach — 2B+ users worldwide.
Best for power users and communities. Slash commands, server integration, multi-channel threading.
macOS only. Your agent responds in the native Messages app. Zero extra apps on your phone.
Plugin-based workspace integration. Ideal if you live in Slack at work.
Built into the Dashboard at port 18789. Already running. No extra setup required.
Each channel has an adapter that translates between the platform’s protocol and the Gateway’s internal message format. Your config and memory stay in the Gateway — channels are stateless.
On Day 2 you set up Telegram as your first channel. Your bot is live and you’ve been messaging your agent from your phone. Today we go deeper.
Now we look at the full Telegram feature set: bot commands, group mode, media handling, and the parts most users miss on the first pass.
Register slash commands via BotFather (/setcommands). Your agent can respond to /status, /tasks, /briefing — whatever you define. Commands show as autocomplete suggestions in the Telegram UI.
Add your bot to a Telegram group. Telegram’s Privacy Mode (on by default) means bots only see messages that start with a /command or explicitly @mention the bot. OpenClaw respects this — it responds to commands and direct mentions only, without interrupting every group message.
Send photos, voice notes, documents, and locations to your agent. OpenClaw passes image data to vision-capable models. Voice notes are transcribed before processing. Your agent can send formatted replies with Markdown, inline keyboards, and file attachments.
Your agent can send proactive messages to your Telegram chat at any time — not just in response to you. This is how heartbeat alerts, morning briefings, and task reminders reach you. No polling required on your end.
Set TELEGRAM_BOT_TOKEN as an env variable, or use the tokenFile config option to point to a file on disk. Never paste the literal token into openclaw.json.
pairing is the default — unknown senders get a code and are blocked until approved via openclaw pairing approve telegram <code>. To find your user ID: message your bot, then run openclaw logs --follow and read the from.id field.
OpenClaw connects to WhatsApp via Baileys — a linked-device protocol (the same method as WhatsApp Web). No Meta Business account required. Scan a QR code in your terminal and your agent runs as a linked device on your existing number.
Text messages, images, documents, voice notes, and location sharing. Your agent can send messages proactively — the same heartbeat alert mechanism as Telegram. Delivery receipts and read indicators work normally.
Using Baileys on a personal account is technically against Meta’s ToS. Enforcement is rare at low message volumes. Never use it for customer-facing deployments. Session re-auth needed every 1–2 weeks.
Run openclaw plugins install @openclaw/whatsapp
Run openclaw channels login --channel whatsapp and scan the QR code: WhatsApp → Settings → Linked Devices → Link a Device
Run openclaw gateway to bring the connection live
Go to discord.com/developers, create an application, add a Bot under the Bot tab. Copy the token.
In OAuth2 → URL Generator, select bot scope (add applications.commands for slash commands). Then in the Bot Permissions section below, check: Send Messages, Read Message History, Embed Links.
Use the generated invite URL to add your bot to your server. Copy your Server (Guild) ID from Discord settings.
Enable the Message Content Intent in the Discord Developer Portal → Bot settings. Without it, your bot can’t read message text in servers — only DMs.
Each server is keyed by its ID. Inside, set requireMention, users allowlist, and roles allowlist. Add a channels map to control which channels the bot can respond in.
Right-click the server name in Discord → Copy Server ID (requires Developer Mode enabled in Discord settings). Use this as the key in your guilds map.
OpenClaw connects via the imsg CLI tool (legacy) or BlueBubbles (recommended for new setups). The gateway communicates with the Messages app over JSON-RPC. Your agent responds from your own Apple ID — no bot account needed. Just text your own number.
Set channels.imessage.enabled: true in openclaw.json and grant Full Disk Access to the Gateway process in macOS System Settings → Privacy & Security → Full Disk Access.
Slack uses a Bolt app (Slack’s official SDK) as the adapter. Create a Slack app at api.slack.com/apps, enable Socket Mode, and add your App Token (xapp-…) and Bot Token (xoxb-…) to OpenClaw credentials. Socket Mode connects outbound — no public URL needed. (The Signing Secret is only needed if you use HTTP mode instead.)
@YourAgent in any channelSlack is best for work contexts where you’re already in Slack all day. For personal use, Telegram is simpler to set up and maintain.
The Dashboard you’ve been using since Day 2 has a built-in chat interface. No setup. No credentials. Open your browser and start talking.
Use WebChat for long-form tasks, reviewing memory, and debugging your agent’s behavior. Use mobile channels (Telegram, WhatsApp) for quick interactions on the go.
Credentials should never be stored as literal strings in this file. Use environment variables, the tokenFile option, or SecretRef providers. WhatsApp session credentials are stored automatically under ~/.openclaw/credentials/whatsapp/. Restart the Gateway after any config change.
You can enable every channel at once. Your agent handles conversations from Telegram, Discord, and WebChat in parallel. Each conversation is independent but all share the same memory.
| Channel | Bold / Italic | Code Blocks | Links | Max Length |
|---|---|---|---|---|
| ✈️ Telegram | Full Markdown | Supported | Inline URLs | 4,096 chars |
| *bold*, _italic_, ~strike~ | Inline + block (```) | URL only | 4,000 chars | |
| 🎮 Discord | Full Markdown | Fenced blocks | Embeds | 2,000 chars |
| 💬 iMessage | Plain text | Plain text | Previews auto | No hard limit |
| 📍 Slack | mrkdwn format | Block Kit | Rich links | 40,000 chars |
| 🌐 WebChat | Full Markdown | Syntax highlight | Clickable | No limit |
OpenClaw automatically adapts response formatting to the channel. Your SOUL.md can instruct the agent to keep responses concise for mobile channels and more detailed for WebChat.
| Type | ✈ Telegram | 🎮 Discord | 🌐 WebChat | |
|---|---|---|---|---|
| Images | ✓ + vision AI | ✓ + vision AI | ✓ + vision AI | ✓ + vision AI |
| Voice Notes | ✓ transcribed | ✓ transcribed | ✓ via upload | − not supported |
| Documents | ✓ | ✓ | ✓ | ✓ |
| Location | ✓ | ✓ | Text only | Text only |
Images are passed to vision-capable models (Sonnet, GPT-4o). Voice notes are transcribed via Whisper before the agent processes them. Your secondary (cheap) model is not used for vision tasks — these always go to your primary model.
By default, dmPolicy is set to "pairing" — unknown senders get a short code and the bot ignores them until you approve via openclaw pairing approve <channel> <code>. Never set "open" on a public-facing bot.
Message your bot, then run openclaw logs --follow and read the from.id field. Add it to allowFrom in your config to allowlist yourself directly.
Use allowFrom to whitelist specific user IDs or phone numbers per channel. Set dmPolicy: "allowlist" to restrict to that list only. iMessage is inherently private — only your Apple ID can trigger it.
WebChat binds to localhost (127.0.0.1) by default. It is not reachable from other devices on your network. If you expose port 18789 externally, set a password in the webchat config block.
| Use Case | Best Channel | Why |
|---|---|---|
| Quick on-the-go questions | Telegram | Fast, reliable, works everywhere |
| Already chat with people on WhatsApp | No context switching — same app | |
| Long coding / research sessions | WebChat | Full Markdown, no length limits, file uploads |
| Shared team assistant | Discord / Slack | Role-gated, thread support, multi-user |
| iPhone-first, Mac always on | iMessage | Native app, no bot account, zero friction |
| Proactive alerts & briefings | Telegram or WhatsApp | Push notifications land reliably on mobile |
Most users end up with Telegram + WebChat as their daily pair. Telegram for mobile, WebChat for desktop work sessions.
Message your bot, then run openclaw logs --follow and grab your from.id. Add it to allowFrom in your Telegram config. Send a test message and confirm it works.
Pick any channel you don’t already have: Discord, WhatsApp, iMessage (macOS), or Slack. Follow the setup steps and send your first message through it. Confirm the response comes back correctly.
Tell your agent something on Telegram (“remember that I prefer bullet-point summaries”). Then open WebChat and ask “what do you know about my formatting preferences?”. Confirm the memory carries over.
On Telegram or WhatsApp, send a voice note to your agent (any question, anything). Confirm the transcription and response come back correctly. This is how you’ll use your agent hands-free.
Your agent can now reach you anywhere. On Day 6 we teach it to act without being asked. HEARTBEAT.md defines what your agent checks on a schedule, proactively, whether you’re online or asleep.