pi-auto
<div align="center"> <img src="logo.png" alt="Pi Cursor Provider" width="400" /> </div>
   
pi-auto is a Pi package that provides the pi-auto MCP server and a Skill for pi-coding-agent: usage data from @ccusage/pi and tools to switch the active provider by strategy — load-balancing (equalize usage across backends) or high-availability (fixed priority order).
---
Prerequisites
Install the following (globally) before using pi-auto:
| Dependency | Description | |------------|-------------| | Pi Coding Agent | Pi CLI and coding agent (required for pi and extensions). | | @ccusage/pi | Pi-agent usage tracking; used by the MCP server for usage data. | | Alias ccusage | Shortcut to run @ccusage/pi (see bash below). | | pi-mcp-adapter | MCP adapter for Pi (required to run MCP servers). | | @netandreus/pi-cursor-provider | Cursor provider for Pi (optional; for CursorAI backend in usage/strategy). |
Example: install all globally and set the ccusage alias
# 1. Pi Coding Agent
npm install -g @mariozechner/pi-coding-agent
# 2. Usage tracking (for pi-auto)
npm install -g @ccusage/pi
# 3. Alias for ccusage (pick one: bash or zsh)
echo "alias ccusage='npx @ccusage/pi@latest'" >> ~/.bashrc
# echo "alias ccusage='npx @ccusage/pi@latest'" >> ~/.zshrc
# 4. Pi MCP adapter (run after Pi is installed)
pi install npm:pi-mcp-adapter
# 5. Cursor provider for Pi (optional)
pi install npm:@netandreus/pi-cursor-provider
Then reload your shell (e.g. source ~/.bashrc or source ~/.zshrc) so ccusage is available.
---
Install (Pi)
Prerequisite: Install the MCP adapter in Pi so it can run MCP servers:
pi install npm:pi-mcp-adapter
Install the pi-auto package (Skill is loaded automatically):
pi install npm:@netandreus/pi-auto
Or from git:
pi install git:github.com/netandreus/pi-auto
MCP config: Add the MCP server to pi’s config so the agent can call the tools.
~/.pi/agent/mcp.json (or your pi MCP config path):
If you installed via pi install npm:@netandreus/pi-auto, pi uses global npm; point to the installed package. Using the binary name (after a global npm install of the package):
{
"mcpServers": {
"pi-auto": {
"command": "pi-auto-mcp",
"lifecycle": "keep-alive",
"directTools": true
}
}
}
Or with explicit path (replace GLOBAL_NPM_ROOT with the output of npm root -g):
{
"mcpServers": {
"pi-auto": {
"command": "node",
"args": ["GLOBAL_NPM_ROOT/@netandreus/pi-auto/dist/index.js"],
"lifecycle": "keep-alive",
"directTools": true
}
}
}
Exposed tools: mcp_pi-auto_pi_get_usage, mcp_pi-auto_pi_suggest_provider, mcp_pi-auto_pi_set_provider, mcp_pi-auto_pi_get_provider, mcp_pi-auto_pi_get_strategy, mcp_pi-auto_pi_set_strategy, mcp_pi-auto_pi_get_priority, mcp_pi-auto_pi_set_priority.
Skill: The Skill is loaded automatically when the package is installed. Invoke with /skill:pi-auto or ask about usage, balancing cost, or switching provider.
---
MCP in Cursor Agent
To use the pi-auto MCP server from Cursor Agent (not only from Pi), connect the server, enable it, and allow its tools.
1. Connect MCP server to agent
Add the pi-auto MCP server to Cursor’s MCP config (e.g. ~/.cursor/mcp.json):
{
"mcpServers": {
"pi-auto": {
"command": "pi-auto-mcp",
"lifecycle": "keep-alive",
"directTools": true
}
}
}
2. Enable the MCP server
The server may appear as “not loaded (needs approval)”. Enable and approve it:
agent mcp list
# pi-auto: not loaded (needs approval)
agent mcp enable pi-auto
# ✓ Enabled and approved MCP server: pi-auto
Check that tools are available:
agent mcp list-tools pi-auto
# Tools for pi-auto (8):
# - pi_get_priority ()
# - pi_get_provider (scope, projectPath)
# - pi_get_strategy ()
# - pi_get_usage (period)
# - pi_set_priority (priority)
# - pi_set_provider (provider, model, scope, projectPath)
# - pi_set_strategy (strategy)
# - pi_suggest_provider (period)
3. Allow tools from this MCP
Ensure Cursor Agent is allowed to call pi-auto MCP tools. In ~/.cursor/cli-config.json, under permissions.allow, include:
"permissions": {
"allow": [
"Shell(ls)",
"Mcp(pi-auto:*)"
],
"deny": []
}
---
Features
| Tool | Description | |------|-------------| | pi_get_usage | Current usage (tokens/cost) per backend (Claude Code, OpenAI Codex, CursorAI) for a given period (e.g. daily). | | pi_suggest_provider | Recommends provider and model based on current strategy and priority. | | pi_set_provider | Writes pi’s defaultProvider and defaultModel (global or project scope). | | pi_get_provider | Reads current pi default provider and model. | | pi_get_strategy / pi_set_strategy | Get or set strategy: load-balancing or high-availability. | | pi_get_priority / pi_set_priority | Get or set the HA priority order (e.g. ["codex", "claude-code", "cursorai"]). |
---
Configuration
Requirements: Node 18+, and (for usage data) @ccusage/pi available via npx.
Environment
| Variable | Description | |----------|-------------| | PI_AGENT_DIR | Override pi-agent sessions directory (used when calling @ccusage/pi; default: ~/.pi/agent/sessions). | | CCUSAGE_MCP_SETTINGS_PATH | Override path to pi’s global settings file (default: ~/.pi/agent/settings.json). |
Server config
Strategy and priority are stored in ~/.pi/agent/pi-auto.json.
Example:
{
"strategy": "load-balancing",
"priority": ["codex", "claude-code", "cursorai"],
"defaultModels": {
"claude-code": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
"codex": { "provider": "openai", "model": "gpt-4o" },
"cursorai": { "provider": "cursor", "model": "auto" }
}
}
| Field | Description | |-------|-------------| | strategy | "load-balancing" (default) or "high-availability". | | priority | Ordered list of backend ids for HA; first is preferred. Valid ids: claude-code, codex, cursorai. | | defaultModels | Optional overrides for provider/model per backend (must match your installed pi providers). |
---
Usage strategies
- Load-balancing —
pi_suggest_providerpicks the backend with the lowest current usage (total tokens). Usepi_get_usageto see per-backend totals; then callpi_suggest_providerand optionallypi_set_providerto switch. - High-availability —
pi_suggest_providerreturns the first backend inpriority(and its default model). Usepi_set_priorityto change the order (e.g. prefer Codex, then Claude, then CursorAI).
When you need to balance cost or ensure a preferred provider, use the pi-auto tools: get/set strategy and priority, get current provider, get usage, suggest a provider, and set it with pi_set_provider.
---
Backend mapping
Usage from @ccusage/pi (with --json --breakdown) is mapped to three backends:
| Backend | Source | |---------|--------| | Claude Code | anthropic / claude- models | | OpenAI Codex | openai / gpt- models | | CursorAI | cursor (e.g. @netandreus/pi-cursor-provider) |
You can override mapping and default models in ~/.pi/agent/pi-auto.json if your setup differs.
---
Publishing (npm)
To publish to npmjs.com:
- Log in:
npm login(use an account with access to the@netandreusscope). - Bump version in
package.json(e.g.0.1.0→0.1.1). - Build and publish:
npm publish (runs prepublishOnly → yarn build, then publishes; scoped package is published as public via publishConfig.access.)
To see what will be included: npm pack --dry-run.
---






