Models and providers

Milo never swaps the active model behind your back. You choose the model and the OpenAI-compatible endpoint that serves it.

Choose a model

Type /model in the interactive app to search the active provider’s model catalogue. Milo remembers the selected id for the next session. You can also set it directly:

/model anthropic/claude-sonnet-4.5
  • Interactive — use /model or /model <id>.
  • Headless — pass --model <id> to milo run or milo rpc.
  • Reasoning — use /thinking to select default, off, low, medium, or high.

Choose an endpoint

OpenRouter is the default. Milo also knows OpenAI, Groq, DeepSeek, Mistral, Together AI, Cerebras, xAI, and a local endpoint. List them or save a different default from the shell:

$ milo providers
$ milo providers use groq

Custom endpoints

Set MILO_BASE_URL for any server that implements OpenAI’s /chat/completions API. For a one-run named override, set MILO_PROVIDER.

OpenRouter routing

When OpenRouter is active, /provider controls which OpenRouter backends may serve the selected model. This changes the serving provider, not the model id.

$ milo run --model anthropic/claude-sonnet-4.5 "review this change"

Cost reporting

Only OpenRouter reports per-call cost to Milo. Other endpoints show cost as unknown, and --cost-limit is unavailable there.

Privacy

Shell commands and file edits happen locally. Milo sends the active conversation — including code and command output it has read — to the model endpoint you selected. API keys come from the environment, the OS keychain, or Milo’s local credentials file.