Providers and models
The Models and providers tab under Settings decides which intelligence each role works with and what it costs. Here you set up providers, declare their models with their prices and assign one to each role.
A provider is whoever serves the model: OpenRouter, Anthropic, an Ollama on your network, and so on. A model is a specific reference from that provider, with its input and output price per million tokens. Without models, a provider cannot be assigned to anyone.
The header and the note at the top
Section titled “The header and the note at the top”| Element | What it does |
|---|---|
| Title | “Providers and models”. |
| “Provider” button | Opens the new provider form. |
| “Model” button | Opens the new model form. It is disabled while there is no provider, because a model without a provider does not exist. |
| Note | Explains that each role can talk to a different provider, that the key is stored encrypted and never shown again, and which is the installation’s default model. |
The note names the default model by its technical identifier (for example deepseek-v4.1-flash).
That is the one any role uses when you have not assigned it anything.
“Who uses what”
Section titled ““Who uses what””This is the first table on the page. It has one row per active role, plus one for “Adrián (CEO)”. Each row carries the job title on the left and a dropdown on the right with these options:
| Option | What it means |
|---|---|
| “Default · model-name” | The role uses the installation’s model. |
| “Provider · Label” | The role uses that specific model. |
There is no save button: picking another option saves on the spot and the screen says “Role model updated. It applies from the next assignment”.
The same change can be made from the role’s profile, in the “Model” field of the Identity tab. Both routes write the same thing.
“Providers”
Section titled ““Providers””Each row shows:
| Part | What it is |
|---|---|
| Type tag | “OpenAI”, “OpenRouter”, “Ollama”, “Anthropic (Claude)”… |
| Name | The name you gave the provider. |
| Detail | Its base address (or “no URL”), whether it has a stored key (“key saved” or “no key”) and how many models it has. |
| “Edit” button | Opens the form with what is already there. |
| Bin | Deletes the provider, without asking for confirmation. |
If there are none: “None yet. Add the first one with its URL and its key; then its models”.
A provider cannot be deleted if any role uses one of its models. The server answers “cannot delete: N role(s) use a model from this provider. Change their model first” and the screen shows it in red.
“Models”
Section titled ““Models””Each row shows:
| Part | What it is |
|---|---|
| Display name | The model’s label, followed by its technical reference in a monospaced font. |
| Detail | “Provider · input X €/M · output Y €/M”, and the context tokens if you declared them. |
| Test result | If you have tested the model, “answers in N ms · “answer”” appears below in green, or the error in red. |
| “Test” button | Makes a real, minimal call to the provider. While it waits, the icon spins and the button is disabled. |
| “Edit” button | Opens the form with the model’s data. |
| Bin | Deletes the model, without asking for confirmation. |
If there are no models: “No models: a provider without models cannot be assigned to anyone”.
A model cannot be deleted if it is assigned to any role: “cannot delete: N scope(s) use this model”. Change the assignment first.
Prices are shown with two to four decimals and the “€/M” suffix. A price of zero is shown as “no price”, not as “€0.00/M”.
Provider form
Section titled “Provider form”It opens with “Provider” or with “Edit”. The title is “New provider” or “Edit provider”, and the explanation warns that the key travels encrypted, is never shown again and, if you edit and leave it empty, the previous one is kept.
| Field | What it is | Details |
|---|---|---|
| Name | What you call this provider. | Required. Placeholder examples: “OpenRouter, Anthropic, my Ollama…”. |
| Type | The API family it speaks. | See the type table. Switching to OpenRouter fills in its URL; switching to Ollama, http://host.docker.internal:11434/v1. |
| Base URL | The service’s address. | Required. It is disabled for OpenAI, Anthropic and Google, which do not need it. |
| Key | The API key. | Password field. On a new provider, it is the one stored; when editing, empty means “do not change it”. |
The “Save” button is disabled while saving. The server requires at least a name and a base URL: if either is missing, the error says “Enter at least a name and the provider’s base address”.
Available types:
| Type | Display name |
|---|---|
openai |
OpenAI |
openai_compatible |
OpenAI-compatible |
openrouter |
OpenRouter |
ollama |
Ollama |
anthropic |
Anthropic (Claude) |
google |
Google (Gemini) |
azure |
Azure OpenAI |
deepseek |
DeepSeek |
groq |
Groq |
together |
Together |
vllm |
vLLM (local) |
lmstudio |
LM Studio (local) |
Model form
Section titled “Model form”It opens with “Model” or with “Edit”. The title is “New model” or “Edit model”. The explanation: the reference is the identifier that travels to the provider, and the prices, per million tokens, are used to measure spending.
| Field | What it is | Details |
|---|---|---|
| Provider | Who owns the model. | Required. The first option is “Choose a provider”. |
| Reference | The technical identifier sent to the provider. | Required. Placeholder example: claude-sonnet-4-5. |
| Display name | The label you will see in the dropdowns. | Example: “Claude Sonnet”. |
| Input price | Euros per million input tokens. | Accepts comma or decimal point. Empty counts as 0. |
| Output price | Euros per million output tokens. | Same as the previous one. |
| Context | Context tokens the model supports. | Optional. Example: 200000. |
“Save” is disabled until there is a reference and a provider is chosen. Without them, the server does not accept it either: “Enter the model’s reference and choose its provider”.
What happens when you test a model
Section titled “What happens when you test a model”The “Test” button simulates nothing: it launches a real, minimal request to the provider with that model. It spends a few tokens on purpose, because it asks the model to answer “ok”. It is not recorded as an assignment: it is only a check.
- If it answers, the row shows the time in milliseconds in green and, if there was one, the answer in angle quotes.
- If it fails, it shows the provider’s error in red. A failure here is usually a wrong key, a wrong base URL or a model that provider no longer serves.
Testing does not change anyone’s assignment: it only checks that the model answers.
How it relates to the rest
Section titled “How it relates to the rest”- Each role’s profile has the same model dropdown under Identity; there it is saved along with the rest of the profile.
- Each role’s spending is measured in tokens and compared with its monthly budget. Prices are stored per million tokens; this screen does not calculate or show the cost in euros of a particular assignment.
- The CEO’s model is changed in this same table, in the “Adrián (CEO)” row.
- If a role has no assignment, it uses the installation’s default model, which is configured outside this screen and is only shown here.
