Providers
RightNow Agent is coming soon for Windows, macOS and Linux. Installation commands and workflows in these guides are reference material until the public release is available.
A model entry names an upstream model and a provider. The provider supplies the endpoint and the environment variable that holds its key.
Select a model
rightnow modelsIt prints the credential in use, the default model, and the model-entry IDs your configuration and credentials make available.
The -m option selects a model-entry ID. Inside [model.<id>], model_provider selects a provider ID, and model names the upstream model.
Shipped RunInfra entry
[models]
default = "runinfra"
[model_providers.runinfra]
base_url = "https://api.runinfra.ai/v1"
env_key = "RIGHTNOW_API_KEY"
supports_tool_choice_required = false
context_window = 1048576
[model.runinfra]
model = "qwen3-8-flash-next"
model_provider = "runinfra"
name = "RightNow (RunInfra)"
context_window = 1048576
auto_compact_threshold_percent = 85Set RIGHTNOW_API_KEY; the runinfra preset also accepts RUNINFRA_GATEWAY_KEY as a fallback. The template stores only the variable name, never the key.
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; non-empty header maps replace provider maps; blank query values are filtered before a non-empty 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.
- Discovery does not read
RIGHTNOW_API_KEY. If discovery fails, only your configured model entries are available, so give each one its ownenv_keyormodel_provider.
If selection fails, run rightnow doctor and use the configuration guide to check the active file.