refactor!: rename chat providers to channels

This commit is contained in:
Peter Steinberger
2026-01-13 06:16:43 +00:00
parent 0cd632ba84
commit 90342a4f3a
393 changed files with 8004 additions and 6737 deletions

View File

@@ -16,7 +16,7 @@ Youre putting an agent in a position to:
- send messages back out via WhatsApp/Telegram/Discord
Start conservative:
- Always set `whatsapp.allowFrom` (never run open-to-the-world on your personal Mac).
- Always set `channels.whatsapp.allowFrom` (never run open-to-the-world on your personal Mac).
- Use a dedicated WhatsApp number for the assistant.
- Heartbeats now default to every 30 minutes. Disable until you trust the setup by setting `agents.defaults.heartbeat.every: "0m"`.
@@ -68,7 +68,7 @@ If you link your personal WhatsApp to Clawdbot, every message to you becomes “
1) Pair WhatsApp Web (shows QR; scan with the assistant phone):
```bash
clawdbot providers login
clawdbot channels login
```
2) Start the Gateway (leave it running):
@@ -81,9 +81,7 @@ clawdbot gateway --port 18789
```json5
{
whatsapp: {
allowFrom: ["+15555550123"]
}
channels: { whatsapp: { allowFrom: ["+15555550123"] } }
}
```
@@ -146,10 +144,12 @@ Example:
// Start with 0; enable later.
heartbeat: { every: "0m" }
},
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true }
channels: {
whatsapp: {
allowFrom: ["+15555550123"],
groups: {
"*": { requireMention: true }
}
}
},
routing: {

View File

@@ -271,11 +271,11 @@ without WhatsApp/Telegram.
### Telegram: what goes in `allowFrom`?
`telegram.allowFrom` is **the human senders Telegram user ID** (numeric, recommended) or `@username`. It is not the bot username. To find your ID, DM `@userinfobot` or read the `from.id` in the gateway log for a DM. See [/providers/telegram](/providers/telegram#access-control-dms--groups).
`channels.telegram.allowFrom` is **the human senders Telegram user ID** (numeric, recommended) or `@username`. It is not the bot username. To find your ID, DM `@userinfobot` or read the `from.id` in the gateway log for a DM. See [/channels/telegram](/channels/telegram#access-control-dms--groups).
### Can multiple people use one WhatsApp number with different Clawdbots?
Yes, via **multiagent routing**. Bind each senders WhatsApp **DM** (peer `kind: "dm"`, sender E.164 like `+15551234567`) to a different `agentId`, so each person gets their own workspace and session store. Replies still come from the **same WhatsApp account**, and DM access control (`whatsapp.dmPolicy` / `whatsapp.allowFrom`) is global per WhatsApp account. See [Multi-Agent Routing](/concepts/multi-agent) and [WhatsApp](/providers/whatsapp).
Yes, via **multiagent routing**. Bind each senders WhatsApp **DM** (peer `kind: "dm"`, sender E.164 like `+15551234567`) to a different `agentId`, so each person gets their own workspace and session store. Replies still come from the **same WhatsApp account**, and DM access control (`channels.whatsapp.dmPolicy` / `channels.whatsapp.allowFrom`) is global per WhatsApp account. See [Multi-Agent Routing](/concepts/multi-agent) and [WhatsApp](/channels/whatsapp).
### Can I run a "fast chat" agent and an "Opus for coding" agent?
@@ -548,7 +548,7 @@ The Gateway watches the config and supports hotreload:
The common pattern is **one Gateway** (e.g. Raspberry Pi) plus **nodes** and **agents**:
- **Gateway (central):** owns providers (Signal/WhatsApp), routing, and sessions.
- **Gateway (central):** owns channels (Signal/WhatsApp), routing, and sessions.
- **Nodes (devices):** Macs/iOS/Android connect as peripherals and expose local tools (`system.run`, `canvas`, `camera`).
- **Agents (workers):** separate brains/workspaces for special roles (e.g. “Hetzner ops”, “Personal data”).
- **Subagents:** spawn background work from a main agent when you want parallelism.
@@ -605,7 +605,7 @@ Yes. `config.apply` validates + writes the full config and restarts the Gateway
```json5
{
agents: { defaults: { workspace: "~/clawd" } },
whatsapp: { allowFrom: ["+15555550123"] }
channels: { whatsapp: { allowFrom: ["+15555550123"] } }
}
```
@@ -788,9 +788,11 @@ If you want only **you** to be able to trigger group replies:
```json5
{
whatsapp: {
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"]
channels: {
whatsapp: {
groupPolicy: "allowlist",
groupAllowFrom: ["+15551234567"]
}
}
}
```
@@ -799,7 +801,7 @@ If you want only **you** to be able to trigger group replies:
Two common causes:
- Mention gating is on (default). You must @mention the bot (or match `mentionPatterns`).
- You configured `whatsapp.groups` without `"*"` and the group isnt allowlisted.
- You configured `channels.whatsapp.groups` without `"*"` and the group isnt allowlisted.
See [Groups](/concepts/groups) and [Group messages](/concepts/group-messages).
@@ -1276,7 +1278,7 @@ Note: images are resized/recompressed (max side 2048px) to hit size limits. See
Treat inbound DMs as untrusted input. Defaults are designed to reduce risk:
- Default behavior on DMcapable providers is **pairing**:
- Default behavior on DMcapable channels is **pairing**:
- Unknown senders receive a pairing code; the bot does not process their message.
- Approve with: `clawdbot pairing approve <provider> <code>`
- Pending requests are capped at **3 per provider**; check `clawdbot pairing list <provider>` if a code didnt arrive.
@@ -1300,7 +1302,7 @@ List pending requests:
clawdbot pairing list whatsapp
```
Wizard phone number prompt: its used to set your **allowlist/owner** so your own DMs are permitted. Its not used for auto-sending. If you run on your personal WhatsApp number, use that number and enable `whatsapp.selfChatMode`.
Wizard phone number prompt: its used to set your **allowlist/owner** so your own DMs are permitted. Its not used for auto-sending. If you run on your personal WhatsApp number, use that number and enable `channels.whatsapp.selfChatMode`.
## Chat commands, aborting tasks, and “it wont stop”
@@ -1355,22 +1357,24 @@ Enable self-chat mode and allowlist your own number:
```json5
{
whatsapp: {
selfChatMode: true,
dmPolicy: "allowlist",
allowFrom: ["+15555550123"]
channels: {
whatsapp: {
selfChatMode: true,
dmPolicy: "allowlist",
allowFrom: ["+15555550123"]
}
}
}
```
See [WhatsApp setup](/providers/whatsapp).
See [WhatsApp setup](/channels/whatsapp).
### WhatsApp logged me out. How do I reauth?
Run the login command again and scan the QR code:
```bash
clawdbot providers login
clawdbot channels login
```
### Build errors on `main` — whats the standard fix path?

View File

@@ -1,5 +1,5 @@
---
summary: "Beginner guide: from zero to first message (wizard, auth, providers, pairing)"
summary: "Beginner guide: from zero to first message (wizard, auth, channels, pairing)"
read_when:
- First time setup from zero
- You want the fastest path from install → onboarding → first message
@@ -12,7 +12,7 @@ Goal: go from **zero** → **first working chat** (with sane defaults) as quickl
Recommended path: use the **CLI onboarding wizard** (`clawdbot onboard`). It sets up:
- model/auth (OAuth recommended)
- gateway settings
- providers (WhatsApp/Telegram/Discord/…)
- channels (WhatsApp/Telegram/Discord/…)
- pairing defaults (secure DMs)
- workspace bootstrap + skills
- optional background daemon
@@ -118,18 +118,18 @@ providers. If you use WhatsApp or Telegram, run the Gateway with **Node**.
### WhatsApp (QR login)
```bash
clawdbot providers login
clawdbot channels login
```
Scan via WhatsApp → Settings → Linked Devices.
WhatsApp doc: [WhatsApp](/providers/whatsapp)
WhatsApp doc: [WhatsApp](/channels/whatsapp)
### Telegram / Discord / others
The wizard can write tokens/config for you. If you prefer manual config, start with:
- Telegram: [Telegram](/providers/telegram)
- Discord: [Discord](/providers/discord)
- Telegram: [Telegram](/channels/telegram)
- Discord: [Discord](/channels/discord)
**Telegram DM tip:** your first DM returns a pairing code. Approve it (see next step) or the bot wont respond.

View File

@@ -51,7 +51,7 @@ Use these hubs to discover every page, including deep dives and reference docs t
- [Presence](/concepts/presence)
- [Discovery + transports](/gateway/discovery)
- [Bonjour](/gateway/bonjour)
- [Provider routing](/concepts/provider-routing)
- [Channel routing](/concepts/channel-routing)
- [Groups](/concepts/groups)
- [Group messages](/concepts/group-messages)
- [Model failover](/concepts/model-failover)
@@ -59,16 +59,16 @@ Use these hubs to discover every page, including deep dives and reference docs t
## Providers + ingress
- [Chat providers hub](/providers)
- [Chat channels hub](/channels)
- [Model providers hub](/providers/models)
- [WhatsApp](/providers/whatsapp)
- [Telegram](/providers/telegram)
- [Telegram (grammY notes)](/providers/grammy)
- [Slack](/providers/slack)
- [Discord](/providers/discord)
- [Signal](/providers/signal)
- [iMessage](/providers/imessage)
- [Location parsing](/providers/location)
- [WhatsApp](/channels/whatsapp)
- [Telegram](/channels/telegram)
- [Telegram (grammY notes)](/channels/grammy)
- [Slack](/channels/slack)
- [Discord](/channels/discord)
- [Signal](/channels/signal)
- [iMessage](/channels/imessage)
- [Location parsing](/channels/location)
- [WebChat](/web/webchat)
- [Webhooks](/automation/webhook)
- [Gmail Pub/Sub](/automation/gmail-pubsub)

View File

@@ -34,7 +34,7 @@ clawdbot pairing list telegram
clawdbot pairing approve telegram <CODE>
```
Supported providers: `telegram`, `whatsapp`, `signal`, `imessage`, `discord`, `slack`.
Supported channels: `telegram`, `whatsapp`, `signal`, `imessage`, `discord`, `slack`.
### Where the state lives
@@ -73,9 +73,9 @@ Full protocol + design notes: [Gateway pairing](/gateway/pairing)
- Security model + prompt injection: [Security](/gateway/security)
- Updating safely (run doctor): [Updating](/install/updating)
- Provider configs:
- Telegram: [Telegram](/providers/telegram)
- WhatsApp: [WhatsApp](/providers/whatsapp)
- Signal: [Signal](/providers/signal)
- iMessage: [iMessage](/providers/imessage)
- Discord: [Discord](/providers/discord)
- Slack: [Slack](/providers/slack)
- Telegram: [Telegram](/channels/telegram)
- WhatsApp: [WhatsApp](/channels/whatsapp)
- Signal: [Signal](/channels/signal)
- iMessage: [iMessage](/channels/imessage)
- Discord: [Discord](/channels/discord)
- Slack: [Slack](/channels/slack)

View File

@@ -46,7 +46,7 @@ pnpm clawdbot setup
4) Link surfaces (example: WhatsApp):
```bash
clawdbot providers login
clawdbot channels login
```
5) Sanity check:
@@ -56,7 +56,7 @@ clawdbot health
```
If onboarding is not available in your build:
- Run `clawdbot setup`, then `clawdbot providers login`, then start the Gateway manually (`clawdbot gateway`).
- Run `clawdbot setup`, then `clawdbot channels login`, then start the Gateway manually (`clawdbot gateway`).
## Bleeding edge workflow (Gateway in a terminal)
@@ -124,6 +124,6 @@ user service (no lingering needed). See [Gateway runbook](/gateway) for the syst
- [Gateway runbook](/gateway) (flags, supervision, ports)
- [Gateway configuration](/gateway/configuration) (config schema + examples)
- [Discord](/providers/discord) and [Telegram](/providers/telegram) (reply tags + replyToMode settings)
- [Discord](/channels/discord) and [Telegram](/channels/telegram) (reply tags + replyToMode settings)
- [Clawdbot assistant setup](/start/clawd)
- [macOS app](/platforms/macos) (gateway lifecycle)

View File

@@ -1,5 +1,5 @@
---
summary: "CLI onboarding wizard: guided setup for gateway, workspace, providers, and skills"
summary: "CLI onboarding wizard: guided setup for gateway, workspace, channels, and skills"
read_when:
- Running or configuring the onboarding wizard
- Setting up a new machine
@@ -9,7 +9,7 @@ read_when:
The onboarding wizard is the **recommended** way to set up Clawdbot on macOS,
Linux, or Windows (via WSL2; strongly recommended).
It configures a local Gateway or a remote Gateway connection, plus providers, skills,
It configures a local Gateway or a remote Gateway connection, plus channels, skills,
and workspace defaults in one guided flow.
Primary entrypoint:
@@ -36,7 +36,7 @@ The wizard starts with **QuickStart** (defaults) vs **Advanced** (full control).
- Tailscale exposure **Off**
- Telegram + WhatsApp DMs default to **allowlist** (youll be prompted for your phone number)
**Advanced** exposes every step (mode, workspace, gateway, providers, daemon, skills).
**Advanced** exposes every step (mode, workspace, gateway, channels, daemon, skills).
## What the wizard does
@@ -259,7 +259,7 @@ Clients (macOS app, Control UI) can render steps without reimplementing onboa
The wizard can install `signal-cli` from GitHub releases:
- Downloads the appropriate release asset.
- Stores it under `~/.clawdbot/tools/signal-cli/<version>/`.
- Writes `signal.cliPath` to your config.
- Writes `channels.signal.cliPath` to your config.
Notes:
- JVM builds require **Java 21**.
@@ -272,7 +272,7 @@ Typical fields in `~/.clawdbot/clawdbot.json`:
- `agents.defaults.workspace`
- `agents.defaults.model` / `models.providers` (if Minimax chosen)
- `gateway.*` (mode, bind, auth, tailscale)
- `telegram.botToken`, `discord.token`, `signal.*`, `imessage.*`
- `channels.telegram.botToken`, `channels.discord.token`, `channels.signal.*`, `channels.imessage.*`
- `skills.install.nodeManager`
- `wizard.lastRunAt`
- `wizard.lastRunVersion`
@@ -289,5 +289,5 @@ Sessions are stored under `~/.clawdbot/agents/<agentId>/sessions/`.
- macOS app onboarding: [Onboarding](/start/onboarding)
- Config reference: [Gateway configuration](/gateway/configuration)
- Providers: [WhatsApp](/providers/whatsapp), [Telegram](/providers/telegram), [Discord](/providers/discord), [Signal](/providers/signal), [iMessage](/providers/imessage)
- Providers: [WhatsApp](/channels/whatsapp), [Telegram](/channels/telegram), [Discord](/channels/discord), [Signal](/channels/signal), [iMessage](/channels/imessage)
- Skills: [Skills](/tools/skills), [Skills config](/tools/skills-config)