Models
How Machine picks a model, the models Machine manages, and how billing works for managed models, your own keys, and your own plans.
Machine runs each session on a model. This page explains the kinds of model ids, how Machine picks a model automatically, how each route is billed, and which models Machine manages today.
This page applies to projects with the LLM gateway on. LLM gateway is an experimental feature flag, and it is on by default for cloud projects. Check or toggle it in Settings → Experimental.
Model id shapes
A model id has one of five shapes:
| Shape | Example | Who supplies access | Who pays |
|---|---|---|---|
| Managed — a bare id | grok-4.6, claude-sonnet-5.5 | Machine | Your Machine credits |
BYOK — provider/model | anthropic/claude-opus-4-8 | Your provider key | Your provider account |
ChatGPT plan — codex/ | codex/gpt-5.6-sol | Your ChatGPT plan, connected once | Your ChatGPT plan |
Claude subscription — claude-subscription/ | claude-subscription/opus | Your Claude Pro or Max plan | Your Claude plan |
Cursor plan — cursor/ | cursor/ plus an id from your Cursor catalog | Your Cursor plan | Your Cursor plan |
The three plan shapes cost zero Machine credits. Usage counts against your own plan's limits instead.
Connect a BYOK key in Settings → Models → API keys, or set the provider's env var directly as a secret. Plans connect from the same API keys list: ChatGPT with Connect ChatGPT on the OpenAI row, and Claude and Cursor as described below.
Use your Claude subscription
Machine runs the unmodified Claude Code CLI inside your session's workspace, signed in to your own Claude account. The login stays in that workspace.
- Open Settings → Models → API keys, find the Anthropic row, and click Connect Claude subscription.
- Click Open Anthropic sign-in and log in with your Claude account.
- Anthropic shows a code. Paste it into the dialog and click Submit code.
The connect button shows only to people who can edit the project. Connecting needs a workspace to sign in. If no session is open on the page, Machine uses your most recent session's workspace and wakes it if needed. You can connect only from your own sessions — your Claude login never lands in a teammate's workspace.
Each session signs in on its own. The project remembers that you connected Claude, but a new session's workspace holds no login yet. In that session the model picker shows a Sign in to use Claude here row in place of the Claude models. Pick it to sign that session in. The login survives stops and restarts of the session.
The subscription models appear in the picker as, for example, Claude Opus 5.5 (Subscription), with a Sub tag instead of a price:
| Picker name | Model id |
|---|---|
| Claude Fable 5.1 (Subscription) | claude-subscription/fable |
| Claude Opus 5.5 (Subscription) | claude-subscription/opus |
| Claude Sonnet 5.5 (Subscription) | claude-subscription/sonnet |
| Claude Haiku 4.5 (Subscription) | claude-subscription/haiku |
A Claude subscription request never falls back to a Machine-managed model. If your plan runs out, the request fails with an error instead of spending your credits.
claude.ai connectors
The sign-in dialog has a switch, Use my claude.ai connectors in this session. It is off by default, and each new session starts with it off. When you turn it on, Claude can use the connectors on your claude.ai account (Gmail, Drive, and others) in that session. Those connectors run outside Machine's approvals and activity log, including in scheduled runs. Leave it off unless you need them.
Use your Cursor plan
- Open Settings → Models → API keys and find the Cursor row.
- Choose Sign in with Cursor to log in on cursor.com, or Paste a key to use an API key from your Cursor dashboard.
Sign-in runs inside one of your sessions, so open a session in the project first. After that, your Cursor models appear in the model picker in every one of your sessions in the project. Only you see them — teammates connect their own Cursor.
Each Cursor model is named after Cursor's own name with via Cursor added, for example Auto via Cursor. Machine bills these turns at $0. Each step runs Cursor's own harness, which uses about 20–40k input tokens of your Cursor plan. Turns go to Cursor under your Cursor account's privacy settings. Turn on Privacy Mode in Cursor if you do not want Cursor to train on them.
How auto picks a model
Set no model, and Machine resolves one through five layers, in order. (The
id auto covers this same behavior, but it is not yet a selectable option
in the model picker.)
- An explicit pin — a session, channel, or trigger's own
model:field. - The agent's default for this project.
- The project's default.
- The account's default.
- The platform default.
Machine uses the first layer that has a value it can still serve. A saved
default that stops working — a disconnected key, a retired model — is
skipped automatically. A session never dies from a stale default. See the
manifest reference for the trigger model:
field.
Connected providers use zero Machine credits
Machine sends BYOK requests only through your connected provider credentials. Machine records token usage for observability but applies zero markup and deducts zero Machine credits. If your provider returns a rate-limit, quota, or billing error, the request fails with that provider error instead of silently switching to a managed model.
Reasoning effort
The effort control in the composer saves a reasoning effort for the selected model on this project. Machine sends that saved effort with every request to that model.
The saved effort wins over the request. If you call the gateway directly
and send reasoning_effort (or reasoning.effort), a saved effort for that
model replaces your value. With no saved effort, your value is used. Either
way, Machine clamps the effort to the levels the model publishes. Temperature,
top_p, and max tokens work the other way round: a value in the request wins
over the saved one.
To see what a request really sent, open Settings → Models → Logs and pick
the request. Its Reasoning effort row shows the effort that was requested,
whether it came from the request or the project setting, and what was sent.
For example, max requested · not sent (the model has no such level) means
the model has no max level, so no effort went upstream. Requests logged
before this row existed show nothing.
Per-project model enablement
The project controls which models its pickers offer. By default, the newest model of each family is offered automatically. Machine-managed models and any model your project's defaults or routing policy reference are always offered — a guard never prunes them.
You can override the default for individual models in Settings → Models → Models, or from the Manage models button in the model picker. An exception is stored per project and takes effect immediately. The session model picker and the command palette hide anything you turn off; new models stay on by default as the catalog grows.
Enablement governs what is offered, not what is served: a request that names a disabled model outright (for example through the raw API) still runs. The project's default model cannot be turned off — set a different default first.
Shared, not private, keys
A connected provider key applies to the whole project. There is no private,
per-user key — setting a personal override for a provider key fails with a
llm_credentials_project_wide error. Update the shared key on the
secrets page instead.
Plan connections work differently. A Cursor connection belongs to the person who connected it, and a Claude subscription login lives in each session's own workspace.
Machine-managed models
These are the managed models in Machine's built-in catalog, grouped by tier.
Use the id in a model: field or an API request. Machine routes every managed
model through OpenRouter and bills it to your Machine credits. The model
picker is the live view: a deployment can change the list, and your project's
enablement settings can hide models from the picker.
When nothing else sets a model, the built-in platform default is Claude Haiku
4.5 (claude-haiku-4.5). A deployment can set a different platform default.
| Model | Id | Tier | Context | Images |
|---|---|---|---|---|
| Claude Fable 5 | claude-fable-5 | Flagship | 1M | Yes |
| Claude Fable 5.1 | claude-fable-5.1 | Flagship | 1M | Yes |
| Claude Opus 4.8 | claude-opus-4.8 | Flagship | 1M | Yes |
| Claude Opus 5 | claude-opus-5 | Flagship | 1M | Yes |
| Claude Opus 5.5 | claude-opus-5.5 | Flagship | 1M | Yes |
| Gemini 4 Argon | gemini-4-argon | Flagship | 1M | Yes |
| GLM 5.3 | glm-5.3 | Flagship | 1M | No |
| GLM 5.3 Prime | glm-5.3-prime | Flagship | 1M | No |
| GPT-5.5 Pro | gpt-5.5-pro | Flagship | 922k | Yes |
| GPT-5.6 Sol | gpt-5.6-sol | Flagship | 1.05M | Yes |
| GPT-5.6 Sol Pro | gpt-5.6-sol-pro | Flagship | 1.05M | Yes |
| GPT-6 Astra | gpt-6-astra | Flagship | 1.05M | Yes |
| GPT-6 Astra Pro | gpt-6-astra-pro | Flagship | 1.05M | Yes |
| GPT-6 Sol | gpt-6-sol | Flagship | 1.05M | Yes |
| GPT-6 Sol Pro | gpt-6-sol-pro | Flagship | 1.05M | Yes |
| GPT-6.1 Sol | gpt-6.1-sol | Flagship | 1.05M | Yes |
| GPT-6.1 Sol Pro | gpt-6.1-sol-pro | Flagship | 1.05M | Yes |
| Grok 4.5 | grok-4.5 | Flagship | 500k | Yes |
| Grok 4.6 | grok-4.6 | Flagship | 500k | Yes |
| Grok 4.7 | grok-4.7 | Flagship | 500k | Yes |
| Inkling | inkling | Flagship | 524k | Yes |
| Kimi K3 | kimi-k3 | Flagship | 1M | Yes |
| Kimi K3.1 Pro | kimi-k3.1-pro | Flagship | 1M | Yes |
| Muse Wonder | muse-wonder | Flagship | 1M | Yes |
| Qwen3.8 Max Prime | qwen3.8-max-prime | Flagship | 1M | Yes |
| Claude Haiku 4.5 | claude-haiku-4.5 | Balanced | 200k | Yes |
| Claude Sonnet 4.6 | claude-sonnet-4.6 | Balanced | 1M | Yes |
| Claude Sonnet 5 | claude-sonnet-5 | Balanced | 1M | Yes |
| Claude Sonnet 5.5 | claude-sonnet-5.5 | Balanced | 1M | Yes |
| DeepSeek V4 Flash | deepseek-v4-flash | Balanced | 1M | No |
| DeepSeek V4 Pro | deepseek-v4-pro | Balanced | 1M | No |
| DeepSeek V4 Pro 0813 | deepseek-v4-pro-0813 | Balanced | 1M | No |
| Gemini 3.1 Pro | gemini-3.1-pro | Balanced | 1M | Yes |
| Gemini 3.5 Flash | gemini-3.5-flash | Balanced | 1M | Yes |
| Gemini 3.6 Flash | gemini-3.6-flash | Balanced | 1M | Yes |
| Gemini 3.7 Flash | gemini-3.7-flash | Balanced | 1M | Yes |
| Gemini 3.8 Flash | gemini-3.8-flash | Balanced | 1M | Yes |
| GLM 5.2 | glm-5.2 | Balanced | 1M | No |
| GPT-5.5 | gpt-5.5 | Balanced | 1.05M | Yes |
| GPT-5.6 Terra | gpt-5.6-terra | Balanced | 1.05M | Yes |
| GPT-5.6 Terra Pro | gpt-5.6-terra-pro | Balanced | 1.05M | Yes |
| GPT-6.1 Terra | gpt-6.1-terra | Balanced | 1.05M | Yes |
| GPT-6.1 Terra Pro | gpt-6.1-terra-pro | Balanced | 1.05M | Yes |
| Grok 4.20 | grok-4.20 | Balanced | 2M | Yes |
| Kimi K2.6 | kimi-k2.6 | Balanced | 262k | Yes |
| MiMo V2.6 Pro | mimo-v2.6-pro | Balanced | 1M | Yes |
| MiMo V2.6 Pro UltraSpeed | mimo-v2.6-pro-ultraspeed | Balanced | 1M | Yes |
| MiniMax M3 | minimax-m3 | Balanced | 1M | Yes |
| Mistral Large 4 | mistral-large-4 | Balanced | 524k | Yes |
| Muse Spark 1.1 | muse-spark-1.1 | Balanced | 1M | Yes |
| Muse Spark 1.2 | muse-spark-1.2 | Balanced | 1M | Yes |
| Muse Spark 1.3 | muse-spark-1.3 | Balanced | 1M | Yes |
| Muse Spark Open | muse-spark-open | Balanced | 1M | Yes |
| Qwen3.7 Max | qwen3.7-max | Balanced | 1M | No |
| Qwen3.8 Max | qwen3.8-max | Balanced | 1M | Yes |
| Claude Haiku 5.5 | claude-haiku-5.5 | Fast | 1M | Yes |
| DeepSeek V4 Flash 0731 | deepseek-v4-flash-0731 | Fast | 1M | No |
| DeepSeek V4.1 Flash 1017 | deepseek-v4.1-flash-1017 | Fast | 1M | Yes |
| Gemini 3.5 Flash Lite | gemini-3.5-flash-lite | Fast | 1M | Yes |
| GLM 5.3 Flash | glm-5.3-flash | Fast | 1M | Yes |
| GLM 5.3 FlashX | glm-5.3-flashx | Fast | 1M | Yes |
| GLM 5.3 FlashX Legal | glm-5.3-flashx-legal | Fast | 1M | Yes |
| GPT-5.6 Luna | gpt-5.6-luna | Fast | 1.05M | Yes |
| GPT-5.6 Luna Pro | gpt-5.6-luna-pro | Fast | 1.05M | Yes |
| GPT-6 Luna | gpt-6-luna | Fast | 1.05M | Yes |
| GPT-6 Luna Pro | gpt-6-luna-pro | Fast | 1.05M | Yes |
| GPT-OSS 20B | gpt-oss-20b | Fast | 131k | No |
| MiMo V2.6 Flash | mimo-v2.6-flash | Fast | 1M | Yes |
| Nemotron 3.5 Super VL | nemotron-3.5-super-vl | Fast | 262k | Yes |
Context is the model's context window in tokens. Images says whether the model accepts image input.
