Choose a provider
octo speaks two wire protocols natively — Anthropic Messages and OpenAI Chat Completions — so “which provider” really means “which of the two protocols does it speak.”
export ANTHROPIC_API_KEY=sk-ant-...octo --provider anthropic --model claude-sonnet-5 "..."export OPENAI_API_KEY=sk-...octo --provider openai --model gpt-4o-mini "..."DeepSeek, Bailian, and other OpenAI-compatible APIs use the same protocol.
Self-hosted and third-party endpoints (vLLM, OpenRouter, a proxy) use the custom vendor — the
only one that takes a custom base URL. Its wire protocol (openai | anthropic) is chosen per
config entry, so set it up once with octo config (choose Custom → pick the protocol → enter
base URL + model):
CUSTOM_BASE_URL=https://api.deepseek.com/anthropic \CUSTOM_API_KEY=sk-... \ octo --model deepseek-chat "..."Save it as your default
Section titled “Save it as your default”octo config # interactive wizardocto config show # print the effective settings + where each came fromocto config path # print the file locationocto config writes your default provider, model, (optionally) base URL, and reasoning settings to
~/.octo/config.yml, so a bare octo works without re-typing --provider/--model every time.
Extended reasoning
Section titled “Extended reasoning”Reasoning models can deliberate before answering. Two knobs control it, both available as CLI flags
and as octo config defaults:
--reasoning-effort low|medium|high|xhigh|max— the intensity. OpenAI-protocol backends receive it asreasoning_effort; Anthropic-protocol backends map it to adaptive thinking / an extended-thinking token budget, normalized per model family. Empty (the default) means off.--show-reasoning(default off) — surface the reasoning/thinking trace for the Web UI (octo serve) to display. The terminal never renders the trace either way.
This unifies Anthropic thinking blocks and OpenAI reasoning_content behind one pair of controls.
Next: see the full schema in the config file reference.