Model keys
How the assistant reaches a model, where the keys go, and how to change which models your users are offered.
Out of the box the assistant answers over the real streaming path with canned words. That is deliberate: every screen can be seen and evaluated, and nothing is billed, until a key exists.
One key is enough
Everything this product does with a model goes through the Vercel AI Gateway. A plain vendor/model
string is enough for a call, the gateway holds the accounts with each vendor, and the installation holds one
key:
AI_GATEWAY_API_KEYThat single key reaches Anthropic, OpenAI, Google and the rest, which is why the other keys in this list are not needed to start.
The providers the installation knows about
| Provider | Environment name | Needed now |
|---|---|---|
| Vercel AI Gateway | AI_GATEWAY_API_KEY | Yes. This is the one that is in use |
| Anthropic | ANTHROPIC_API_KEY | No. Claude arrives through the gateway |
| OpenAI | OPENAI_API_KEY | No. Arrives through the gateway |
GOOGLE_GENERATIVE_AI_API_KEY | No. Arrives through the gateway | |
| Perplexity | PERPLEXITY_API_KEY | No. Searching runs on the gateway's own search tool |
| Exa | EXA_API_KEY | No. Reached by the gateway when a turn asks for it |
The dormant ones exist so that a direct route is a change of settings rather than a change of code.
Intelligence → Providers & keys shows each provider with its environment name, whether a key is set, and
what that key is for, including the honest note that several of them do nothing yet.
Where a key goes
Changing `SETTINGS_SECRET` loses the sealed keys
Sealed values are encrypted with it, so rotating that secret makes every stored provider key unreadable at once. Re-paste them afterwards, or keep them in the environment so that rotation costs nothing.
Which models your users see
Intelligence → Models is the catalogue, and it decides more than a list:
| Setting | What it changes |
|---|---|
| Tier names | What the three groups are called in the picker |
| Which models are in each tier | What the quick picks actually call |
| Live | A model switched off disappears from the picker everywhere |
| Context and output ceilings | How much a turn may carry, and how long an answer may be |
| Temperature ceiling | The upper bound a user or an agent may ask for |
| Capability tags | Which models are trusted with tools, images, or long context |
| Default tier | What a new account starts on |
| Blocked list | Gateway models a user may never pick, even if the gateway offers them |
The picker inside the product offers a short list by tier and then the full gateway list, filtered by what
the panel allows. A model that is live in the picker and disabled by the plan's entitlements is still
refused at the plan level, and Money → Entitlements is where that is decided.
Checking it works
Open Intelligence → Providers & keys and press the health check on the
gateway row.
Open System → Status & health, where the gateway is one of the four checks
with its response time.
Ask the assistant something real in /dashboard/new, with a project open so
that tools are exercised.
Watch Insight → Overview for the turn appearing, and Insight → Analytics
for the model mix.
A refusal is not a failure
When a turn is refused, the reason is one of: no key, a rate limit for the
plan, a spend ceiling, or a blocked model. Insight → Analytics counts
refusals separately from failures for exactly this reason, and the refusal
message names the window and the wait.

