Skip to content

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.

ProviderAuthNotes
AnthropicSubscription (OAuth) or API keyClaude models.
OpenAI / CodexSubscription (OAuth) or API keyGPT-5 family and Codex models.
OpenRouterAPI keyOpenAI-compatible aggregator; many vendors behind one key.
Amazon BedrockAPI 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.

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.

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.

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} becomes thinking: {type: "adaptive"}, and thinking: {type: "disabled"} is removed.
  • On Opus 5.5, Fable 5.1, and Mythos 5.1, a forced tool_choice (any, or tool with a name) becomes auto. 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.

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, and top_logprobs are 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.

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.

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.

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.

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.

Terminal window
# Store a Console API key on a specific account
curl -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 account
curl -X POST http://127.0.0.1:5288/control/remote/anthropic/account/<account_id>/disconnect

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.