Providers
The five sources OpenLLM gets models from: included models, subscriptions, API keys, local servers and custom endpoints, who pays, and where each runs.
You can reach models in several ways: OpenLLM's included models, a coding subscription you already pay for, a provider API key, a model server on your own machine, or a gateway you run somewhere else. Each one is billed differently and runs in a different place. OpenLLM puts them behind one API key and one list of model ids, so your tools don't need to know which is which.
Model sources
| Source | Who pays | Where it runs | Plan | Setup page |
|---|---|---|---|---|
| Included models | OpenLLM, up to a monthly allowance | Hosted gateway | All plans; the allowance depends on the plan | Included models |
| Subscriptions | You, through your Claude, ChatGPT, Kimi, or Grok plan | Your device, through the vendor's own CLI | All plans | Subscriptions |
| API keys | You, billed by the provider | Hosted gateway | All plans | API keys |
| Local models | Nobody; your hardware serves them | Your device | All plans | Local models |
| Custom endpoints | You, billed by whoever runs the endpoint | Hosted gateway | All plans | Custom endpoints |
On the Free plan, requests on every source except the included models count toward the monthly token cap. See Plans and limits.
Web search isn't a model source. It's a separate Brave Search API key that powers
POST /v1/search and the search tool in the OpenLLM MCP server. See
Web search.
Every model has an id in the form provider/model, for example openai/gpt-5,
claude_code/claude-opus-5-5, local_ollama/llama3.2, or custom:home-lab/qwen3. To see
the ids available to you, call GET https://www.openllm.sh/v1/models with your key.
Which source serves a request
OpenLLM never compares prices or picks a source for you. The order comes from what you ask for:
- You name one model. A concrete id such as
openai/gpt-5runs on that model's source. - You name an alias. An alias such as
plusexpands to its fallback chain, an ordered list of models. OpenLLM tries them top to bottom and stops at the first one that answers. On a new account, the built-inultra,plus, andlitechains start with the included models, followed by models from the providers you've connected. See Routing and fallback.
Before the first attempt, OpenLLM removes models it can't use right now: included models whose allowance is spent, and models that failed recently and are cooling down. Then the order decides where the request runs.
- Requests to the hosted gateway (
https://www.openllm.sh/v1). If the first remaining model is a subscription or local model, the gateway hands the whole request to one of your online devices that can serve it. The device runs the chain in order: subscription and local models on the device, everything else back through the gateway. If the first model is anything else, the gateway runs the request itself and skips every subscription and local model in the chain. If nothing is left after skipping, the request fails with403subscription_requires_daemonorlocal_requires_daemon. - Requests to the daemon on your machine (
http://127.0.0.1:8787/v1). The daemon runs the whole chain in order, so subscription and local models are used wherever they appear in the chain.
To use a subscription or local model from the hosted gateway, put it first in the chain. Or
point your tool at the daemon. The openllm client launchers do this for you. See
Clients.
The Providers page
You connect every source on the Providers page in the app. It has five tabs:
| Tab | What it holds |
|---|---|
| Subscriptions | One row per vendor CLI login on the selected device, with Connect, usage, and Log out. Needs a running daemon. |
| Local | Model servers the daemon found on the selected device, with an optional API key per server and Rescan. |
| API keys | Provider API keys, encrypted in your browser before they're saved. |
| Web search | The Brave Search API key. |
| Custom | Your own OpenAI- or Anthropic-compatible endpoints, and the models you enabled on each. |
The Subscriptions and Local tabs work on one device at a time. If you have more than one device, pick the device first. See Devices.
What OpenLLM can and cannot see
| Source | Credential | What OpenLLM's servers see |
|---|---|---|
| Included models | OpenLLM's own key | Your requests, which they forward to the upstream provider |
| Subscriptions | Stays in the vendor CLI's store on your device | Usage metadata recorded by the device. Never the login token. |
| API keys | Encrypted in your browser with your vault key | Ciphertext at rest. Decrypted in memory for each request. |
| Local models | Optional server key, stored only on the device | Usage metadata recorded by the device |
| Custom endpoints | Encrypted in your browser with your vault key | Ciphertext at rest. Decrypted in memory for each request. |
For the full picture, see Security and vault and Privacy.
Limitations
- Subscription and local models need one of your devices to be online. Local models don't show
up in
GET /v1/modelswhile their device is offline. Subscription models stay listed, but requests to them fail until a signed-in device is back online. - The hosted gateway uses a subscription or local model only when it comes first in the chain.
- Custom endpoints are called from OpenLLM's servers, so they must be reachable from the public internet.
- Saving an API key doesn't test it. You find out the key is wrong on the first request.
Further reading
Last updated on
MCP server
Add the openllm MCP server to any MCP client over stdio to get gateway API tools, shared memory, subscription logins, and your marketplace integrations.
Connect a subscription
Use your Claude Pro or Max, ChatGPT, Kimi Code or Grok plan through OpenLLM by signing in to the vendor's own CLI on a device that runs the daemon.