Skip to main content
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. 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

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.
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.

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.

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.
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 covers the roles themselves.