Models
Switch the active provider and model from the dashboard.
Web UI → Models shows the model currently driving agents and every other provider you could switch to — and switching is a click, not a config edit.
Active model

The top card (GET /api/model/info) shows the model name, provider, and
effective context length currently in use. This is resolved the same way
every runtime resolves it — from ~/.aios/config.yaml via the shared
provider-resolution logic — so what you see here is exactly what agents
are using, not a cached guess.
Switching providers
Below it, one card per known provider (GET /api/model/options), each
showing:
- its model list (or default model if none are enumerated)
- an ACTIVE badge on the current one
- KEY CONFIGURED / NO KEY NEEDED / NO KEY (
ENV_VAR_NAME) — whether that provider’s API key is present in.env
Providers without a configured key show “add <ENV_VAR> to .env
first” instead of a switch button — add the key on the
Credentials view first.
You’ll be prompted for a model name, pre-filled with that provider’s default. Leave it blank to use the provider’s default model.
The switch calls PUT /api/model/active {provider, model}, which
merges model.provider / model.default into config.yaml
(preserving every other key, with a config.yaml.bak backup) and
returns restart_required: true. The dashboard shows an alert telling
you to restart the gateway/dashboard — both read config once at
startup, so the switch isn’t live until then.
Re-serializing config.yaml through the switcher drops any comments in
the file, the same limitation the raw YAML editor on the
Config page doesn’t have. Acceptable here since
config.yaml is machine-scaffolded rather than hand-authored with
commentary.
Effect on the harness
Switching providers doesn’t just change which model answers directly —
the harness’s cheap/frontier tiers realign to the new provider
automatically (e.g. anthropic → Haiku/Opus, deepseek → flash/pro). See
Agents and Harness for how tier routing
works.
CLI / TUI alternative
The same switch is available without the dashboard: the TUI’s model
picker, or hand-editing model.provider / model.default in
config.yaml directly. Functionally identical — the dashboard is just the
faster path for most changes.