provider name, the env vars the
harness reads (its serving-env contract), and the two permutations you’ll
actually use: direct (your existing login / API key) and a custom
endpoint (a proxy, Bedrock/Vertex, or an OpenAI-compatible gateway), plus how
to pick the model.
These are recipes. For how the pieces work — the abstract-vs-raw upstream
model, harness-portable rendering, secrets, the fingerprint behavior, and every
other agent knob — see Configuring an Agent.
The authoritative field list is the Config Reference.
Two things hold for every recipe:
- Direct usually needs no upstream block at all. If the harness already finds
its credentials in the environment (your normal login or
*_API_KEY), just setproviderand go — Gas City passes the ambient environment through. - Secrets are
$VARrefs, expanded from the controller’s environment at launch — never inlined intocity.toml.
At a glance
”—” under base URL means the harness has no standard base-URL env var: for a
custom endpoint, supply it through the upstream’s raw
env
block. Model lists below are the built-in choices; override or extend a harness’s
options_schema to add your own.
Native harnesses
These ship a serving-env binding, so an abstract upstream (base_url /
api_key / auth_token) renders onto the harness’s env vars automatically — the
same upstream works across harnesses.
Claude Code — provider = "claude"
Reads ANTHROPIC_BASE_URL and ANTHROPIC_API_KEY (or ANTHROPIC_AUTH_TOKEN for
bearer-token gateways).
Codex CLI — provider = "codex"
Reads OPENAI_BASE_URL and OPENAI_API_KEY.
model or effort set, codex runs on the model and reasoning
effort from your own Codex configuration; Gas City passes no --model or
model_reasoning_effort flag. Which models are available depends on how Codex
is logged in (a ChatGPT-account login serves a different set than an API key),
so pin a model only when you know the account can use it.
Gemini CLI — provider = "gemini"
Reads GOOGLE_GEMINI_BASE_URL and GEMINI_API_KEY.
Kimi Code — provider = "kimi"
Reads KIMI_BASE_URL and KIMI_API_KEY.
Grok — provider = "grok"
Reads XAI_API_KEY (key only — no standard base-URL var).
Cursor Agent — provider = "cursor"
Reads CURSOR_API_KEY (cursor-agent).
Kiro — provider = "kiro"
Reads KIRO_API_KEY (kiro-cli; no model option).
GitHub Copilot — provider = "copilot"
Default path uses your GitHub account bearer (COPILOT_GITHUB_TOKEN). For a
custom model provider, set COPILOT_PROVIDER_BASE_URL + COPILOT_PROVIDER_API_KEY.
Sourcegraph AMP — provider = "amp"
Reads AMP_URL and AMP_API_KEY.
OpenCode and gateways
OpenCode is a multi-provider harness — one CLI fronting many model providers, where the credential env var is provider-specific. It has no single serving-env binding, so the upstream names its own target with the per-field*_env override (see the
gateway section
of the main guide). Gas City ships ready-made groq and cerebras presets on
top of it.
Groq — provider = "groq"
Cerebras — provider = "cerebras"
OpenCode (any provider) — provider = "opencode"
Login-based harnesses
These authenticate through their own login/device flow and read no Gas City upstream env. Setprovider and run their normal login once on the box; no
[upstreams] block is needed.
model and effort options (low · medium ·
high) and plan / accept-edits permission modes, mapped to agy’s
--model, --effort, and --mode flags. Model values are agy’s stable
slugs (agy models lists them):
model and effort need agy 1.1.10 or newer — older versions silently
ignore both flags at launch and run on the persisted default model.env block
with whatever vars its CLI documents — the same escape hatch shown for Grok
above.
Next steps
- Other agent knobs (prompt, model permission modes, transport, runtime, pools, lifecycle): Configuring an Agent.
- Ship a harness as a reusable preset — a provider and its
upstream_envbinding (a pack may also declare named[upstreams]endpoint presets as a base the importing city inherits; a city’s or fragment’s own[upstreams]override the pack-provided ones): Understanding Packs · Shareable Packs. - Exact fields and types: Config Reference.