Cloud Providers & Accounts
Lattis can route to remote providers alongside your local models. Connect an
account and its provider’s models appear in GET /v1/models next to the local
ones; pass a model id like claude-opus-4-8 or gpt-5.5 to use it.
Requests are translated between the OpenAI, Anthropic, and Responses formats as needed, so a client speaking either dialect can use any connected model.
Supported providers
Section titled “Supported providers”| Provider | Auth | Notes |
|---|---|---|
| Anthropic | Subscription (OAuth) or API key | Claude models. |
| OpenAI / Codex | Subscription (OAuth) or API key | GPT-5 family and Codex models. |
| OpenRouter | API key | OpenAI-compatible aggregator; many vendors behind one key. |
| Amazon Bedrock | API key (bearer token) | Per-account region; served on /v1/chat/completions. |
Each provider’s catalog supplies model names, pricing, and context windows where available. Newly listed models may be routable without a Lattis update, provided the provider integration supports them.
Accounts
Section titled “Accounts”Cloud access is organized into accounts, managed under Settings → Accounts. You can add more than one account per provider — for example a personal Claude Pro subscription and a work Console key side by side.
Each account authenticates one of two ways, chosen when you add it (and switchable later with Re-authenticate):
- Subscription — sign in through the browser with a Claude Pro/Max or ChatGPT Plus/Pro account (OAuth).
- API key — paste a Console API key for the provider.
Priority-ordered routing
Section titled “Priority-ordered routing”Accounts live in a single ordered list (with an optional per-project order). For each request, Lattis walks the list top-to-bottom and uses the first connected account whose provider can serve the requested model. Drag to reorder in Settings → Accounts; the order persists.
If a chosen account errors, Lattis fails over to the next account that can serve the model — across providers — and, on exhaustion, shows the full chain of what was tried and why each option failed. Pin a project to a specific subset (and order) of accounts from that project’s settings screen; unpinned projects use the global order.
Anthropic
Section titled “Anthropic”Connect a Claude Pro/Max subscription via OAuth, or paste a Console API key from
the Anthropic Console. Once an account is connected, Claude models (for example
claude-opus-5-5, claude-opus-4-8, claude-sonnet-4-6, claude-haiku-4-5)
are routable. The daemon advertises each model’s real context window in
GET /v1/models.
Some newer Claude models reject request shapes that older models accept. The daemon rewrites them before the request leaves your machine, also on Amazon Bedrock and OpenRouter:
- On Opus 5.5, Fable 5 and 5.1, and Mythos 5 and 5.1, thinking is always on.
thinking: {type: "enabled", budget_tokens: N}becomesthinking: {type: "adaptive"}, andthinking: {type: "disabled"}is removed. - On Opus 5.5, Fable 5.1, and Mythos 5.1, a forced
tool_choice(any, ortoolwith a name) becomesauto. The model can then answer without a tool call.
A Claude Pro/Max subscription can also be connected without a browser on the
Lattis machine, using a long-lived token from claude setup-token. That is
the supported route for a remote or headless host — see
Headless & Remote Hosts.
OpenAI / Codex
Section titled “OpenAI / Codex”Connect a ChatGPT subscription via OAuth — which uses the Codex Responses
backend, including the Codex Responses WebSocket transport — or paste a
standard OpenAI API key. GPT-6, GPT-5 family, and Codex models become routable
(for example gpt-6-astra, gpt-6-sol, gpt-6-luna, gpt-5.5).
Chat Completions accepts tools on GPT-6 Astra never, and on GPT-6 Sol and Luna
only when reasoning_effort is "none". On an API key, the daemon sends every
other GPT-6 chat request with tools to the Responses API instead. It
translates the reply back to the format your client uses. It also changes
these parameters, which the GPT-6 models reject:
reasoning_effort: "minimal"becomes"low". On Astra, which does not accept"none","none"also becomes"low".temperature,top_p,logprobs, andtop_logprobsare removed, unless the model is Sol or Luna and the effort is"none".
The subscription sign-in needs a browser redirect back to the machine running the daemon, so on a headless host an API key is the practical option; Headless & Remote Hosts covers why and what the alternatives are.
OpenRouter
Section titled “OpenRouter”Paste an OpenRouter API key. OpenRouter is an OpenAI-compatible aggregator, so its
catalog spans many vendors behind one credential; the models it serves appear in
GET /v1/models and route via chat-completions translation.
Amazon Bedrock
Section titled “Amazon Bedrock”Paste a Bedrock API key (bearer token) and set the account’s region (defaults
to us-east-1). Lattis speaks the Bedrock Converse API and translates to and from
the internal format, so clients use Bedrock models with no changes. Served on
/v1/chat/completions (streaming and non-streaming); model listing comes from
Bedrock’s inference profiles with a curated fallback.
Apps that sign in themselves
Section titled “Apps that sign in themselves”A provider’s models can be listed in GET /v1/models even when no account is
connected, allowing apps that provide their own credential to use passthrough. A
connected Lattis account, when present, takes precedence over an app-supplied
credential for that provider.
Connecting from the API
Section titled “Connecting from the API”The GUI wraps these, but they’re scriptable via the Control API.
<account_id> is a Lattis account id: the GUI assigns one per account, and for
raw API use any stable string works — the daemon creates the account entry on
first use.
# Store a Console API key on a specific accountcurl -X POST http://127.0.0.1:5288/control/remote/anthropic/account/<account_id>/key \ -H 'Content-Type: application/json' -d '{"key":"sk-ant-..."}'
# Begin an OAuth connection for an account (open the returned URL in a browser)curl -X POST http://127.0.0.1:5288/control/remote/openai/account/<account_id>/connect
# Disconnect an accountcurl -X POST http://127.0.0.1:5288/control/remote/anthropic/account/<account_id>/disconnectCredentials
Section titled “Credentials”Cloud credentials are stored in remote_auth.json in the data directory, written
with 0600 permissions on Unix. See Configuration & Storage.
Continue to Usage & Cost to see how spend on paid cloud models is tracked.