AI Providers & Models
Elowen uses a configured AI provider and model to answer in Web chat, elowen chat, supported chat platforms, delegated sub-agents, and workflows.
Connect an AI provider
An administrator configures providers in Settings → <assistant name> AI. The setup wizard is also available with:
elowen setup
The wizard can reuse an existing connection, connect an OAuth account, save an API-key provider, configure a custom OpenAI-compatible endpoint, or install local Ollama and a model. When a model is available, it tests the setup with a chat. Run elowen doctor later to check provider readiness.
In Settings, Linked accounts lists the services you sign in to or connect with an account key, and AI providers below it lists the providers you added with an API key or address. Each provider shows only its icon and name; everything else is an icon, named when you point at it, tap it or reach it with the keyboard. A dashed circle means an account is not connected yet and a pause symbol that it is paused; a routing icon appears while routing is on. The icons of the models it offers sit under the name, and the usage bars under them. Statistics and Test connection are icons beside the name once an account works. With routing off, each account of a provider is its own entry; with routing on, the accounts are listed under the provider by name, each with its state icon and usage bars. The ⋯ menu holds Settings, Add account, Delete account (on an account's entry when the provider has more than one) and Remove provider.
Settings, or a click on the provider's entry itself, opens the provider's panel on the right, where every change saves on its own. General holds the name, the models and one section per account: its Active switch (off pauses it), its usage and its Spend limit where it applies, with sign in again, edit connection, disconnect and delete account in the account's ⋯ menu. Routing chooses whether Elowen picks the account by itself, the default account when it does not, and when idle conversations move to a better account. Connection shows the provider id and the address and holds the wire format and Refresh catalog. Advanced holds the temperature, the compatibility options and the tool-execution switches the provider supports.
Add an API-key provider
Elowen supports OpenAI-compatible endpoints and Anthropic Messages. Open Settings → <assistant name> AI → AI providers → Add provider and enter a name, a type (OpenAI-compatible or Anthropic API), an API address, an API key, and model IDs, one per line. For an OpenAI-compatible endpoint, the API address includes its version segment, for example https://ai.example.com/v1.
The setup wizard and the CLI provider picker offer these presets: OpenAI, Anthropic (Claude), OpenRouter, Google Gemini, xAI (Grok), DeepSeek, Groq, Mistral, Together AI, Fireworks AI, Cerebras, Perplexity, DeepInfra, Moonshot (Kimi), Z.AI (GLM), NVIDIA NIM, Hugging Face, Baseten, Ollama Cloud, and Ollama (local). A preset fills in the address; you still enter the key. If an endpoint has no /models route, enter model IDs manually.
Wire API → Auto chooses the newest supported API for each model and remembers the result. OpenAI and known account catalogs use their native format. For another compatible endpoint, first use starts a small paid check in the background; your conversation begins immediately on the default format, without waiting for the check. A detected change takes effect with the next message and appears in the conversation. Open the provider's ⋯ → Settings, then General → Models → Manage to see each model's effective API beneath its name. In model limits, Auto with a remembered result offers a small Reset API icon beside the API field to forget that model's detection. A failed check keeps the current default. You can explicitly choose Responses or Chat Completions for the provider, or pin one model's API in its model settings. Temperature is optional and accepts 0 through 2; blank lets the model use its default. With an empty model list, Elowen discovers models at <base-url>/models. A manual list controls which models are offered, and a successful discovery response can add context-window information.
For Gemini, use the Google OpenAI-compatible endpoint https://generativelanguage.googleapis.com/v1beta/openai. Native Google API is not available. Gemini entries that an Opencode endpoint offers only through native Google API cannot be used through that endpoint.
The built-in Ollama (local) endpoint is http://127.0.0.1:11434/v1 and does not need a key. The setup wizard can install Ollama; a manual local setup must already be running on the Elowen host.
Limit what an API-key account spends
An account that has no allowance of its own from the provider, such as an API key for OpenAI, DeepSeek or a custom endpoint, shows a Spend bar: what it has cost this calendar month (UTC) at list prices, against its limit, or Unlimited. To set a limit, open the provider's Settings and move the account's Spend limit slider to an amount in USD; its last stop is Unlimited. When the account reaches its limit it stops taking requests until the next month: with Routing on, the provider's other accounts take over, and its bar adds up the spend and limits of all its accounts; with routing off, the conversation says which account stopped and when it resets. An account with a limit also refuses models that have no known price, because their use could not be counted.
Connect an OAuth account
The Linked accounts group supports ChatGPT / Codex, Claude, GitHub Copilot, Kimi, xAI (Grok), Meta (Muse), and OpenRouter. Choose the service from Add account, or select Connect on an account that is not signed in, and finish the provider's browser or device sign-in. Credentials are stored by Elowen, not entered in the API-key form or sent to the browser.
Use Manage beside Models in the provider's Settings to choose which catalog entries Elowen offers; the chosen models appear as small icons under the provider's name, each named on hover. An empty selection means the whole catalog. Disconnecting removes the usable credential; the model selection is kept if you reconnect. If a sign-in expires, reconnect the account.
Some sign-ins show a code to enter on the provider's page. If the final redirect of a browser sign-in cannot reach Elowen, for example when Elowen runs on another machine, copy the address from the browser's address bar and paste it into the field.
Connect a key account
The Linked accounts group also lists providers that connect with an API key instead of a sign-in, currently Opencode Go, Command, and MiniMax. Choose the service from Add account, paste its API key, choose the API format (Auto, Chat Completions or Responses) and confirm. New Command and Opencode Go providers start with Chat Completions; existing format choices stay as configured. Auto follows the model's native catalog format when available, otherwise the endpoint default. The endpoint is fixed, so nothing else is needed. The provider then behaves like any other: its models are chosen in its Settings, Test connection and Statistics are icons beside its name, code mode and stateful responses (shown when the format supports them) are under Advanced in its Settings, and the account shows usage bars for how much of the 5-hour, weekly and monthly allowance is used. Edit connection (in the account's ⋯ menu in the provider's Settings) changes the key or format (an empty key keeps the stored one), and, while the provider has more than one account, Delete account removes one of them after confirmation. Without a subscription the account shows no usage bars.
For MiniMax, paste the Subscription Key from your international M Plan account, not a pay-as-you-go key or a China account key. MiniMax uses Chat Completions without a format choice and starts with MiniMax-M3.1-Flash and MiniMax-M3. Its allowance has 5-hour and weekly bars, not a monthly bar; unlimited windows and unavailable readings do not create a cap. Use the ? beside the key field for guidance. A live key is required to verify the provider's quota response.
OpenRouter bills per token to your own OpenRouter account and has a very large catalog, so use Manage beside Models in the provider's Settings to choose what to offer. A connected account lists only the chat models your OpenRouter key may use, with the context limits and prices OpenRouter reports for that key; the list is refreshed in the background, right after you connect or disconnect and then every few hours. If connecting refuses with a conflicting provider id, remove or rename the API-key provider that uses that id, then connect again.
Test a provider
The Test connection icon beside a provider's name sends one real request through that provider on the model a conversation would start with, and names the model that answered. It counts against a subscription's quota on OAuth accounts. The result appears at the bottom of the provider; a failure shows the provider's own reason; Connected only means a sign-in is stored, not that it still works.
Choose and switch models
A model is identified by its provider and model ID, in the form <provider>/<model>. A saved choice is restored while that pair remains configured and allowed. If it becomes unavailable, Elowen uses the applicable Project, account, or server default instead of matching the same model ID under another provider.
Settings → Models manages the instance-wide catalog and context-window overrides. Choose the instance conversation default in Settings → Models → Model roles → Default chat model. It is stored independently of provider and catalog order and applies when an account has no personal model choice, subject to that account's permissions. If the stored pair becomes unavailable, the row keeps it visibly unavailable and conversations use the existing permitted-model fallback; reconnecting does not overwrite your choice. An auto-discovered catalog (no manual model list) keeps only models reported with text output and drops OpenRouter's zero-cost :free variants; a model an administrator lists manually is retained regardless of its reported kind.
Set your personal default in Account → Models. Administrators can use the instance catalog; other accounts can select only models allowed by the administrator and their personal policy. Web chat and Account → Models have a model picker. In elowen chat, use /model to open the picker or /model <model> to switch directly. In the /model picker of the CLI, Ctrl+P opens provider management.
Choosing a model does not change your Project, tools, plugins, memory identity, or permissions.
Model roles and per-model settings
Settings → Models → Model roles answers which model does what for the instance: the default chat model every conversation starts with, the utility model that writes conversation titles and processes long-term memories, and the daily digest model (which inherits the utility model unless set). Set your personal chat, image, and context-shortening models in Account → Models.
Settings → Models also holds the catalog itself: which models exist, context-window overrides, and per-model output-token limits. In Account → Models you can additionally set a per-model compaction threshold beside the global one.
Code mode
When supported, a provider offers a Code mode switch in its settings. It is off by default and applies to every model from that provider. In Code mode, a model can call available tools from a JavaScript execution tool. Those calls keep the same permission and approval rules as direct tool calls.
Stateful responses
An OpenAI-compatible provider that uses the Responses API, and a connected xAI (Grok) account, offer a Stateful responses switch in their settings. It is off by default. When on, the provider stores responses on its servers and later requests continue from the previous response, which may improve cache reuse. Retention is set by the provider. The switch appears only for providers the daemon reports as capable; on any other provider there is nothing to switch on.
Reasoning effort and fast mode
In Account → Models, the reasoning control shows only levels supported by the selected model. In Web chat, the statusline and /model picker show the same scale directly under a supported model, so you can change it without leaving the picker. In elowen chat, /reasoning opens the picker and /reasoning <level> selects a supported level. Provider labels can differ: the CLI displays Codex's xhigh as ultra.
Use /fast, /fast on, /fast off, or /fast status in elowen chat to set or check fast mode for the current model. The choice is stored per model, so turning it on for one model does not affect another; Elowen sends a fast-mode option only for models you selected whose provider/model route supports it, and the status line shows FAST only for such a model.
Vision and conversation summaries
These options are in Account → Models:
- Vision fallback model is used for image turns, only when the current model is known not to accept images.
- Compaction model summarizes older conversation history and can use a different configured provider.
- Automatically shorten context (labelled Shorten when context is full) is on by default at 80% of the effective context window. Set the threshold from 30% to 95%; per-model overrides are available under Compaction per model.
Context size comes from provider information or an administrator override in Settings → Models. The same catalog can set an output-token limit for an exact provider/model pair. Input and output share the context window; Elowen leaves room for the prompt and uses 8,192 output tokens by default when no limit is supplied.
OAuth usage limits
The accounts in Settings → <assistant name> AI → Linked accounts show allowance bars for ChatGPT/Codex, Claude, Kimi, xAI (Grok), Meta (Muse), Opencode Go, Command, and MiniMax. OpenRouter shows its credit balance and any key limit instead of a subscription allowance. GitHub Copilot shows no usage. Elowen reads each connected account on its own schedule: every minute while a conversation turn or a delegated child runs, and every five minutes otherwise; Meta at most every five minutes, because each Meta poll mints a model key. A read that fails keeps the last figures for up to half an hour and then withdraws them, so bars that disappear mean the provider could not be read. Provider requests time out after 5 seconds. These are provider limits, so Elowen cannot change or predict them.
Models in delegated work
A sub-agent uses the conversation's model by default. You can choose another available provider/model pair; workflow nodes can each use a different model. A model choice does not change the task's Project, tools, or permission boundary. See Sub-agents & Workflows.
When Settings → <assistant name> AI → Runtime → Edit runtime → Run sub-agents in separate processes is on, delegated work runs in separate runner processes. The default is on. Turning it off runs delegated work inside the daemon, and the change applies without a restart.
The runner pool size is stored as the runtime setting subagentRunnerPoolMax. null (the default) means automatic sizing, 0 disables the pool, and a positive value is a hard cap. The Runtime dialog has no control for this value. The stored runtime setting is the sole pool-size authority. If a runner cannot start or is not built, Elowen falls back to running the child in the daemon process.
Retry budget
Eligible model requests repeat automatically after a transient outage, rate limit or dropped connection. Administrators tune the policy in Settings → <assistant name> AI → Limits and connection retries → Edit limits. Reconnect attempts counts repeats after the first attempt (0–10, default 3): zero permits one initial request without automatic repetition. Reconnect delay sets the first wait (1–30 seconds, default 2); the preview doubles later waits up to 60 seconds without random variation.
The dialog previews the configured request waits, such as 2 s → 4 s → 8 s, excluding attempt durations and server-requested minimum waits. It preserves millisecond precision: a saved 1501 ms delay displays as 1.501 s in English or 1,501 s in Czech and Slovak. The always-on exception stays visible even at zero: the request maximum and finite preview do not cap paired-computer or platform connection attempts, and there is no second maximum.
The request that shortens a conversation keeps its separate count, Compaction summary retries (0–5, default 2). It repeats after a transient error or a refused answer, and then the built-in summarization runs instead.
Troubleshoot provider setup
- Run
elowen doctorand check the provider status. - In Settings →
<assistant name> AI, confirm the account is connected or the API key is configured. - Check the provider URL and model ID. If
/modelsis unavailable, enter model IDs manually. - Confirm the model is offered in Settings → Models and allowed for your account.
- Select the Test connection icon beside the provider's name; a failure names the provider's reason. Reconnect an OAuth account if its sign-in has expired.
Provider credentials stay on the Elowen host; chat platforms receive the model's reply, not its credentials.