Briglia CLI
GitHub
Reference

Commands

Two surfaces: briglia subcommands in your shell, and /commands inside a conversation. The chat commands are one shared set — everything that works on Telegram works in the terminal, and vice versa.

Shell: briglia …

CommandWhat it does
briglia · briglia chatInteractive chat with Briglia (the default command).
briglia menuSetup and settings in your browser (English or Italian): pick ChatGPT subscription, OpenCode Go, OpenRouter or your own named servers (local or online); connect Telegram (the chat is detected when you message your bot); add keys, email, permissions and tools. Afterwards it is the hub for your AI lanes (a “Briglia is using” selector to switch; adding a lane doesn’t switch), model and effort, and has a Start/Stop switch. Works while Briglia is running.
briglia setupSetup wizard: providers, keys, permissions, channels. Re-run any single section later.
briglia daemonHeadless mode: no local chat, messaging channels (Telegram) only. One conversation-owning instance at a time — briglia and briglia daemon share state, the second refuses to start.
briglia doctor [--online]Check configuration, permissions and toolchain; --online also probes the configured services. Exit code 1 if problems were found.
briglia upgrade [-y] · briglia updateUpdate to the latest signed release; -y skips the confirmation.
briglia service install [--no-keepawake] | status | uninstallLinux: run Briglia as an always-on systemd user service (auto-start at boot via linger; keep-awake support on Ubuntu Touch). Bare briglia service = status.
briglia toolchain status | install [--pandoc] [--libreoffice] | upgrade | removeLinux: media/document tools — on Ubuntu Touch in an OTA-safe userdata prefix, no root.
briglia subscription [login|status|select|cancel|logout|models]Connect your own ChatGPT subscription (device-code sign-in; --browser for a local callback); API credentials and billing stay separate.
briglia cache-stats [--json]Recent Responses token/cache statistics (not subscription credits).
briglia trigger <watcher-id> [payload…]Post an event to an external-trigger watcher created by Briglia. Works even when Briglia isn't running.
briglia media-selftestVerify the PDF/image pipeline (poppler/ImageMagick on Linux).
briglia --version · briglia --helpVersion and help.

Hidden but present: briglia setup-api (JSON setup surface used by the Ubuntu Touch app) and briglia bundle-check (used by the updater). Internal __… commands are self-tests.

Chat: /commands

menu marks the eight commands shown in Telegram's “/” menu (since CLI 0.2.12, in this order: /status, /provider, /model, /effort, /prune, /upgrade, /commands, /stop); /commands prints the full standard set below. Typed arguments keep working everywhere; the buttons are a Telegram convenience.

Control

/stop menuStop the current work immediately, including everything Briglia moved to the background (commands, subagents, results still waiting); stopped work does not restart later. Since CLI 0.2.50 the reply is honest: if something is still winding down after a short wait (for example a helper process, or memory archiving, which is never interrupted), it says what, with how long it has been running, and sends one “✅ The stopped request has ended” when it really has. A repeated /stop answers “Already stopping”. The terminal and the phone app's Stop button now show the reply too
/status menuShow what Briglia is doing right now, including background jobs (since CLI 0.2.38), a stopped request that is still finishing, and a memory archive running in the background (since CLI 0.2.50). Since CLI 0.2.52 it no longer lists unknown charges — those stay in /spend and briglia doctor; only when a spending limit is set and paid work is paused does it show one line pointing to /spend
/prune [nosnapshot] menuFree up Briglia's working memory. Since 0.2.13 a full-text snapshot of the conversation is saved first (see Storage & privacy); nosnapshot forces one prune without it, for a full disk. The report counts the new summary (0.2.14)
/continueShow the rest of a long reply

Models

