Authentication

Slo works with four model providers. You sign in the first time you launch it, and you can add or switch providers any time with /auth.

ProviderHow you sign inModel after sign-in
OpenAIBrowser, device code, or API keygpt-5.4
AnthropicBrowser or API keyclaude-opus-4-8-1m-context
Kimi For CodingAPI keykimi-for-coding
OpenRouterAPI keyPick one with /model

You can be signed in to all of them at once. /model shows which models you can use, and marks the rest requires /auth.

OpenAI

Pick OpenAI in the sign-in screen, then one of:

  • Browser. Slo opens your browser and listens on localhost:1455 for the result.
  • Device code. Sign in from your phone or laptop while Slo runs somewhere else. See Device code sign-in.
  • API key. Paste a key from platform.openai.com. Usage is billed at API rates.

The GPT-6 models (gpt-6-luna, gpt-6-sol, gpt-6.1-sol) work with both a ChatGPT sign-in and an API key.

Device code sign-in

Use this when Slo runs on a machine with no browser: a remote server, a container, or a box you reach over SSH.

  1. Run /auth, pick OpenAI, then Device code.
  2. Slo shows a web address and a short code.
  3. Open the address on any device with a browser, sign in to OpenAI and enter the code.
  4. Slo notices the approval on its own and finishes signing in. There's nothing to paste back.

If you wait too long, the code expires. Start again with /auth. Device code sign-in is available for OpenAI only.

Anthropic

Pick Anthropic, then:

  • Browser. Slo opens your browser and listens on localhost:53692 for the result.
  • API key. Paste a key from console.anthropic.com.

Claude.ai Pro and Team subscriptions do not work with Slo. Slo needs the Anthropic API with usage-based billing. An Anthropic account with API credits works. A Claude.ai subscription on its own does not.

Kimi For Coding

Pick Kimi For Coding and paste your API key. There's no browser option.

OpenRouter

Pick OpenRouter and paste an API key from openrouter.ai. Slo checks the key with OpenRouter before saving it. Then run /model refresh to load the models your key can use. See OpenRouter for picking a model.

If the browser sign-in stalls

On a machine where the browser can't reach localhost, Slo lets you paste the response by hand. You have 15 minutes to do it. The automatic callback waits 60 seconds, which you can raise with SLO_OAUTH_TIMEOUT_SECONDS.

Using API keys from the environment

Environment variables are handy on CI or when you'd rather not store keys on disk. Slo uses the first of these it finds, before any saved sign-in:

ProviderVariables, in the order Slo checks them
OpenAIOPENAI_API_KEY, then SLO_OPENAI_API_KEY
AnthropicANTHROPIC_API_KEY, then SLO_ANTHROPIC_API_KEY
Kimi For CodingKIMI_FOR_CODING_API_KEY, then SLO_KIMI_FOR_CODING_API_KEY
OpenRouterSLO_OPENROUTER_API_KEY

For Anthropic only, if nothing else is found, Slo also checks ~/.claude/.credentials.json.

Where credentials are stored

Saved sign-ins live in files readable only by you:

~/.slo/global/authentication.json                        OpenAI, Anthropic, Kimi For Coding
~/.slo/global/authentication.additional-providers.json   OpenRouter

OpenRouter has its own file so an older Slo version can still read authentication.json if you roll back.

Set SLO_AUTH_FILE to use a different file, or SLO_HOME to move the whole ~/.slo folder. Browser sign-ins refresh themselves shortly before they expire.

Switching or signing out

  • To add or switch a provider, run /auth.
  • To start over, delete ~/.slo/global/authentication.json (and authentication.additional-providers.json for OpenRouter). Slo asks you to sign in on the next launch.

There's no separate slo auth command. Sign-in happens inside the TUI.