Model Providers
Settings → Model Providers manages the API provider credentials agents use.
Subtitle: "Manage API provider credentials for agents."
Croli ships with no providers. There is no ready-made OpenAI or Anthropic option on this screen; every entry is one you created yourself — name, URL and key are all yours to fill in.
The list
At the top is an agent filter dropdown (All, or one agent at a time), plus an Add Provider button.
Each row shows the name, the API URL in a monospace font, and a badge for the agent it belongs to, with edit (pencil) and delete (red bin) on the right.
With none configured it shows "No model providers configured yet."
Deleting has a confirmation dialog. If the provider is still bound to an agent, the delete is refused:
{agents} is currently using this provider. Please unlink before deleting.
Only three agents can use it
This is the most important constraint on the screen: the only agents you can bind are Claude Code, Codex and Gemini CLI.
Other agents are not configured here. Grok and DeepSeek Harness use API keys too, but they read their endpoint and key from their own settings panels — putting them here would get you a binding that does nothing, so the option simply is not offered. The remaining CLIs each have their own authentication method; see Agents.
The add / edit form
Add and edit share one form, three sections, in order:
1. Agent
Pick one of the three above. It cannot be changed after creation (the form says it outright: "Agent type cannot be changed after creation."). To switch agents, delete it and build it again.
2. Endpoint
| Field | Notes |
|---|---|
| Name | For your own recognition, e.g. "Company gateway" |
| API URL | For example https://api.openai.com/v1 |
| API Key | Password field. Leaving it empty while editing keeps the current value |
All three are required (the key may be left empty when editing).
3. Models
What this section holds depends on which agent you picked:
-
Codex — an editable model list (several candidate models can be configured).
-
Gemini CLI — a single text field, one default model, for example
gemini-3-pro-preview. The form notes "This agent takes a single default model." -
Claude Code — a two-column role table, one model ID per role:
Role Example Main model claude-sonnet-5Reasoning model (thinking) claude-opus-5Haiku default claude-haiku-5-5Sonnet default claude-sonnet-5Opus default claude-opus-5Fable default claude-fable-5You can also add one Custom Model ID (for example
my-gateway/claude-opus-5, with its own display name and description) for hooking up a gateway of your own.
Worth knowing
- When you edit an existing provider while a session is using it, a notice appears: running sessions need to reconnect before they pick up the new configuration. Creating a new one does not show it.
- Providers and their keys are inside the scope of configuration sync — API keys included. The keys are plaintext in the exported JSON, so do not forward it around casually.
- The other end of the binding is on the Agents page: each agent's Auth Mode has a Model Provider tier, and only after picking it does the agent read what you configured here. When an agent has no provider configured at all, that screen points you back to this one.