Configure LLM providers
Add a provider's credentials, then point your tiers at its models.
This guide gets your agents running by configuring a model provider. There are two steps, in order: store the provider's credentials, then assign its models to the tiers. Both live under Settings, and both require admin.
Add the provider's credentials
Open Settings → Secrets. Under Configure a provider, pick your provider from the dropdown (or choose Custom… for one not listed). The form shows the fields that provider needs — typically an API key, sometimes a base URL or resource name. Fill them in and choose Save provider.
Saved provider credentials are stored encrypted; their values are never shown again, only listed as set. See Store a secret for more on the secrets store.
Assign models to tiers
Open Settings → LLM. You see the three tiers — quick, standard, and complex —
each an ordered list of provider rows.
For each tier, choose a configured provider, then click into the model field. A provider only becomes selectable once its credentials are saved; unconfigured providers are disabled with a "configure first" note.
The model field is a combobox: focusing it loads a dropdown of suggested model ids for
that provider, but you can still type any custom id it doesn't list. Suggestions come
from the LiteLLM catalog, except for OpenAI-compatible, which — when its Base
URL is configured — queries the proxy's own GET /models endpoint so you pick from
what it actually has deployed. Azure Foundry has no suggestions (deployment names
can't be discovered); type the deployment name directly, for example claude-sonnet-4-6.
The order of rows in a tier is its fallback chain — the top provider is tried first, and the runtime falls through to the next on failure. Add a second provider to a tier with + Add provider to give it a backup.
When you move focus off a filled-in model field, the app resolves its LiteLLM spec and shows it as a row of badges — cost per million tokens, context window, and supported capabilities (tools, vision, cache, reasoning). If nothing matches, the row shows "No LiteLLM match — cost stays unpriced" instead; a Refresh button re-fetches a resolved spec.
Each tier needs at least one provider with a model. Choose Save; the LLM service
reloads with the new configuration, written to soul/llm.config.yaml.
Verify
After saving you see a "Saved · LLM service reloaded." confirmation. Your agents now run against the providers you configured.