Intelligence

Bring your own model

Every provider is reached through the same OpenAI-compatible chat-completions client with a different base URL and key. Switch providers without touching code, chain them for failover, or point everything at a local model and disconnect.

Supported providers

The Providers page shows the same list with a configured and active indicator per provider, sign-up links, and a curated model catalogue per provider for the model picker.

Anthropicpaid with free credit on new accounts
OpenAIpaid
Google Geminifree tier, then paid
Groqfree tier with rate limits; serves open reasoning models
OpenRouterone key for hundreds of models with a rotating free tier
Perplexitymodels with built-in web search
DeepSeekpaid, lowest cost
Mistralfree experimental tier; EU-hosted
Ollamaself-hosted on your own machine; nothing leaves the network
Together AIopen models, some free endpoints
Cerebrasvery fast inference, free tier
Hyperbolichosted open models
Hugging Faceinference API across community models
Coherestrong for summarisation
n8nyour own workflow exposing a chat-completions webhook
Cloudflare Workers AIneeds an API token and the account ID

Selecting a provider

The active provider is an environment variable plus that provider’s key. Switching from the dashboard writes the new choice to the environment file so it survives restarts.

AI_PROVIDER=gemini
GEMINI_API_KEY=...
AI_HTTP_TIMEOUT_SECONDS=20

Air-gapped with Ollama

Run a model on the same host or on a machine in your network and point InRoots at it. The SDK requires a key value, so any placeholder works. Small models need roughly 8 GB of RAM; better ones need more. Combined with a local IP database on your host, a self-hosted chat server and spoken replies left off, nothing about your people leaves the perimeter.

AI_PROVIDER=ollama
OLLAMA_API_KEY=ollama
OLLAMA_BASE_URL=http://localhost:11434/v1

Model roles

  • Reasoning models (gpt-oss, o-series) spend tokens thinking before answering; too small a budget returns an empty success. InRoots floors the budget at 400 tokens and requests low reasoning effort in the form each provider expects, then falls back to the reasoning text if the answer is empty.
summarysummaries and the assistant; never budget-gated
fallbackclassification and routing calls; subject to the daily budget
reasoningaccuracy-critical judgments such as whether a late reason is valid; upgraded to the provider’s strongest model, or AI_REASONING_MODEL

Failover

Every call goes through one resilient entry point: the active provider first, then each configured provider in the failover order, trying the default model and then the catalogue models of each. If one provider is out of credit, rate-limited or rejects its key, the next answers. The order is editable by admins; providers you omit are appended so a newly added key still participates.

  • A failsafe job every 15 minutes probes the active provider with a one-token request and, on failure, switches to the first working configured provider in the chain (automation key ai_failsafe, on by default).
  • A provider-status probe warns the dashboard when a key has expired.
  • Each fallback is written to the audit log as ai_provider_fallback.
gemini, openai, anthropic, openrouter, deepseek, mistral, groq, together, cerebras, cohere, hyperbolic, huggingface, ollama