Install to launched agent, end to end. Five minutes, tops.
brew install spinloop-ai/tap/spinloop(Or build from source: go build -o spinloop ./cmd/spinloop.)
spinloop listThat's the catalogue: every provider, the API key it needs (if any), and which harnesses support it.
Need a model id to go with a provider? Add --models and spinloop asks the
provider's own endpoint what it currently serves:
spinloop list --models openrouterPick a provider and model. For a hosted one, drop the key in a .env or
export it first:
echo 'DEEPSEEK_API_KEY=sk-or-v1-...' > .env
spinloop add -p openrouter -m deepseek/deepseek-v4-flashOr go local — no key needed:
spinloop add -p ollama -m llama3.2Your agent's existing config survives — spinloop merges the provider in,
touching nothing else.
spinloop harnessThat launches the agent (opencode by default) running the model you picked.
Prefer Pi? spinloop harness --set pi once, and every command targets it from
then on.
Commit the selection to a file instead of remembering flags. Drop a Spinloop
in your project:
# Spinloop
PROVIDER openrouter
MODEL deepseek/deepseek-v4-proThen:
spinloop apply # apply it to the agent
spinloop harness -O # ...or apply and launch in one goAlready set up by hand? Capture it: spinloop export > Spinloop.
If the model runs on llama.cpp, the same file launches the server:
# Spinloop
PROVIDER llamacpp
MODEL unsloth/Qwen3.6-35B-A3B-GGUF:UD-Q4_K_XL
ALIAS qwen3.6
CONTEXT 32768spinloop serve # runs llama-server for it
spinloop apply # points the agent at itspinloop alias # registers ./Spinloop under its own ALIAS
spinloop apply qwen3.6 # now the name works anywhere a path does
spinloop harness qwen3.6Wearing one all day? export SPINLOOP_ALIAS=qwen3.6 and every command that names
no Spinloop uses it — see spinloop alias.
- The
Spinloopfile — full syntax - Command reference — a page per command
- Examples — ready-to-apply Spinloops, with walkthroughs