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:~/.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
- Environment variable for that provider
- Key saved in
auth.json
Custom endpoints
- Display name
- Base URL, including the version path (
http://localhost:11434/v1) - API key (optional — local servers often need none)
settings.json under providers. A repository’s .loop/settings.json cannot add an endpoint. Models are discovered from /v1/models.
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).