Providers
Updated
RightNow Agent, the terminal coding agent, is paused. Its guides stay online as reference.
With an existing installation, inspect the configured model and endpoint before choosing a provider.
Select a model
Expected: the report includes any configured model and endpoint facts.
The model listing shows your credential source, default model and available model entry IDs.
The -m option selects a model entry ID.
Inside [model.<id>], model_provider selects a provider ID. model names the upstream model.
Shipped RunInfra entry
Set RIGHTNOW_API_KEY. The runinfra preset also accepts RUNINFRA_GATEWAY_KEY as a fallback.
The template stores only the variable name, never the key. Check the RunInfra key resolution when credentials overlap.
Featured providers
| Provider | Provider ID | Key variable | Endpoint |
|---|---|---|---|
| RunInfra | ID: runinfra | Key: RIGHTNOW_API_KEY, then RUNINFRA_GATEWAY_KEY | Endpoint: https://api.runinfra.ai/v1 |
| Cerebras | ID: cerebras | Key: CEREBRAS_API_KEY | Endpoint: https://api.cerebras.ai/v1 |
| Groq | ID: groq | Key: GROQ_API_KEY | Endpoint: https://api.groq.com/openai/v1 |
| OpenRouter | ID: openrouter | Key: OPENROUTER_API_KEY | Endpoint: https://openrouter.ai/api/v1 |
| Vercel AI Gateway | ID: vercel-ai-gateway | Key: AI_GATEWAY_API_KEY | Endpoint: https://ai-gateway.vercel.sh/v1 |
Point a model entry at the provider ID; the preset supplies the endpoint and key variable, so no base_url is needed:
[model.cerebras-model]
model = "<model-id>"
model_provider = "cerebras"
[model.groq-model]
model = "<model-id>"
model_provider = "groq"
[model.openrouter-model]
model = "<model-id>"
model_provider = "openrouter"
[model.vercel-gateway-model]
model = "<model-id>"
model_provider = "vercel-ai-gateway"These four presets set no context window. Set context_window in the model entry, or it resolves at 200000 tokens, which decides when compaction fires.
Startup skill listings keep a separate 6,000-character cap; some discovery announcements use a context-derived budget.
Other providers
Direct Anthropic models use ANTHROPIC_API_KEY with api_backend = "messages". Direct OpenAI models use OPENAI_API_KEY with api_backend = "responses".
The anthropic and openai presets set the endpoint, key variable, and backend for you.
For any other OpenAI-compatible endpoint, define a provider with its base URL, key variable, context window, and capability settings, then point model entries at it:
[model_providers.my-provider]
base_url = "https://api.example.com/v1"
env_key = "PROVIDER_API_KEY"
context_window = 128000
supports_tool_choice_required = false
[model.first]
model = "<model-id>"
model_provider = "my-provider"Local inference is not a product capability: the 1.0.4 release removed local runtime paths, local weights, GPU inference, and local embeddings. The keyless ollama, lmstudio, and llamacpp preset IDs still parse but are not supported.
API backends
| Value | Protocol |
|---|---|
| chat_completions | OpenAI Chat Completions; default |
| responses | OpenAI Responses |
| messages | Anthropic Messages |
| gemini | Google Gemini generateContent |
Provider and model fields
- [model_providers.<id>]
- Provides shared defaults to referenced model entries.
base_urlapi_base_urlenv_keyapi_keyapi_backendauth_schemekeylessextra_headersquery_paramsenv_http_headersauth_providerauthcontext_windowsupports_tool_ choice_ required supports_tools_ with_ response_ format
- [model.<id>]
- Model scalars override provider defaults.
- Nonempty header maps replace provider maps.
- Blank query values are filtered before a nonempty model query map replaces the provider map.
- When no model API key is set, environment key lists merge with model names first.
modelmodel_providerbase_urlapi_base_urlnamedescriptionenv_keyapi_keyauth_providerapi_backendauth_schemekeylesstemperaturetop_pmax_completion_tokensmax_retriesinference_idle_ timeout_ secs context_windowauto_compact_ threshold_ percent extra_headersquery_paramsenv_http_headersreasoning_effortreasoning_effortssupports_reasoning_effortsupports_backend_searchsupports_tool_ choice_ required supports_tools_ with_ response_ format use_conciseagent_typehiddensupported_in_apicompactions_remainingcompaction_at_tokensshow_model_fingerprintstream_tool_callssystem_prompt_label
Keep secrets out of query_params. Although api_key is accepted, it stores the secret in config.toml; prefer env_key or the credential store. Use env_http_headers to map a request header to an environment variable without writing its value to disk.
Custom model catalog
RIGHTNOW_MODELS_BASE_URL selects an OpenAI-compatible base for inference and model discovery; RIGHTNOW_MODELS_LIST_URL selects a different discovery URL. The config-file equivalents are [endpoints] models_base_url and models_list_url.
- With a custom catalog endpoint, model resolution uses configured model entries and models returned by that endpoint; it does not append the built-in catalog.
- Custom catalog discovery first tries the static key reader, which checks
RIGHTNOW_API_KEY,RUNINFRA_GATEWAY_KEY, then the legacy aliases. It falls back to an available API-key credential supplied to the fetch. - A fresh cached catalog can supply models at startup. A failed refresh leaves existing models unchanged. With a custom endpoint and no fetched or cached catalog, only configured model entries remain.
If selection fails, run rightnow doctor and use the configuration guide to check the active file.
Next step
Use your selected model for a first task in the Quickstart.