Skip to main content

Pi

Pi is an extensible terminal coding harness. Register Aurora as a custom provider in Pi's model configuration.

Select Inference Endpoint
Choose preferred region.

Install and prepare​

Install the coding agent using the Pi installation instructions. With Node.js and npm installed, the current package is:

npm install -g --ignore-scripts @earendil-works/pi-coding-agent
export AURORA_API_TOKEN="<your-token>"

Create the token using Getting started. Check the catalog before choosing a model.

Configure Aurora​

Create ~/.pi/agent/models.json, or merge aurora into its existing providers:

{
"providers": {
"aurora": {
"baseUrl": "",
"api": "openai-completions",
"apiKey": "$AURORA_API_TOKEN",
"authHeader": true,
"models": [
{
"id": "deepseek/deepseek-v4-flash",
"name": "DeepSeek V4 Flash (Aurora)",
"input": ["text"]
}
]
}
}
}

In Pi, openai-completions means Chat Completions, not the legacy text Completions endpoint. baseUrl already ends in /v1. $AURORA_API_TOKEN resolves the environment variable; the bare string AURORA_API_TOKEN is a literal in current Pi versions.

The minimal model entry uses Pi's default token budgets. For longer sessions, set contextWindow and maxTokens to the selected model's verified limits. Only enable reasoning or image capabilities after checking model support. Omitted local cost metadata does not mean Aurora requests are free.

Start and verify​

Run from a project directory:

pi --provider aurora --model deepseek/deepseek-v4-flash

Ask:

Read README.md and summarize the project in three bullets. Do not edit files.

Expect a read-tool result followed by a streamed summary. Substitute an existing text file if needed. Use /model to select another configured model; Pi reloads models.json when opening the picker.

For a one-shot text check:

pi --provider aurora --model deepseek/deepseek-v4-flash -p "Say hello in one sentence."

Troubleshooting​

  • Model absent: Verify valid JSON and that the exported token is visible to Pi. Custom models without resolved authentication can remain unavailable.
  • Requests go to /responses: Change api to openai-completions.
  • An optional parameter is rejected: Pi exposes per-provider/model compat settings. Adjust only the field identified by the error, using the upstream reference; do not copy another provider's reasoning options blindly.
  • Summary succeeds but tools fail: Check model tool support and the tool result itself; authentication alone does not verify an agent's full tool loop.

See shared troubleshooting and Pi's custom models reference.