.env chain that the setup wizard writes to
~/.ziro/.env, so you rarely set them by hand.
Provider credentials and defaults: OPENROUTER_API_KEY, OPENROUTER_MODEL,
OPENROUTER_BASE_URL, OPENROUTER_HEADERS; the matching ANTHROPIC_* and
OPENAI_* pairs; and <LABEL>_API_KEY for a custom provider label registered in
custom_providers.json in the current home (~/.ziro, or $ZIRO_HOME when set).
Model tiers: <PROVIDER>_<TIER>_MODEL for the planning, execution, and
fast_execution roles (for example OPENROUTER_EXECUTION_MODEL). Each collapses
to <PROVIDER>_MODEL when unset, and a ${EXECUTION_MODEL}-style token resolves
against whichever provider is active at build time.
Cross-provider switches: ZIRO_LLM_PROVIDER (default openrouter; an
unknown value degrades to it rather than crashing), ZIRO_REASONING_EFFORT,
ZIRO_MAX_RETRIES, and ZIRO_RETRY_BASE_DELAY. Each has an OPENROUTER_*
back-compat fallback.
Runtime and storage: DATABASE_URL selects prod mode (Postgres plus PGVector)
over dev mode (SQLite plus FAISS); ZIRO_STRICT_SECURITY forces dangerous plugin
grants inert; ZIRO_EMBEDDINGS_OFFLINE and HF_HUB_OFFLINE control Hugging Face
network checks at startup; ZIRO_HOME relocates the user config root; and
ZIRO_PYPI_HOST sets the release index ziro upgrade pulls from. Tracing uses the
Langfuse keys LANGFUSE_PUBLIC_KEY, LANGFUSE_SECRET_KEY, and LANGFUSE_HOST.
Plugins: ZIRO_PLUGIN_DIRS lists plugin folders or .zip files (at most 16, separated by
: or ; on Windows) that load for one session, exactly like --plugin-dir. Entries must be
absolute (or start with ~). It is read from the real process environment only: a .env file
cannot set it. It is not passed to plugin hooks, shell commands or MCP servers.
This page is in progress. See the providers guide for how the
provider and model resolve as one coupled pair.
Providers
Built-in providers, custom endpoints, and model tiers.
Installation
Where the wizard writes these values.