Skip to content

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.

Show all known channels:

Terminal window
bestie channels
bestie channels list
bestie channels status

These 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 diagnostics for all channels:

Terminal window
bestie channels doctor

Run diagnostics for one channel:

Terminal window
bestie channels doctor --channel telegram
bestie channels doctor --channel zalo

Add --connect when you want Doctor to make the channel-specific network check:

Terminal window
bestie channels doctor --channel telegram --connect
bestie channels doctor --channel zalo --connect

For automation, emit JSON:

Terminal window
bestie channels doctor --channel all --json
bestie channels doctor --channel telegram --connect --json
bestie channels doctor --channel zalo --connect --json

Channel Doctor filters the full Doctor report to checks that match the selected channel. It exits non-zero when selected channel checks include failures.

Run Telegram polling in the foreground:

Terminal window
bestie channels telegram

Run Zalo polling in the foreground:

Terminal window
bestie channels zalo

For a smoke check, process one polling batch and exit:

Terminal window
bestie channels telegram --once
bestie channels zalo --once

For long-running local operation, use daemons:

Terminal window
bestie daemon start --channel telegram
bestie daemon start --channel zalo
bestie daemon status --channel all

Use the channel-specific setup commands:

Terminal window
bestie channels telegram setup
bestie channels zalo setup

Channel setup stores non-secret channel settings in .bestie/config.json and stores token values in .bestie/.env.

Telegram also supports owner discovery:

Terminal window
bestie channels telegram whoami

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.

Run setup for that channel:

Terminal window
bestie channels telegram setup
bestie channels zalo setup

Then check status:

Terminal window
bestie channels list

Set the owner id in config or rerun setup. For Telegram, you can send a message to the bot and run:

Terminal window
bestie channels telegram whoami

Restart that channel daemon:

Terminal window
bestie daemon restart --channel telegram
bestie daemon restart --channel zalo

Supported channel adapter names are telegram and zalo. Run:

Terminal window
bestie channels --help

Then use the channel-specific guide for setup and runtime details.