pi extension: team use Alpha preview
One prepaid balance for the whole team, with spend caps and per-person usage. The pi extension is in alpha. APIs may shift before GA, and the catalog and pricing are still being tuned.
Switchboard keys start with swb_. Create and revoke them in
Switchboard account settings.
The plaintext key is shown once on create, so copy it into your environment immediately.
Each teammate runs under their own end user id, so usage, spend caps, and rate limits apply per person. Register one end user per teammate in Switchboard account settings, or provision them headless with the Admin API, and set each person's controls from their end user page.
Then, on each teammate's machine, install pi and the Switchboard extension:
npm install -g @earendil-works/pi-coding-agent
pi install https://github.com/Valni-Labs/pi-switchboard
Set SWITCHBOARD_API_KEY in your environment, then:
export SWITCHBOARD_API_KEY=swb_...
export SWITCHBOARD_END_USER_ID=their-own-id
pi --provider switchboard --model claude-sonnet-5 "Say hi" The application key is shared across the team; the end user id is not: each person exports their own, and every request books to their per-person ledger.
Your swb_ key is a server-side credential. Your teammates'
own shells on their own machines are its intended home; never embed the
key or this extension in anything you distribute outside the team.
One endpoint serves every model in the catalog:
curl https://switchboard.valni.app/v1/switchboard/inference \
-H "Authorization: Bearer $SWITCHBOARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-5",
"messages": [{"role": "user", "content": "Hello, Switchboard."}],
"user": "end-user-id"
}' Pass any catalog model ID. Switchboard handles upstream routing, retries on 429, and failover across provider keys.
claude-sonnet-5: frontier general-purposeclaude-opus-4-8: frontier agent / long-formgpt-5.5: frontier general-purposedeepseek-v4-flash: baseline, cheapestkimi-k2.6: long-context
The full live catalog is one call away: client.models() in the SDK, or
GET /v1/switchboard/models with your key.