Briglia CLI
GitHub
Guide

Telegram

Telegram turns an always-on Briglia into an assistant you can reach from anywhere — text, voice notes, photos and documents. It is optional: the terminal and the Ubuntu Touch app work without it.

Set it up

Easiest: briglia menu → Telegram. Paste the BotFather token, then send your new bot any message — the page detects your chat by itself. By hand:

  1. In Telegram, message @BotFather → /newbot → follow the prompts → copy the token.
  2. Message @userinfobot to get your numeric chat ID (a number — letters mean it's a username).
  3. Run briglia setup → section “Telegram” and paste both. The token is checked live.
  4. Start Briglia (briglia, briglia daemon, or the service) and send your bot a message.
One chat, nobody else

Briglia answers only the paired chat ID and silently ignores every other message, group or user. There is no allowlist to manage. To move to a different bot later, use /switchbot — guided, with a confirmation code.

What you can send

  • Text — including while Briglia is busy: see Writing while Briglia works. Messages that arrive mid-turn are authenticated so a document can't impersonate you.
  • Voice notes — transcribed with your OpenAI key.
  • Photos — seen directly by a vision model (or OCR'd first for text-only models).
  • Documents (PDF, DOCX, TXT…) — saved to Briglia's landing zone; Briglia reads them deliberately with its file tools, so a big PDF doesn't flood the context.
  • Audio files and round video notes (since CLI 0.2.52) — an .m4a or .mp3 sent from Files arrives as a file, like a document, and is transcribed only if you ask. Voice notes recorded in Telegram are unchanged and still transcribed automatically. Telegram lets bots download files up to 20 MB; for anything larger Briglia tells you, so send a link or a path instead.

Since CLI 0.2.52, a message Briglia can't read (a sticker, location, contact, poll…) gets a short visible reply instead of being ignored silently. Images in formats providers don't accept (BMP, TIFF, HEIC…) are converted before they're shown to the model, or refused with a note if they can't be read; and if a provider still rejects an image as invalid, Briglia drops that image from the conversation, saves that, and retries once instead of failing every later message.

Since CLI 0.2.53, photos keep their orientation: when Briglia converts an image or shrinks a large photo (for example a full-size iPhone portrait shot), it applies the photo's rotation or mirroring first, so the model no longer sees it sideways.

Writing while Briglia works

Since CLI 0.2.38 you don't have to wait for a long job to finish before Briglia listens.

  • Your message is read within about 3 seconds. If Briglia is waiting on a long command or on a general, custom or Web research subagent, that work moves to the background and keeps running, and Briglia reads what you wrote straight away. Anything it had planned before seeing your message is reconsidered rather than run blindly.
  • Background results arrive once. When the moved work finishes, its result reaches Briglia once, even across a restart or a crash. A job that died in a crash is reported once as lost.
  • Results can land inside the running task (since CLI 0.2.41). If a background command or subagent finishes while Briglia is still working, its result arrives as part of the output of the tool call it is running, so it can use it straight away instead of waiting for the task to end. It is ordinary tool output: existing limits and normal compaction apply. When Briglia is idle, a finished job wakes it as before. Emails, reminders and watchers are unchanged and still arrive only when it is idle. Jobs you stopped with /stop never deliver mid-task. To turn this off, set BRIGLIA_MIDTURN_BACKGROUND_RESULTS=0 in Briglia's environment.
  • A silent 👀 reaction on your message means it was received while Briglia was busy. There is no automatic “got it” text.
  • /status lists the background jobs; /stop stops everything Briglia started, including background commands, subagents and results still waiting, and they don't restart later.
  • Browser (Browse) agents and image generation still finish before Briglia replies.
  • Generated images are sent on purpose. Briglia sees each image it makes and sends it to you explicitly, instead of attaching every image automatically at the end of a reply.
  • Spend limits stay honest. If you set a daily or monthly limit with /spend and the cost of some work can't be known (for example a subagent lost in a crash, or an unreadable spend file), paid work pauses and says why. /spend accept-unknown accepts only those unknown amounts as $0 and keeps every known charge. Without a limit it is only reported.

The command menu

Type / in Telegram to see the short menu, in this order: /status, /provider, /model, /effort, /prune, /upgrade, /commands, /stop. /commands lists the full standard set — models, system, account. The same commands work in the terminal chat; the two surfaces share one command set. Full list in Commands.

Tap instead of type

Since CLI 0.2.12, /provider, /model and /effort sent without an argument answer with buttons. /provider shows one button per configured provider, with the active one marked. /model shows the curated OpenCode Go catalog or, on the ChatGPT subscription, GPT-6.1 Sol, GPT-6 Sol, Luna and Astra and GPT-5.6 Luna, Terra and Sol, plus a “Type a model name…” button; other providers (OpenRouter, OpenAI API, custom, local) keep typed ids. /effort shows the levels the current model accepts, plus “off” where it applies. A tap is checked against the paired chat and run through the same command as the typed form, so the usual rules apply: a tap while a turn is running only shows an alert, and an old menu left over from a previous provider is refused rather than applied to the wrong profile. After a tap the menu message is frozen with the choice. Typed forms (/model kimi-k3) keep working, and the terminal, the Ubuntu Touch app and WhatsApp keep their text lists.

Briglia writes first

When a reminder fires, a watcher reports, a background job finishes or an email arrives, Briglia messages you on Telegram without being asked — that is the point of an always-on setup. Long-running work can also send you interim notes mid-task.

Good to know

  • /upgrade and /restart refuse while a turn is running — send /stop first.
  • Briglia acknowledges each Telegram update only after it is durably stored, so a crash or power failure doesn't lose your message — at worst you see it processed twice.
  • Privacy mode: /hide stops Briglia from echoing message bodies to the local chat surfaces; /show reverts.