ID Open Smooth in Telegram

DocsSmooth Agent (self-hosted)

Chat channels

Talk to your Smooth Agent from Telegram, WhatsApp, Slack, Matrix, LINE, WeChat Work and Discord. Only you get answers, every chat keeps its own conversation.

ChannelDirectionHow it connectsWhat you need
Telegramtwo-way, approval buttonslong-polling (no open port)bot token from @BotFather
WhatsApptwo-wayMeta Cloud API webhooktoken, phone-number id, verify token
Slacktwo-wayEvents API webhook (signed)bot token, signing secret
Matrixtwo-way/sync long-polling, any homeserverbot access token
LINEtwo-wayMessaging API webhook (signed)channel access token + secret
WeChat Workdelivery onlygroup robot webhookrobot URL
Discorddelivery onlychannel webhookwebhook URL

Turn channels on

Pick them in the wizard, or name them directly:

bash
smooth-agent setup --channels telegram,slack
smooth-agent channels list                         # what is configured
smooth-agent channels test telegram "hello"        # send a test message
smooth-agent daemon                                # run channels + scheduled jobs

Secrets go in ~/.smooth-agent/.env; the config only names the variable:

config.toml
[channels]
enabled = ["telegram"]
webhook_port = 8808          # for WhatsApp, Slack and LINE

[channels.telegram]
token_env = "TELEGRAM_BOT_TOKEN"
owners = ["123456789"]       # message the bot once: it replies with your id
auto_approve = false         # true = run your tool calls without the button tap
voice_replies = "auto"       # off | auto | always (needs [tts] and ffmpeg)

How it behaves

  • Owner only. Anyone not in owners gets a short "this agent is private" reply with their id, and nothing else.
  • One conversation per chat, saved in smooth.db and resumed after a restart.
  • One message at a time. Turns run in order, so your provider never sees a burst of parallel requests.
  • Live progress. One message shows the steps as they happen ($ git pull, read app.py, search …) and disappears when the answer arrives.
  • Approvals. On Telegram you get ✅ Allow / ❌ Deny buttons. On the other two-way channels reply yes or no (also ya, oke, gas, gak, batal). No answer means no.
  • Files in, files out. Send photos, PDFs, Office files or archives; ask for a report and it sends back a real .docx or .xlsx.
  • Voice. Voice notes are transcribed ([stt]); with voice_replies = "auto" a voice note gets a voice answer too.

Chat commands

CommandWhat it does
/newFresh conversation (the old one stays saved and searchable)
/statusModel, session and memory
/model <name>Switch the model for this chat
/stopStop what the agent is doing
/helpHelp

Per-channel setup

Telegram

  1. Create a bot with @BotFather and copy the token into .env as TELEGRAM_BOT_TOKEN.
  2. Start the daemon, message your bot once, and put the id it replies with into owners.

No open port needed.

WhatsApp

Meta WhatsApp Cloud API. Point the webhook at https://<your-host>/webhook/whatsapp with the verify_token you chose.

config.toml
[channels.whatsapp]
token_env = "WHATSAPP_TOKEN"
phone_id = "123456789012345"
verify_token = "a-secret-you-choose"
owners = ["628123456789"]

Slack

Create a Slack app, enable Event Subscriptions to https://<your-host>/webhook/slack (message.im), and install it to your workspace.

config.toml
[channels.slack]
token_env = "SLACK_BOT_TOKEN"              # xoxb-…
signing_secret_env = "SLACK_SIGNING_SECRET"
owners = ["U0123ABCD"]

Matrix

Works with any homeserver. Invite the bot to a room and it joins (only invites from owners).

config.toml
[channels.matrix]
homeserver = "https://matrix.org"
token_env = "MATRIX_TOKEN"
owners = ["@you:matrix.org"]

LINE

LINE Messaging API, webhook https://<your-host>/webhook/line.

config.toml
[channels.line]
token_env = "LINE_CHANNEL_TOKEN"
secret_env = "LINE_CHANNEL_SECRET"
owners = ["U1234567890abcdef"]

WeChat Work and Discord (alerts)

For delivering results and alerts into a group or channel:

config.toml
[channels.wechat]
webhook_url_env = "WECHAT_ROBOT_URL"

[channels.discord]
webhook_url_env = "DISCORD_WEBHOOK_URL"

Last updated: