Manage channels
Channels let the same local Bestie runtime serve chat surfaces outside the terminal. Use bestie channels to see which adapters are configured, check daemon state, and run channel-focused diagnostics.
Bestie currently includes two channel adapters:
| Channel | Polling | Attachments | Voice | Tool progress | Approvals |
|---|---|---|---|---|---|
| Telegram | Yes | Yes | Voice input and replies | Yes | Yes |
| Zalo | Yes | No | No | Yes | Yes |
Use Telegram when you need attachment or voice workflows. Use Zalo for owner-only text chat through the current Zalo adapter.
List channel status
Section titled “List channel status”Show all known channels:
bestie channelsbestie channels listbestie channels statusThese commands print a table with:
- channel name
- whether the channel is enabled in config
- whether an owner id is configured
- the token environment variable name
- daemon state for that channel
Daemon state can be RUN, STALE, or STOP. A stale daemon means Bestie found a state file but the recorded process is no longer running.
Run channel diagnostics
Section titled “Run channel diagnostics”Run diagnostics for all channels:
bestie channels doctorRun diagnostics for one channel:
bestie channels doctor --channel telegrambestie channels doctor --channel zaloAdd --connect when you want Doctor to make the channel-specific network check:
bestie channels doctor --channel telegram --connectbestie channels doctor --channel zalo --connectFor automation, emit JSON:
bestie channels doctor --channel all --jsonbestie channels doctor --channel telegram --connect --jsonbestie channels doctor --channel zalo --connect --jsonChannel Doctor filters the full Doctor report to checks that match the selected channel. It exits non-zero when selected channel checks include failures.
Start a channel
Section titled “Start a channel”Run Telegram polling in the foreground:
bestie channels telegramRun Zalo polling in the foreground:
bestie channels zaloFor a smoke check, process one polling batch and exit:
bestie channels telegram --oncebestie channels zalo --onceFor long-running local operation, use daemons:
bestie daemon start --channel telegrambestie daemon start --channel zalobestie daemon status --channel allConfigure a channel
Section titled “Configure a channel”Use the channel-specific setup commands:
bestie channels telegram setupbestie channels zalo setupChannel setup stores non-secret channel settings in .bestie/config.json and stores token values in .bestie/.env.
Telegram also supports owner discovery:
bestie channels telegram whoamiCommands inside channels
Section titled “Commands inside channels”Both Telegram and Zalo support local runtime commands from the configured owner account:
/help/status/providers/memory/memory pending/memory pause/memory resume/approvals/approve <id>/deny <id>Telegram also supports /start and /doctor.
Memory commands include additional forms such as /memory list, /memory analyze, /memory cleanup dry-run, /memory governance status, /memory maintenance status, /memory maintenance install, and /memory maintenance remove.
Unknown slash commands return a short fallback instead of going to the LLM.
Troubleshooting
Section titled “Troubleshooting”The channel is off
Section titled “The channel is off”Run setup for that channel:
bestie channels telegram setupbestie channels zalo setupThen check status:
bestie channels listThe owner is missing
Section titled “The owner is missing”Set the owner id in config or rerun setup. For Telegram, you can send a message to the bot and run:
bestie channels telegram whoamiThe daemon is stale
Section titled “The daemon is stale”Restart that channel daemon:
bestie daemon restart --channel telegrambestie daemon restart --channel zaloA channel command is unknown
Section titled “A channel command is unknown”Supported channel adapter names are telegram and zalo. Run:
bestie channels --helpThen use the channel-specific guide for setup and runtime details.