/model [id] menuShow or switch the main model — on Telegram, tap a button for the OpenCode Go catalog or the ChatGPT models (GPT-6.1 Sol; GPT-6 Sol, Luna, Astra; GPT-5.6 Luna, Terra, Sol); other providers take a typed id
/provider [name] menuShow or switch the LLM provider — on Telegram, one button per configured provider, and one per named server (since CLI 0.2.37; /provider <name> is case-insensitive). Switching to OpenCode Go or a server with no OpenAI key saved still switches, with a warning that web page reading will fail until you add the key
/effort [level] menuShow or set the reasoning effort — on Telegram, buttons for the levels the current model accepts
/websearch [name]Show or switch the web page-reading backend (openai, opencode, openrouter): page extraction and web_fetch compression. The research itself runs on your main model (since CLI 0.2.37). While /provider is chatgpt, page reading follows the subscription; while it is openrouter, page reading uses GPT-6 Luna through OpenRouter (OpenAI or Azure host). This choice applies on the other providers
/subagentmodelsShow or set the cheap subagent model lanes
/orprovider [slug|off]OpenRouter only (CLI 0.2.30): pin the main agent's requests to one upstream host. No argument lists the hosts OpenRouter serves your current model from (name, price per million tokens, cache-read price, uptime) with tap buttons on Telegram; a base slug such as deepinfra covers every endpoint of that host, a full tag such as deepinfra/turbo targets one variant. A pin is hard: requests fail with OpenRouter's error instead of hopping when the host is unavailable. Validated against the live host list; /model onto a model the pinned host doesn't serve releases the pin and says so. Scope: the main model — the main agent and every subagent; while a pin is set the cheap subagent lanes (/subagentmodels) are bypassed so subagents run the main model on the pinned host, and they return when the pin is released. Web research keeps its own routing. /orprovider off returns to OpenRouter's automatic (sticky-by-session) routing.
/subagents [on|off]Turn the Agent delegation tools on or off
/websubagent [on|off]Turn the Web researcher subagent on or off (default on since CLI 0.2.29, off restores the legacy web_search/web_research_sweep tools byte for byte; needs subagents on and web search configured; while on, ordinary subagents delegate their web research to it instead of using the legacy web tools)
/subscription [login|status|cancel|logout]Connect, inspect or disconnect your ChatGPT subscription (device-code sign-in), then /provider chatgpt
/cachestatsRecent token/cache statistics for the ChatGPT and OpenAI Responses providers (statistics, not credits)

System

/upgrade menuUpdate Briglia to the latest release
/restartRestart Briglia (reloads mcp.json and skills)
/archiveinline [on|off]Since CLI 0.2.50 memory archiving runs in the background by default: Briglia keeps replying while the oldest messages are summarised, and the new summary replaces them at the start of the next turn. on restores the old behaviour — wait for the archive before replying — for a local model server that handles one request at a time; off returns to the background default
/commands menuList standard Briglia commands

Account

/setname [name]Set or change your name (asks for confirmation)
/deleteuserdataErase all memory and user data (asks for confirmation)
/exportmind [lite]Save a memory backup (.mind) to this computer (add 'lite' to skip files)
/importmind [path]Restore a memory backup (asks for confirmation)
/resumewatcher [id]Review and re-arm watchers quarantined by a memory import
/switchbot [token]Move Briglia to a different Telegram bot (guided, asks for confirmation)
/rotateaffinityPresent a new session identity to OpenCode/OpenRouter from the next request (no data change)

Terminal only

/helpShow the command list
/attach <path> [message]Send a file, with optional text
/quit · /exitLeave the chat (also Ctrl-C)

Power commands

Working but kept out of the table: /spend (shows today's and this month's spend with each limit; /spend turn|daily|monthly <usd|off> sets or removes a per-turn tool cap or a daily/monthly limit — all off by default; /more1, /more5, /more10 raise a reached daily/monthly limit for today/this month only; since CLI 0.2.38, when a limit is set and some cost can't be known, paid work pauses until you repair the spend file or send /spend accept-unknown, which counts only those unknown amounts as $0 and keeps every known charge — /more can't lift that pause; since CLI 0.2.42 an OpenRouter page-reading call that was cut at its time limit or whose connection dropped is also an unknown charge, and since CLI 0.2.44 the limit is 2 minutes on every backend and the same applies to page-reading calls on your OpenAI API key), /hide and /show (privacy mode for local surfaces), /transcribe_openai. Aliases: /pulisci = /prune, /riavvia = /restart, /comandi = /commands, /continua = /continue.

Two-step commands

/setname <name> then /setname confirm; /importmind <path> then /importmind confirm; /deleteuserdata and /switchbot ask for a confirmation too. /upgrade and /restart refuse while a turn is running — /stop first.