> ## Documentation Index
> Fetch the complete documentation index at: https://docs.seriora.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Providers and models

> Six providers, three ways to pay, and how seri reroutes when a credential is missing.

Two axes decide which model answers a turn. The **provider** is the API surface that serves the
model. The **credential** is what pays for it.

| Credential     | What it is                                                              |
| -------------- | ----------------------------------------------------------------------- |
| `key`          | your own API key for that provider                                      |
| `subscription` | a consumer subscription you sign in to, rather than metered API billing |
| `gateway`      | a hosted seri account, which routes on your behalf                      |

They are separate on purpose. The same provider can be reached by more than one credential, and
a model does not change because of how it is paid for.

## Providers

| Provider   | Id           | Key                            |
| ---------- | ------------ | ------------------------------ |
| Groq       | `groq`       | `GROQ_API_KEY`                 |
| OpenRouter | `openrouter` | `OPENROUTER_API_KEY`           |
| Anthropic  | `anthropic`  | `ANTHROPIC_API_KEY`            |
| OpenAI     | `openai`     | `OPENAI_API_KEY`               |
| Google     | `google`     | `GOOGLE_GENERATIVE_AI_API_KEY` |
| xAI        | `xai`        | `XAI_API_KEY`                  |

The provider is spelled `xai`, not `grok`. Grok is the model family and xAI is the company that
serves it, which is also how the model catalog indexes it.

`SERI_PROVIDER` names which provider `SERI_MODEL` is read against. A successful `/model` pick
persists both for you, so setting them by hand is the scripted equivalent of picking one.

## Bring your own key

`/setup` adds, replaces or removes a provider key without leaving the session. Setting the
environment variable before you launch works too, and the environment wins over anything stored.

Guided setup will not finish without a model pick. A key supplied through the environment skips
setup entirely, and a session that has never had a pick falls back to the built-in default,
`openai/gpt-oss-120b` on Groq. `/model` is how you get off it.

On a genuinely blank first run, meaning a real terminal with no key configured anywhere, seri
opens guided setup instead of the input box. It is two steps. Add a key, then pick a model. The
model step is not optional, because a key with no model does not leave seri in a runnable state.
Declining to add a key at all closes setup rather than trapping you in it.

## A Grok subscription

xAI is reachable two ways. `XAI_API_KEY` is ordinary metered API billing from `console.x.ai`. A
consumer Grok subscription is a second, separate credential for the same provider, connected
through a browser sign-in rather than by pasting a key. `/setup` lists it under its own section,
apart from the API keys.

Turns served by a subscription report their cost as included rather than as a dollar amount,
because the subscription already paid for them.

<Note>
  seri never falls back from a subscription to a metered credential. If the subscription refuses a
  turn, that is the answer, rather than a silent switch to something that charges you.
</Note>

## A hosted account

`/signup` creates a seri account and `/login` signs in to one. A signed-in account manages no
keys at all and defaults to `openai/gpt-oss-120b` through OpenRouter.

That default was chosen by measurement rather than preference. On the same task, with the same
prompt and a fresh session each run, it made a real tool call in 20 of 20 runs where
`llama-3.3-70b-versatile` managed 5 of 11.

`/usage` shows what the account has spent. See [Hosted accounts and usage](/guides/usage).

## Switching model

`/model` opens the picker. It lists every provider and every route to a given model, and a switch
takes effect mid-session without losing context.

A pick whose next turn actually succeeds becomes the default for every future brand-new session,
not only the one you picked it in. A pick that fails does not, so a typo or an unreachable model
never becomes your default.

## Rerouting

A model is often reachable through more than one provider. If the pair you are on has no
credential, seri reroutes to a configured provider that reaches the same model and says so once
in the transcript.

* Native providers are preferred over an aggregator such as OpenRouter, so an Anthropic key beats
  an OpenRouter key for a Claude model.
* An explicit `/model` pick wins over rerouting, as long as its own provider has a credential.

## Reasoning effort

`/effort <level>` sets this session's reasoning-effort override, `/effort auto` clears it, and
`/effort` alone shows the current setting. Which levels are legal depends on the model. The value
also persists as `SERI_REASONING_EFFORT` once a turn has actually succeeded on it.

## Models for subagents

Subagent roles inherit the session's provider and model unless a task names a different pair. You
ask the parent to dispatch and name the child model in the prompt.

```text theme={null}
Dispatch an oracle to review the permission gate. Use anthropic / claude-sonnet-5 at high.
```

`provider` is one of the six ids above and `model` is that provider's own id. For OpenRouter,
that is the OpenRouter slug.

* A model given without a valid provider is ignored rather than mixed with the session provider.
* A pair that cannot be constructed warns and falls back to the session model rather than failing
  the turn.
* `SERI_ROLE_<ROLE>_MODEL` and `SERI_ROLE_<ROLE>_PROVIDER` supply a default for when a task omits
  the pair.
* The session's `/effort` copies onto a child only when that child runs the same pair, unless the
  task names an effort itself.

[Subagents](/guides/subagents) covers the roles themselves.
