Back to Cline

Connectors

docs/cli/connectors.mdx

3.86.08.2 KB
Original Source
<Warning> This feature currently only applies to Cline CLI. </Warning>

Connectors let you chat with your agent from messaging platforms. Each incoming message creates or continues an agent session, and the agent's response is sent back to the conversation.

Setup Wizard

Run cline connect to open an interactive wizard that guides you through platform selection, credential entry, security configuration, and advanced options (provider, model, system prompt, agent mode).

bash
cline connect

Supported Platforms

PlatformDirect CommandRequired Credentials
Telegramcline connect telegramBot token
Slackcline connect slackBot token, signing secret, base URL
Discordcline connect discordApplication ID, bot token, public key, base URL
Google Chatcline connect gchatService account credentials JSON, base URL
WhatsAppcline connect whatsappPhone number ID, access token, app secret, verify token, base URL
Linearcline connect linearAPI key, webhook signing secret, base URL

Telegram

<Steps> <Step title="Create a Telegram bot"> Open Telegram and start a chat with [@BotFather](https://t.me/BotFather). Send `/newbot` and follow the prompts:
1. Enter a display name (e.g., "Cline")
2. Enter a username ending in `bot` (e.g., `cline_myname_bot`). Must be unique across Telegram.
3. BotFather responds with your bot token (looks like `7123456789:AAH...`)
</Step> <Step title="Start the connector"> ```bash cline connect telegram -k <BOT-TOKEN> ```
The connector discovers the bot username from the token. Use `--bot-username` only if you need to override it.
</Step> <Step title="Chat with your bot"> Open Telegram, search for your bot's username, and send a message. The agent processes it and replies in the chat. </Step> </Steps>

Security

By default, anyone who finds your bot can message it and it will execute tasks on your machine. Lock it down with the --hook-command flag.

<Steps> <Step title="Get your Telegram user ID"> Message [@userinfobot](https://t.me/userinfobot) on Telegram. It replies with your user ID immediately. </Step> <Step title="Start with access control"> Replace `12345` with your actual Telegram user ID:
```bash
cline connect telegram -k <BOT-TOKEN> \
  --hook-command 'jq -r ".payload.actor.participantKey" | grep -q "telegram:id:12345" && echo "{\"action\":\"allow\"}" || echo "{\"action\":\"deny\",\"message\":\"unauthorized\"}"'
```
</Step> </Steps>

The --hook-command receives each incoming message with sender info via stdin. Your script returns {"action": "allow"} or {"action": "deny", "message": "reason"}. Without --hook-command, everything is auto-approved.

Slack

Requires a bot token, signing secret, and public base URL.

bash
cline connect slack --token <BOT-TOKEN> --signing-secret <SECRET> --base-url <URL>

Each Slack thread maps to an agent session, so the agent maintains conversation context within a thread.

Discord

Requires a Discord application ID, bot token, public key, and public base URL. The connector listens for Discord interactions at /api/webhooks/discord and also starts a Discord gateway listener for mentions, replies, reactions, and DMs.

<Steps> <Step title="Create a Discord application and bot"> Open [Discord Developer Portal](https://discord.com/developers/applications) and create an application.
1. In **General Information**, copy the **Application ID** and **Public Key**.
2. In **Bot**, create a bot if one does not exist, then reset and copy the bot token.
3. Enable **Message Content Intent** if you want normal messages, replies, and DMs to include text content.
</Step> <Step title="Expose a public base URL"> For local development, use a tunnel such as ngrok:
```bash
ngrok http 8788
```

Copy the HTTPS forwarding URL. This is your connector base URL, for example
`https://1234-5678.ngrok-free.app`.
</Step> <Step title="Start the connector"> ```bash cline connect discord \ --application-id <ID> \ --bot-token <TOKEN> \ --public-key <KEY> \ --base-url <URL> \ --port 8788 \ --cwd /path/to/repo \ --enable-tools ```
`--app-id` is an alias for `--application-id`, and `--token` is an alias for
`--bot-token`.

`--enable-tools` allows the agent to inspect files, run commands, edit code,
and prepare PRs from Discord. Omit it if the bot should only chat.
</Step> <Step title="Configure the Discord interactions endpoint"> In the Discord Developer Portal, set **Interactions Endpoint URL** to:
```text
<base-url>/api/webhooks/discord
```

For example:

```text
https://1234-5678.ngrok-free.app/api/webhooks/discord
```

You can verify the connector is reachable with:

```bash
curl <base-url>/health
```
</Step> <Step title="Invite the bot to a test server"> In **OAuth2 > URL Generator**, select the `bot` and `applications.commands` scopes, then give the bot permission to send messages and read message history. Open the generated URL and install the bot into your test server. </Step> <Step title="Chat with the bot"> Mention the bot in a server channel, reply in a bot-created thread, or DM the bot. Each Discord conversation keeps its own agent session and context. </Step> </Steps>

Discord Command Reference

Send these commands in Discord:

CommandDescription
/help or /startShow connector help
/new or /clearStart a fresh session for this Discord conversation
/whereamiShow thread, channel, DM state, cwd, workspaceRoot, tools, and yolo state
/tools [on|off|toggle]View or change whether repo/file/shell tools are allowed
/yolo [on|off|toggle]View or change automatic tool approval
/cwd [path]View or change the working directory for this conversation
/schedule create/list/trigger/deleteManage scheduled workflows targeting this conversation
/abortStop the current task
/exitStop the connector

Normal messages are treated as agent tasks. If a task is already running, normal messages steer the active task.

Discord Security

By default, anyone who can reach the bot can ask it to run tasks. Restrict access with --hook-command. The hook receives the Discord user as a participant key such as discord:user:123456789.

bash
cline connect discord \
  --application-id <ID> \
  --bot-token <TOKEN> \
  --public-key <KEY> \
  --base-url <URL> \
  --hook-command 'jq -r ".payload.actor.participantKey" | grep -q "discord:user:123456789" && echo "{\"action\":\"allow\"}" || echo "{\"action\":\"deny\",\"message\":\"unauthorized\"}"'

Google Chat

Requires a service account credentials JSON file and public base URL.

bash
cline connect gchat --credentials <JSON> --base-url <URL>

WhatsApp

Requires a phone number ID, access token, app secret, webhook verify token, and public base URL.

bash
cline connect whatsapp --phone-id <ID> --token <TOKEN> --app-secret <SECRET> --base-url <URL>

Linear

Requires an API key, webhook signing secret, and public base URL.

bash
cline connect linear --api-key <KEY> --signing-secret <SECRET> --base-url <URL>

Managing Connectors

bash
# Stop all connectors
cline connect --stop

# Stop a specific connector
cline connect telegram --stop

Hook Command Protocol

The --hook-command pattern works across all connectors. The script receives a JSON payload via stdin:

json
{
  "payload": {
    "actor": {
      "participantKey": "telegram:id:12345",
      "displayName": "User Name"
    },
    "message": "The incoming message text"
  }
}

Return {"action": "allow"} or {"action": "deny", "message": "reason"}.

Running Multiple Connectors

Multiple connectors can run simultaneously. They all share the same hub:

bash
# Terminal 1
cline connect telegram -k $TELEGRAM_TOKEN

# Terminal 2
cline connect slack --token $SLACK_TOKEN --signing-secret $SECRET --base-url $URL

Connectors require the hub. Start it with cline hub start if it doesn't auto-start.