Briglia CLI
GitHub
Guide

First setup

briglia setup is a resumable wizard of eight steps (nine on Linux), about five minutes. Every key is validated live as you paste it and stored in ~/.config/briglia/secrets.json with owner-only permissions.

briglia setup

Interrupted? Run it again and it offers to resume from where you stopped. On a configured install it opens a section menu instead, so you can redo any single step (or “Show current configuration”). Pressing Enter on a question keeps the saved value.

1 · Main agent model

Briglia's main brain. You can configure several providers and hop between them any time with /provider in chat. Options:

  • OpenRouter (recommended) — pay-per-token, any model id; the default is deepseek/deepseek-v4.1-flash (DeepSeek V4.1 Flash), and a new OpenRouter setup on it is pinned to the Together host (change it later with /orprovider). The wizard asks whether the model can see images (default: yes). An existing install keeps its provider and pin.
  • OpenCode Go — one subscription key, a curated catalogue (default: GLM 5.3 Flash, vision-capable). Get a key at opencode.ai.
  • Custom OpenAI-compatible endpoint — base URL + model id + API key.
  • Local server — vLLM, Ollama, LM Studio; no key, default http://localhost:1234/v1.

Pick a text-only model and Briglia will use the OCR preprocessor (your OpenAI key, or OpenRouter when that is your provider and no OpenAI key is set) for images and scanned PDFs. Full catalogue in Providers & models.

2 · OpenAI key

The OpenAI key powers web page reading (extraction and web_fetch compression), voice-message transcription, image generation, and OCR of scanned documents. Research planning and answers run on your main model, not on this key. On OpenCode Go, a custom endpoint or a local server, treat it as required — briglia doctor flags a missing one. On OpenRouter it's optional: without it, page reading, voice, images and OCR go through your OpenRouter key; with it, OpenAI is used for them instead. On the ChatGPT subscription, page reading uses the subscription and the key is needed only for voice and images.

3 · Serper key (web search)

Gives Briglia Google search. Free tier of 2,500 queries at serper.dev.

4 · Jina key (page reading)

Lets Briglia read web pages cleanly. Free tier at jina.ai/reader.

5 · Your name

What Briglia should call you. (The assistant's own default name is Bree — you can pick another in this step; change your name later with /setname.)

6 · Permissions

  • macOS: Briglia needs Full Disk Access, granted to the terminal app you run it from. The wizard opens the right System Settings pane and re-checks when you press Enter; macOS makes you relaunch the terminal, and briglia setup resumes from this step. It also warns if the system (not just the display) is allowed to sleep — an unattended Briglia needs the machine awake (caffeinate -is briglia daemon is one option).
  • Linux: no Full Disk Access concept. The wizard checks automatic suspend and offers to disable it (GNOME gsettings, no sudo) or to mask the systemd sleep targets (asks for sudo).
  • Ubuntu Touch: deferred to the last step — the phone's keep-awake.

7 · Toolchain & email (optional)

Media tools — poppler, ImageMagick, ffmpeg — are checked; on Linux the wizard offers the package-manager install command (on Ubuntu Touch the trio installs automatically into your userdata area). LibreOffice (~600 MB) is offered separately for DOCX/XLSX rendering. See Media toolchain.

Email & calendar — None (default), AgentMail (a dedicated inbox for Briglia, includes a calendar tool) or Google Workspace (your Gmail/Calendar via the gws CLI, requires your own OAuth client). See Email & calendar.

8 · Telegram (optional)

Message @BotFather → /newbot → copy the token; message @userinfobot for your numeric chat ID. The token is probed live. Briglia answers only that one chat ID and ignores everyone else. See Telegram.

9 · Always-on service (Linux only)

Runs briglia daemon as a systemd user service: starts at boot, restarts after crashes, keeps working after you log out. Ideal for a Raspberry Pi. It needs Telegram (the daemon has no local chat). On Ubuntu Touch it also offers the keep-awake unit (asks for the phone passcode). See Always-on service.

Nothing half-saved

If a write to secrets.json ever fails, the wizard aborts and tells you nothing from that run was saved. Existing keys are never erased by a failed save.

Afterwards

  • briglia doctor — configuration, permissions and toolchain health; briglia doctor --online also probes every service.
  • briglia — chat. /quit to leave.