docs: add quick setup blocks to chat providers
This commit is contained in:
@@ -8,6 +8,25 @@ read_when:
|
|||||||
|
|
||||||
Status: ready for DM and guild text channels via the official Discord bot gateway.
|
Status: ready for DM and guild text channels via the official Discord bot gateway.
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Create a Discord bot and copy the bot token.
|
||||||
|
2) Set the token for Clawdbot:
|
||||||
|
- Env: `DISCORD_BOT_TOKEN=...`
|
||||||
|
- Or config: `discord.token: "..."`.
|
||||||
|
3) Invite the bot to your server with message permissions.
|
||||||
|
4) Start the gateway.
|
||||||
|
5) DM access is pairing by default; approve the pairing code on first contact.
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
discord: {
|
||||||
|
enabled: true,
|
||||||
|
token: "YOUR_BOT_TOKEN"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Goals
|
## Goals
|
||||||
- Talk to Clawdbot via Discord DMs or guild channels.
|
- Talk to Clawdbot via Discord DMs or guild channels.
|
||||||
- Direct chats collapse into the agent's main session (default `agent:main:main`); guild channels stay isolated as `agent:<agentId>:discord:channel:<channelId>` (display names use `discord:<guildSlug>#<channelSlug>`).
|
- Direct chats collapse into the agent's main session (default `agent:main:main`); guild channels stay isolated as `agent:<agentId>:discord:channel:<channelId>` (display names use `discord:<guildSlug>#<channelSlug>`).
|
||||||
@@ -18,8 +37,8 @@ Status: ready for DM and guild text channels via the official Discord bot gatewa
|
|||||||
1. Create a Discord application → Bot, enable the intents you need (DMs + guild messages + message content), and grab the bot token.
|
1. Create a Discord application → Bot, enable the intents you need (DMs + guild messages + message content), and grab the bot token.
|
||||||
2. Invite the bot to your server with the permissions required to read/send messages where you want to use it.
|
2. Invite the bot to your server with the permissions required to read/send messages where you want to use it.
|
||||||
3. Configure Clawdbot with `DISCORD_BOT_TOKEN` (or `discord.token` in `~/.clawdbot/clawdbot.json`).
|
3. Configure Clawdbot with `DISCORD_BOT_TOKEN` (or `discord.token` in `~/.clawdbot/clawdbot.json`).
|
||||||
4. Run the gateway; it auto-starts the Discord provider only when a `discord` config section exists **and** the token is set (unless `discord.enabled = false`).
|
4. Run the gateway; it auto-starts the Discord provider when a token is available (env or config) and `discord.enabled` is not `false`.
|
||||||
- If you prefer env vars, still add `discord: { enabled: true }` to `~/.clawdbot/clawdbot.json` and set `DISCORD_BOT_TOKEN`.
|
- If you prefer env vars, set `DISCORD_BOT_TOKEN` (a config block is optional).
|
||||||
5. Direct chats: use `user:<id>` (or a `<@id>` mention) when delivering; all turns land in the shared `main` session. Bare numeric IDs are ambiguous and rejected.
|
5. Direct chats: use `user:<id>` (or a `<@id>` mention) when delivering; all turns land in the shared `main` session. Bare numeric IDs are ambiguous and rejected.
|
||||||
6. Guild channels: use `channel:<channelId>` for delivery. Mentions are required by default and can be set per guild or per channel.
|
6. Guild channels: use `channel:<channelId>` for delivery. Mentions are required by default and can be set per guild or per channel.
|
||||||
7. Direct chats: secure by default via `discord.dm.policy` (default: `"pairing"`). Unknown senders get a pairing code (expires after 1 hour); approve via `clawdbot pairing approve discord <code>`.
|
7. Direct chats: secure by default via `discord.dm.policy` (default: `"pairing"`). Unknown senders get a pairing code (expires after 1 hour); approve via `clawdbot pairing approve discord <code>`.
|
||||||
|
|||||||
@@ -9,6 +9,24 @@ read_when:
|
|||||||
|
|
||||||
Status: external CLI integration. Gateway spawns `imsg rpc` (JSON-RPC over stdio).
|
Status: external CLI integration. Gateway spawns `imsg rpc` (JSON-RPC over stdio).
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Ensure Messages is signed in on this Mac.
|
||||||
|
2) Install `imsg`:
|
||||||
|
- `brew install steipete/tap/imsg`
|
||||||
|
3) Configure Clawdbot with `imessage.cliPath` and `imessage.dbPath`.
|
||||||
|
4) Start the gateway and approve any macOS prompts (Automation + Full Disk Access).
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
imessage: {
|
||||||
|
enabled: true,
|
||||||
|
cliPath: "/usr/local/bin/imsg",
|
||||||
|
dbPath: "/Users/<you>/Library/Messages/chat.db"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## What it is
|
## What it is
|
||||||
- iMessage provider backed by `imsg` on macOS.
|
- iMessage provider backed by `imsg` on macOS.
|
||||||
- Deterministic routing: replies always go back to iMessage.
|
- Deterministic routing: replies always go back to iMessage.
|
||||||
|
|||||||
@@ -1,40 +1,28 @@
|
|||||||
---
|
---
|
||||||
summary: "All supported providers (models + messaging) in one place"
|
summary: "Messaging platforms Clawdbot can connect to"
|
||||||
read_when:
|
read_when:
|
||||||
- You want a single hub for every provider we document
|
- You want to choose a chat provider for Clawdbot
|
||||||
- You want model providers vs chat providers split clearly
|
- You need a quick overview of supported messaging platforms
|
||||||
---
|
---
|
||||||
# Providers hub
|
# Chat Providers
|
||||||
|
|
||||||
This hub covers **model providers** (LLMs) and **messaging/chat providers** (WhatsApp, Telegram, etc).
|
Clawdbot can talk to you on any chat app you already use. Each provider connects via the Gateway.
|
||||||
For model selection rules, see [/concepts/models](/concepts/models). For the full provider catalog, see
|
Text is supported everywhere; media and reactions vary by provider.
|
||||||
[/concepts/model-providers](/concepts/model-providers).
|
|
||||||
|
|
||||||
## Model providers
|
## Supported providers
|
||||||
|
|
||||||
- [OpenAI (API + Codex)](/providers/openai)
|
- [WhatsApp](/providers/whatsapp) — Most popular; uses Baileys and requires QR pairing.
|
||||||
- [Anthropic (API + Claude CLI)](/providers/anthropic)
|
- [Telegram](/providers/telegram) — Bot API via grammY; supports groups.
|
||||||
- [OpenRouter](/providers/openrouter)
|
- [Discord](/providers/discord) — Discord Bot API + Gateway; supports servers, channels, and DMs.
|
||||||
- [OpenCode Zen](/providers/opencode)
|
- [Slack](/providers/slack) — Bolt SDK; workspace apps.
|
||||||
- [Z.AI](/providers/zai)
|
- [Signal](/providers/signal) — signal-cli; privacy-focused.
|
||||||
- [GLM models](/providers/glm)
|
- [iMessage](/providers/imessage) — macOS only; native integration.
|
||||||
|
- [Microsoft Teams](/providers/msteams) — Bot Framework; enterprise support.
|
||||||
|
- [WebChat](/web/webchat) — Gateway WebChat UI over WebSocket.
|
||||||
|
|
||||||
Full list (xAI, Groq, Mistral, etc.): [/concepts/model-providers](/concepts/model-providers)
|
## Notes
|
||||||
|
|
||||||
## Messaging + chat providers
|
- Providers can run simultaneously; configure multiple and Clawdbot will route per chat.
|
||||||
|
- Group behavior varies by provider; see [Groups](/concepts/groups).
|
||||||
- [WhatsApp](/providers/whatsapp)
|
- DM pairing and allowlists are enforced for safety; see [Security](/gateway/security).
|
||||||
- [Telegram](/providers/telegram)
|
- Model providers are documented separately; see [Model Providers](/providers/models).
|
||||||
- [Telegram (grammY notes)](/providers/grammy)
|
|
||||||
- [Slack](/providers/slack)
|
|
||||||
- [Discord](/providers/discord)
|
|
||||||
- [Signal](/providers/signal)
|
|
||||||
- [iMessage](/providers/imessage)
|
|
||||||
- [Location parsing](/providers/location)
|
|
||||||
- [Provider troubleshooting](/providers/troubleshooting)
|
|
||||||
|
|
||||||
## Ingress + web
|
|
||||||
|
|
||||||
- [WebChat](/web/webchat)
|
|
||||||
- [Webhooks](/automation/webhook)
|
|
||||||
- [Gmail Pub/Sub](/automation/gmail-pubsub)
|
|
||||||
|
|||||||
33
docs/providers/models.md
Normal file
33
docs/providers/models.md
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
---
|
||||||
|
summary: "Model providers (LLMs) supported by Clawdbot"
|
||||||
|
read_when:
|
||||||
|
- You want to choose a model provider
|
||||||
|
- You want quick setup examples for LLM auth + model selection
|
||||||
|
---
|
||||||
|
# Model Providers
|
||||||
|
|
||||||
|
Clawdbot can use many LLM providers. Pick one, authenticate, then set the default
|
||||||
|
model as `provider/model`.
|
||||||
|
|
||||||
|
## Quick start (two steps)
|
||||||
|
|
||||||
|
1) Authenticate with the provider (usually via `clawdbot onboard`).
|
||||||
|
2) Set the default model:
|
||||||
|
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
agents: { defaults: { model: { primary: "anthropic/claude-opus-4-5" } } }
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Supported providers (starter set)
|
||||||
|
|
||||||
|
- [OpenAI (API + Codex)](/providers/openai)
|
||||||
|
- [Anthropic (API + Claude CLI)](/providers/anthropic)
|
||||||
|
- [OpenRouter](/providers/openrouter)
|
||||||
|
- [OpenCode Zen](/providers/opencode)
|
||||||
|
- [Z.AI](/providers/zai)
|
||||||
|
- [GLM models](/providers/glm)
|
||||||
|
|
||||||
|
For the full provider catalog (xAI, Groq, Mistral, etc.) and advanced configuration,
|
||||||
|
see [Model providers](/concepts/model-providers).
|
||||||
@@ -12,6 +12,25 @@ Updated: 2026-01-08
|
|||||||
|
|
||||||
Status: text + DM attachments are supported; channel/group attachments require Microsoft Graph permissions. Polls are sent via Adaptive Cards.
|
Status: text + DM attachments are supported; channel/group attachments require Microsoft Graph permissions. Polls are sent via Adaptive Cards.
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Create an **Azure Bot** (App ID + client secret + tenant ID).
|
||||||
|
2) Configure Clawdbot with those credentials.
|
||||||
|
3) Expose `/api/messages` (port 3978 by default) via a public URL or tunnel.
|
||||||
|
4) Install the Teams app package and start the gateway.
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
msteams: {
|
||||||
|
enabled: true,
|
||||||
|
appId: "<APP_ID>",
|
||||||
|
appPassword: "<APP_PASSWORD>",
|
||||||
|
tenantId: "<TENANT_ID>",
|
||||||
|
webhook: { port: 3978, path: "/api/messages" }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Goals
|
## Goals
|
||||||
- Talk to Clawdbot via Teams DMs, group chats, or channels.
|
- Talk to Clawdbot via Teams DMs, group chats, or channels.
|
||||||
- Keep routing deterministic: replies always go back to the provider they arrived on.
|
- Keep routing deterministic: replies always go back to the provider they arrived on.
|
||||||
|
|||||||
@@ -7,7 +7,8 @@ read_when:
|
|||||||
# OpenAI
|
# OpenAI
|
||||||
|
|
||||||
OpenAI provides developer APIs for GPT models. Codex supports **ChatGPT sign-in** for subscription
|
OpenAI provides developer APIs for GPT models. Codex supports **ChatGPT sign-in** for subscription
|
||||||
access or **API key** sign-in for usage-based access. The Codex CLI caches login details in
|
access or **API key** sign-in for usage-based access. Codex cloud requires ChatGPT sign-in, while
|
||||||
|
the Codex CLI supports either sign-in method. The Codex CLI caches login details in
|
||||||
`~/.codex/auth.json` (or your OS credential store), which Clawdbot can reuse.
|
`~/.codex/auth.json` (or your OS credential store), which Clawdbot can reuse.
|
||||||
|
|
||||||
## Option A: OpenAI API key (OpenAI Platform)
|
## Option A: OpenAI API key (OpenAI Platform)
|
||||||
|
|||||||
@@ -9,6 +9,26 @@ read_when:
|
|||||||
|
|
||||||
Status: external CLI integration. Gateway talks to `signal-cli` over HTTP JSON-RPC + SSE.
|
Status: external CLI integration. Gateway talks to `signal-cli` over HTTP JSON-RPC + SSE.
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Use a **separate Signal number** for the bot (recommended).
|
||||||
|
2) Install `signal-cli` (Java required).
|
||||||
|
3) Link the bot device and start the daemon:
|
||||||
|
- `signal-cli link -n "Clawdbot"`
|
||||||
|
4) Configure Clawdbot and start the gateway.
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
signal: {
|
||||||
|
enabled: true,
|
||||||
|
account: "+15551234567",
|
||||||
|
cliPath: "signal-cli",
|
||||||
|
dmPolicy: "pairing",
|
||||||
|
allowFrom: ["+15557654321"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## What it is
|
## What it is
|
||||||
- Signal provider via `signal-cli` (not embedded libsignal).
|
- Signal provider via `signal-cli` (not embedded libsignal).
|
||||||
- Deterministic routing: replies always go back to Signal.
|
- Deterministic routing: replies always go back to Signal.
|
||||||
|
|||||||
@@ -5,6 +5,22 @@ read_when: "Setting up Slack or debugging Slack socket mode"
|
|||||||
|
|
||||||
# Slack (socket mode)
|
# Slack (socket mode)
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Create a Slack app and enable **Socket Mode**.
|
||||||
|
2) Create an **App Token** (`xapp-...`) and **Bot Token** (`xoxb-...`).
|
||||||
|
3) Set tokens for Clawdbot and start the gateway.
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
slack: {
|
||||||
|
enabled: true,
|
||||||
|
appToken: "xapp-...",
|
||||||
|
botToken: "xoxb-..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Setup
|
## Setup
|
||||||
1) Create a Slack app (From scratch) in https://api.slack.com/apps.
|
1) Create a Slack app (From scratch) in https://api.slack.com/apps.
|
||||||
2) **Socket Mode** → toggle on. Then go to **Basic Information** → **App-Level Tokens** → **Generate Token and Scopes** with scope `connections:write`. Copy the **App Token** (`xapp-...`).
|
2) **Socket Mode** → toggle on. Then go to **Basic Information** → **App-Level Tokens** → **Generate Token and Scopes** with scope `connections:write`. Copy the **App Token** (`xapp-...`).
|
||||||
@@ -24,6 +40,24 @@ Use the manifest below so scopes and events stay in sync.
|
|||||||
|
|
||||||
Multi-account support: use `slack.accounts` with per-account tokens and optional `name`. See [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) for the shared pattern.
|
Multi-account support: use `slack.accounts` with per-account tokens and optional `name`. See [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) for the shared pattern.
|
||||||
|
|
||||||
|
## Clawdbot config (minimal)
|
||||||
|
|
||||||
|
Set tokens via env vars (recommended):
|
||||||
|
- `SLACK_APP_TOKEN=xapp-...`
|
||||||
|
- `SLACK_BOT_TOKEN=xoxb-...`
|
||||||
|
|
||||||
|
Or via config:
|
||||||
|
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
slack: {
|
||||||
|
enabled: true,
|
||||||
|
appToken: "xapp-...",
|
||||||
|
botToken: "xoxb-..."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## History context
|
## History context
|
||||||
- `slack.historyLimit` (or `slack.accounts.*.historyLimit`) controls how many recent channel/group messages are wrapped into the prompt.
|
- `slack.historyLimit` (or `slack.accounts.*.historyLimit`) controls how many recent channel/group messages are wrapped into the prompt.
|
||||||
- Falls back to `messages.groupChat.historyLimit`. Set `0` to disable (default 50).
|
- Falls back to `messages.groupChat.historyLimit`. Set `0` to disable (default 50).
|
||||||
|
|||||||
@@ -8,6 +8,25 @@ read_when:
|
|||||||
|
|
||||||
Status: production-ready for bot DMs + groups via grammY. Long-polling by default; webhook optional.
|
Status: production-ready for bot DMs + groups via grammY. Long-polling by default; webhook optional.
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Create a bot with **@BotFather** and copy the token.
|
||||||
|
2) Set the token:
|
||||||
|
- Env: `TELEGRAM_BOT_TOKEN=...`
|
||||||
|
- Or config: `telegram.botToken: "..."`.
|
||||||
|
3) Start the gateway.
|
||||||
|
4) DM access is pairing by default; approve the pairing code on first contact.
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
telegram: {
|
||||||
|
enabled: true,
|
||||||
|
botToken: "123:abc",
|
||||||
|
dmPolicy: "pairing"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## What it is
|
## What it is
|
||||||
- A Telegram Bot API provider owned by the Gateway.
|
- A Telegram Bot API provider owned by the Gateway.
|
||||||
- Deterministic routing: replies go back to Telegram; the model never chooses providers.
|
- Deterministic routing: replies go back to Telegram; the model never chooses providers.
|
||||||
@@ -37,9 +56,11 @@ Example:
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Env option: `TELEGRAM_BOT_TOKEN=...` (works for the default account).
|
||||||
|
|
||||||
Multi-account support: use `telegram.accounts` with per-account tokens and optional `name`. See [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) for the shared pattern.
|
Multi-account support: use `telegram.accounts` with per-account tokens and optional `name`. See [`gateway/configuration`](/gateway/configuration#telegramaccounts--discordaccounts--slackaccounts--signalaccounts--imessageaccounts) for the shared pattern.
|
||||||
|
|
||||||
3) Start the gateway. Telegram starts when a `telegram` config section exists and a token is resolved.
|
3) Start the gateway. Telegram starts when a token is resolved (env or config).
|
||||||
4) DM access defaults to pairing. Approve the code when the bot is first contacted.
|
4) DM access defaults to pairing. Approve the code when the bot is first contacted.
|
||||||
5) For groups: add the bot, decide privacy/admin behavior (below), then set `telegram.groups` to control mention gating + allowlists.
|
5) For groups: add the bot, decide privacy/admin behavior (below), then set `telegram.groups` to control mention gating + allowlists.
|
||||||
|
|
||||||
|
|||||||
@@ -8,6 +8,22 @@ read_when:
|
|||||||
|
|
||||||
Status: WhatsApp Web via Baileys only. Gateway owns the session(s).
|
Status: WhatsApp Web via Baileys only. Gateway owns the session(s).
|
||||||
|
|
||||||
|
## Quick setup (beginner)
|
||||||
|
1) Use a **separate phone number** if possible (recommended).
|
||||||
|
2) Configure WhatsApp in `~/.clawdbot/clawdbot.json`.
|
||||||
|
3) Run `clawdbot providers login` to scan the QR code (Linked Devices).
|
||||||
|
4) Start the gateway.
|
||||||
|
|
||||||
|
Minimal config:
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
whatsapp: {
|
||||||
|
dmPolicy: "allowlist",
|
||||||
|
allowFrom: ["+15551234567"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
## Goals
|
## Goals
|
||||||
- Multiple WhatsApp accounts (multi-account) in one Gateway process.
|
- Multiple WhatsApp accounts (multi-account) in one Gateway process.
|
||||||
- Deterministic routing: replies return to WhatsApp, no model routing.
|
- Deterministic routing: replies return to WhatsApp, no model routing.
|
||||||
|
|||||||
@@ -58,7 +58,8 @@ Use these hubs to discover every page, including deep dives and reference docs t
|
|||||||
|
|
||||||
## Providers + ingress
|
## Providers + ingress
|
||||||
|
|
||||||
- [Model providers hub](/providers)
|
- [Chat providers hub](/providers)
|
||||||
|
- [Model providers hub](/providers/models)
|
||||||
- [WhatsApp](/providers/whatsapp)
|
- [WhatsApp](/providers/whatsapp)
|
||||||
- [Telegram](/providers/telegram)
|
- [Telegram](/providers/telegram)
|
||||||
- [Telegram (grammY notes)](/providers/grammy)
|
- [Telegram (grammY notes)](/providers/grammy)
|
||||||
|
|||||||
@@ -13,6 +13,11 @@ Status: the macOS/iOS SwiftUI chat UI talks directly to the Gateway WebSocket.
|
|||||||
- Uses the same sessions and routing rules as other providers.
|
- Uses the same sessions and routing rules as other providers.
|
||||||
- Deterministic routing: replies always go back to WebChat.
|
- Deterministic routing: replies always go back to WebChat.
|
||||||
|
|
||||||
|
## Quick start
|
||||||
|
1) Start the gateway.
|
||||||
|
2) Open the WebChat UI (macOS/iOS app) or the Control UI chat tab.
|
||||||
|
3) Ensure gateway auth is configured if you are not on loopback.
|
||||||
|
|
||||||
## How it works (behavior)
|
## How it works (behavior)
|
||||||
- The UI connects to the Gateway WebSocket and uses `chat.history` + `chat.send`.
|
- The UI connects to the Gateway WebSocket and uses `chat.history` + `chat.send`.
|
||||||
- History is always fetched from the gateway (no local file watching).
|
- History is always fetched from the gateway (no local file watching).
|
||||||
|
|||||||
Reference in New Issue
Block a user