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
/modelpick 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>_MODELandSERI_ROLE_<ROLE>_PROVIDERsupply a default for when a task omits the pair.- The session’s
/effortcopies onto a child only when that child runs the same pair, unless the task names an effort itself.

