docs(readme): document /telegram bridge + split from standalone daemon
README: the Telegram section now leads with "two ways to run it" and splits into a "From inside the TUI" subsection (covering /telegram connect/disconnect/status, the you:/zot: mirroring convention, the · tg · status tag, and the refuse-when-daemon- running guard) followed by the existing "Standalone daemon" subsection (unchanged content, renamed heading). No code change; description only.
- commit
- 9a32f9cf5c02d93de3a8d143ad0b0d75a1174ee0
- author
- patriceckhart · · 2026-04-20 07:35 UTC
- parent
- 625c238
- signature
- unsigned
- refs
- tag: v0.0.56
1 file · +17 -1
M README.md +17 -1
| @@ -345,7 +345,23 @@ See [docs/skills.md](docs/skills.md) for the frontmatter fields, authoring tips, | |||
| 345 | 345 | ||
| 346 | 346 | ## Telegram bot (bridge) | |
| 347 | 347 | ||
| 348 | - | zot can run as a telegram bot so you can DM it from your phone. It's a built-in subcommand, not a plugin: | |
| 348 | + | zot can run as a telegram bot so you can DM it from your phone. Two ways to run it: **from inside the TUI** (the running session mirrors into Telegram) or **as a standalone background daemon** (a headless bot with its own independent agent). | |
| 349 | + | ||
| 350 | + | ### From inside the TUI | |
| 351 | + | ||
| 352 | + | Type `/telegram` in the running TUI to open a picker with **connect**, **disconnect**, and **status**. When connected: | |
| 353 | + | ||
| 354 | + | - DMs from the paired user become prompts in the **same** session you're typing in, so you can continue a conversation from the terminal on your phone and back again. | |
| 355 | + | - Messages you type in the TUI are mirrored into the Telegram thread prefixed `you: …` and the assistant's replies come back prefixed `zot: …`, so the Telegram chat stays a complete record of both sides of the conversation. | |
| 356 | + | - Messages sent from Telegram show up as your own bubble in Telegram (no mirror) and the assistant's reply to them comes back bare (no prefix). | |
| 357 | + | - The status bar shows a `· tg ·` tag while the bridge is active. | |
| 358 | + | - `/telegram connect` / `/telegram disconnect` / `/telegram status` (or `/tg`) also work as direct commands without the picker. | |
| 359 | + | ||
| 360 | + | The in-TUI bridge refuses to start while the standalone daemon (below) is running, since two concurrent long-poll consumers of the same bot race on every update and silently drop messages. | |
| 361 | + | ||
| 362 | + | ### Standalone daemon | |
| 363 | + | ||
| 364 | + | For headless servers or long-running bots unattached to a TUI: | |
| 349 | 365 | ||
| 350 | 366 | ```bash | |
| 351 | 367 | zot telegram-bot setup # paste a BotFather token, verify, save | |
| @@ -345,7 +345,23 @@ See [docs/skills.md](docs/skills.md) for the frontmatter fields, authoring tips, | |||||
| 345 | 345 | ||||
| 346 | ## Telegram bot (bridge) | 346 | ## Telegram bot (bridge) | ||
| 347 | 347 | ||||
| 348 | - | zot can run as a telegram bot so you can DM it from your phone. It's a built-in subcommand, not a plugin: | 348 | + | zot can run as a telegram bot so you can DM it from your phone. Two ways to run it: **from inside the TUI** (the running session mirrors into Telegram) or **as a standalone background daemon** (a headless bot with its own independent agent). |
| 349 | + | ||||
| 350 | + | ### From inside the TUI | |||
| 351 | + | ||||
| 352 | + | Type `/telegram` in the running TUI to open a picker with **connect**, **disconnect**, and **status**. When connected: | |||
| 353 | + | ||||
| 354 | + | - DMs from the paired user become prompts in the **same** session you're typing in, so you can continue a conversation from the terminal on your phone and back again. | |||
| 355 | + | - Messages you type in the TUI are mirrored into the Telegram thread prefixed `you: …` and the assistant's replies come back prefixed `zot: …`, so the Telegram chat stays a complete record of both sides of the conversation. | |||
| 356 | + | - Messages sent from Telegram show up as your own bubble in Telegram (no mirror) and the assistant's reply to them comes back bare (no prefix). | |||
| 357 | + | - The status bar shows a `· tg ·` tag while the bridge is active. | |||
| 358 | + | - `/telegram connect` / `/telegram disconnect` / `/telegram status` (or `/tg`) also work as direct commands without the picker. | |||
| 359 | + | ||||
| 360 | + | The in-TUI bridge refuses to start while the standalone daemon (below) is running, since two concurrent long-poll consumers of the same bot race on every update and silently drop messages. | |||
| 361 | + | ||||
| 362 | + | ### Standalone daemon | |||
| 363 | + | ||||
| 364 | + | For headless servers or long-running bots unattached to a TUI: | |||
| 349 | 365 | ||||
| 350 | ```bash | 366 | ```bash | ||
| 351 | zot telegram-bot setup # paste a BotFather token, verify, save | 367 | zot telegram-bot setup # paste a BotFather token, verify, save | ||