Skip to main content
This page takes you from nothing to a working chat session. You need Python 3.12+ and an API key from a model provider. openrouter.ai/keys is the default and gives you access to most models with one key.
1

Install Ziro

On Windows:
The script needs only Python 3.11.9 or newer. It creates an isolated environment and puts ziro on your PATH. See Installation for what it does and how to configure it.
Either path installs the runtime and the local guardrail backends (Presidio PII detection and Llama Guard content safety). Neither downloads the models those backends use. That is the optional step below.
Optional but recommended before your first launch: pre-cache the local models so the first run does not stall on downloads.
See Installation for exactly what this fetches.
2

Run ziro

With no arguments, ziro paints the terminal UI immediately and walks you through first-run setup before starting the engine.
3

Complete the setup wizard

The wizard runs as a full-screen page in the TUI. It asks for the following, in order:Press Esc to skip an optional section. Once the key is saved you can press Ctrl+A to skip everything remaining and go straight to chat.The wizard writes to ~/.ziro/.env. Re-open it at any time with ziro setup, the fields come back prefilled.
You only see the wizard when no API key is configured. On later launches Ziro goes straight to the pickers.
4

Work through the pickers

After the wizard, Ziro asks only for what it cannot resolve on its own. Each step is skipped when the answer is obvious:A user keeps its own memories and threads. A flavour scopes which agents and threads you see and which memory store they share. The bundled set is chat, engineering, research, or safe. A thread is one conversation, resumable later. An agent is the persona and tool policy that runs the turn.The thread picker always offers a + New thread row. Pick it, or pick an existing thread to resume where you left off.
5

Send your first message

Type into the input box and press Enter. The turn streams live: reasoning first (collapsing to a one-line summary when it finishes), then any tool calls inline, then the answer rendered as Markdown.You can type before the engine has finished building. Anything you submit early is queued and runs in order once the runtime is ready. The footer shows starting…, then warming model, then connecting MCP, then clears.Try asking the agent to remember something about you, then start a new thread and ask about it, because long-term memory persists per user and flavour, independent of the thread.
6

Try a few slash commands

Slash commands are dispatched in the driver loop before the model runs. They cost no tokens and never touch the transcript.A few more worth knowing early: /thread lists and resumes conversations, /settings re-opens the settings screen, /skills shows what the agent can reach, /stop aborts the turn in flight, and /quit exits.The full list is on Slash commands.

Try it headless

The same runtime answers a single prompt and exits, which suits scripts, cron jobs, and driving Ziro from another program. Headless runs never open the wizard or the pickers; they resolve --user (or the last remembered user) and fail fast with a clear message if nothing is configured.
That prints the reply text and nothing else. Add --json for a machine-readable line instead:
chat_once is the dedicated single-shot entry point with the same JSON contract:
Pin a specific agent for the run:
Headless runs are fail-closed on human-in-the-loop gates. A tool call that would raise an approval prompt is auto-denied instead of hanging, so a scripted run never blocks waiting for a human. Plan permissions accordingly. See Permissions.

Useful launch flags

The full flag surface is on the CLI reference.

Next steps

Installation

Dependency groups, storage modes, and where Ziro keeps its state.

Architecture

What actually happens between your message and the reply.

Configuration

The per-agent policy files and how to change behaviour.