pi
pi connects as a custom provider: one entry in ~/.pi/agent/models.json with our base URL, your key and the model. This page is for pi, the terminal coding agent from pi.dev, published on npm as @earendil-works/pi-coding-agent.
- Base URL
https://api.creeksidecompute.ai/v1- API
- OpenAI Chat Completions
- Model id
qwen/qwen3.8-27b, orqwen/qwen3.6-35b-a3bfor speed, ormeta/muse-glimmer-30b, which always reasons first- Context window
- 131072 tokens, up to 65536 of them output
- Key
- Make one at creeksidecompute.ai/account
Set it up
Make a key. Sign in at creeksidecompute.ai/account with your email and make a key. Each request is paid from prepaid credit: top up by card from $10, or redeem a promotional code.
Put the key in an environment variable. Add this line to your shell profile (for example
~/.zshrc), then open a new terminal:shellexport CREEKSIDE_API_KEY=<your key>Add the provider. Put this in
~/.pi/agent/models.json:~/.pi/agent/models.json{ "$schema": "https://pi.dev/schemas/models.schema.json", "providers": { "creekside": { "name": "Creekside", "baseUrl": "https://api.creeksidecompute.ai/v1", "api": "openai-completions", "apiKey": "$CREEKSIDE_API_KEY", "compat": { "supportsDeveloperRole": false }, "models": [ { "id": "qwen/qwen3.8-27b", "name": "Qwen3.8 27B", "reasoning": true, "thinkingLevelMap": { "minimal": null }, "input": ["text"], "contextWindow": 131072, "maxTokens": 65536 }, { "id": "qwen/qwen3.6-35b-a3b", "name": "Qwen3.6 35B A3B", "reasoning": true, "thinkingLevelMap": { "minimal": null }, "input": ["text"], "contextWindow": 131072, "maxTokens": 65536 }, { "id": "meta/muse-glimmer-30b", "name": "Muse Glimmer 30B", "reasoning": true, "input": ["text", "image"], "contextWindow": 131072, "maxTokens": 65536 } ] } } }"$CREEKSIDE_API_KEY"reads the key from the environment; without the$, pi would send the text itself as the key.supportsDeveloperRole: falsesends pi's instructions as an ordinary system message. pi reloads the file when you open the model selector.Pick the model. Start pi with
pi --model creekside/qwen/qwen3.8-27b, or press ctrl+l to choose it and ctrl+s to keep it as the default. To run one prompt and exit:pi --model creekside/qwen/qwen3.8-27b -p "Summarise this repository". For speed, usecreekside/qwen/qwen3.6-35b-a3binstead, and for Muse Glimmer 30B,creekside/meta/muse-glimmer-30b.
Thinking
pi starts at its medium thinking level, so with this entry the model thinks unless you turn it off. Press shift+tab to cycle through off, low, medium and high, or start pi with --thinking off. To start with thinking off every time, add "defaultThinkingLevel": "off" to ~/.pi/agent/settings.json.
pi sends the level as reasoning_effort; at off it sends nothing, and the model answers directly. "minimal": null hides pi's minimal level, which the Qwen models treat as off. Thinking tokens are billed as output.
Muse Glimmer 30B always reasons before it answers, so pi's levels set how long, not whether: at off, minimal or low it reasons briefly, and medium, where pi starts, and high make it reason longer.
What does not work
- Images, on the Qwen models. They are listed for text only, which is what their entries'
"input": ["text"]tells pi. Muse Glimmer 30B reads images, so its entry lists"image"too. - Model discovery. pi does not read
/v1/models; it lists only the models inmodels.json. - Cost display. Without a
costblock pi shows the cost as zero. Your bill uses the prices inGET /v1/models. - A
:thinkingmodel id. pi reads a colon in--modelas a thinking level, so use the thinking levels above instead.
Troubleshooting
401invalid API key- The key is wrong, or pi did not get it. Set
CREEKSIDE_API_KEYin the shell that starts pi, and restart pi after you change it. To test the key alone,curl -s https://api.creeksidecompute.ai/v1/models -H "Authorization: Bearer $CREEKSIDE_API_KEY"returns the model list when the key is good. 404model … is not served- The model id is wrong. Use
qwen/qwen3.8-27bexactly, in lower case, with theqwen/prefix.GET /v1/modelslists every id we serve. With--model, writecreekside/qwen/qwen3.8-27b: the provider, then the id. 400maximum context length is 131072 tokens- The conversation is longer than the model's window. Keep
contextWindowat 131072 so pi compacts in time, then run/compactor start a new session. 402or429- A
402means your prepaid credit does not cover the request: add credit at creeksidecompute.ai/account. A429means the key's rate, or the number of requests your account may run at once, is used up; agents that work in parallel reach that sooner. Wait and retry. The API reference lists the limits.
Other tools
Sources, read on 2026-10-11: models and providers, settings, keybindings.