Overview

Every provider speaks an OpenAI-compatible chat API. Connect more than one and switch with /model or provider/model. Built-in presets need only an API key. Anything else — Together, Groq, vLLM, Ollama, LM Studio — is a custom endpoint.

Presets

Soket is listed first in /model. Its catalog refreshes from GET /v1/models and is cached in models-store.json. Until that listing succeeds, Soket shows a small seed list that includes qwen3-30b. OpenAI’s listing is filtered to chat models (gpt-, o1, o3, o4, chatgpt-). OpenRouter is the path for Claude, Gemini, Llama, and other families behind one key — for example /model openrouter/anthropic/claude-sonnet-4. Sign up at console.soket.ai and create an API key, then paste it into /login soket or set SOKET_API_KEY. OpenRouter keys are at openrouter.ai/keys. OpenAI keys are at platform.openai.com/api-keys.

Connect a provider

Inside the TUI:
The first run opens this picker automatically when no key is present. Credentials are stored in ~/.loop/agent/auth.json (mode 0600). Headless runs cannot open the picker. Set one of the environment variables above, or log in once from the TUI.

Auth order

  1. Environment variable for that provider
  2. Key saved in auth.json

Custom endpoints

The wizard asks for:
  1. Display name
  2. Base URL, including the version path (http://localhost:11434/v1)
  3. API key (optional — local servers often need none)
The entry is saved in global settings.json under providers. A repository’s .loop/settings.json cannot add an endpoint. Models are discovered from /v1/models.
The id is a slug of the name you typed.

Hand-written models.json

~/.loop/agent/models.json is for providers you want to pin without the wizard. An entry is loaded only when models is non-empty. Those ids are always listed and win over a catalog entry with the same id.
Prefer /login custom when you want the live /v1/models catalog instead of a pinned list.

Select a model

Loop starts with the model you pass on the command line, otherwise the one last saved by /model. If neither is set, the TUI asks you to choose. A saved model that has left the catalog is reported; it is not replaced with another model.
Ctrl+L opens the picker. Ctrl+P cycles models matched by enabledModels (configure with /scoped-models).