ziro, which is the same entry point as
python -m app.main. Everything else is a module you run with python -m.
The main entry point
Subcommands
ziro setup and ziro flavour strip their subcommand and keep parsing the normal
flags, so ziro setup --theme nord works.Flags
All of these apply toziro and python -m app.main equally.
string
User ID. Scopes long-term memory. Omit it to reuse the last-used user, or to get
the first-run picker.
string
Agent ID to run. Omit it to pick interactively. An agent that is disabled, or that
falls outside the active flavour, is rejected or corrected to the flavour’s
default agent.
string
Flavour to launch. Scopes which agents are visible, which threads exist, and which
shared memory is used. Omit it to pick interactively when several are configured,
or to resume the last one. Bundled flavours are
chat, engineering, research,
and safe.string
Thread ID to resume a previous session. Alias:
--resume.boolean
default:"false"
Force the plain rich REPL instead of the Textual TUI.
boolean
default:"false"
Enable push-to-talk voice I/O. Requires the agent’s
voice section (was
voice_policy.yaml) to have enabled: true. Implies the rich REPL.string
Headless: run one turn and print the reply, then exit.
-p "message" sends that
message; a bare -p reads the message from stdin.boolean
default:"false"
With
-p, emit the chat_once JSON line instead of plain text.path
Path to an image to attach to the first message. Repeatable. A text-only model
receives a graceful notice instead of the image.
string
UI theme name for this launch, overriding the saved preference. Bundled themes are
ziro (the default), carbon, nord, and gruvbox.string
Seed the reasoning effort for this session:
high, medium, low, or off.
Change it live with /think.Which front end you get
The entry point picks one of three front ends. The rule is short:1
-p is present
Run exactly one turn headless, print the reply (or the JSON line with
--json), and exit. Textual is never imported. The wizard and pickers never
run: the user is resolved from --user or the last-used user, and a missing
user or missing API key fails fast to stderr.2
A TTY with Textual available
Launch the Textual TUI. The shell paints in roughly 1.6 seconds and is usable
immediately; anything you type before the engine finishes building is queued
and runs in order once it is ready.
3
Anything else
Fall back to the rich REPL. This is also what
--no-tui and --voice force,
and what you get when Textual is not installed or stdout is not a terminal.The TUI is import-guarded. No Textual, or no TTY, degrades to the REPL rather than
failing.
Examples
Other entry points
Supporting commands
Dev and prod modes
The runtime mode is selected by one environment variable, not a flag.
See environment variables for the full list.
Next steps
Slash commands
Everything you can do once a session is running.
Headless runs
The
-p and --json contracts in detail.Environment
Keys, providers, model tiers, and the runtime switches.