mirror of
https://github.com/badlogic/pi-mono.git
synced 2026-11-05 23:37:25 +00:00
* docs(coding-agent): improve getting started documentation * docs(coding-agent): correct getting started details * docs(coding-agent): clarify SDK entry point * docs(coding-agent): restructure guides and references * docs(coding-agent): improve getting started guides * docs(coding-agent): refresh integration guides * docs(coding-agent): improve terminal and CLI guides * docs(coding-agent): refresh customisation guides * docs(coding-agent): clarify project trust terminology * docs(coding-agent): simplify customisation guidance * docs(coding-agent): improve runtime and reference guidance * Fix settings reference * feat(coding-agent): add Crowdin documentation sync * docs(coding-agent): separate CLI and slash command references * docs(coding-agent): correct compaction reference * docs(coding-agent): streamline package documentation * docs(coding-agent): split RPC reference documentation * Update configuration docs * Shorten config docs * docs(coding-agent): refine configuration references * docs(coding-agent): streamline settings reference * docs(coding-agent): clarify configuration reference * docs(coding-agent): clarify project trust exception * docs(coding-agent): simplify keybindings reference * docs(coding-agent): remove Crowdin integration * docs(coding-agent): turn themes reference into guide * docs(coding-agent): consolidate model and authentication docs * docs(tui): require Component.invalidate() (fixes #9358) * docs(coding-agent): document offline catalog behavior (fixes #8684) * docs(coding-agent): preserve established documentation routes * docs(coding-agent): reorganize documentation navigation * docs(coding-agent): correct audited behavior Clarify provider, session, local-model, Termux, TUI, SDK, debug, and extension behavior. Simplify the documentation audit to report only clear user-visible contradictions. * docs(coding-agent): fix broken documentation links
187 lines
6.1 KiB
Markdown
187 lines
6.1 KiB
Markdown
# Provider Authentication
|
|
|
|
Most hosted providers support one or both of these authentication methods:
|
|
|
|
- Sign in through a browser or device flow backed by OAuth.
|
|
- Provide an API key.
|
|
|
|
Use `/login [provider]` to see the methods supported by a provider. Amazon Bedrock and Google Vertex AI can also use ambient cloud credentials.
|
|
|
|
## Authenticate interactively
|
|
|
|
Run `/login` and select a provider. Pi guides you through its OAuth or API-key flow and saves the resulting credential in [`auth.json`](configuration.md#agent-directory).
|
|
|
|
On a remote or headless machine, an OAuth callback may not reach the local process. When prompted, paste the final redirect URL or authorization code back into Pi.
|
|
|
|
Run `/logout` and select a provider to remove its stored credential. This does not unset environment variables, remove authentication from `models.json`, or revoke the credential at the provider.
|
|
|
|
`auth.json` can contain API keys and OAuth tokens. Keep it private and do not commit it.
|
|
|
|
Radius authentication uses its gateway catalog and caches refreshed model metadata for later offline startup. A custom Radius gateway configured in `models.json` uses its own catalog rather than inheriting the public `radius.pi.dev` catalog.
|
|
|
|
## Use an API key from the environment
|
|
|
|
Environment variables are useful in CI and anywhere Pi should not store the key. Set the variable before starting Pi:
|
|
|
|
```bash
|
|
export ANTHROPIC_API_KEY=sk-ant-...
|
|
pi
|
|
```
|
|
|
|
This table covers providers with a single primary API-key variable. Providers that need additional configuration or support ambient credentials are covered under [Cloud providers](#cloud-providers).
|
|
|
|
| Provider | Environment variable |
|
|
|---|---|
|
|
| Anthropic | `ANTHROPIC_API_KEY` |
|
|
| Ant Ling | `ANT_LING_API_KEY` |
|
|
| OpenAI | `OPENAI_API_KEY` |
|
|
| DeepSeek | `DEEPSEEK_API_KEY` |
|
|
| NVIDIA NIM | `NVIDIA_API_KEY` |
|
|
| Google Gemini | `GEMINI_API_KEY` |
|
|
| GitHub Copilot | `COPILOT_GITHUB_TOKEN` |
|
|
| Mistral | `MISTRAL_API_KEY` |
|
|
| Groq | `GROQ_API_KEY` |
|
|
| Cerebras | `CEREBRAS_API_KEY` |
|
|
| xAI | `XAI_API_KEY` |
|
|
| OpenRouter | `OPENROUTER_API_KEY` |
|
|
| Vercel AI Gateway | `AI_GATEWAY_API_KEY` |
|
|
| ZAI Coding Plan (Global) | `ZAI_API_KEY` |
|
|
| ZAI Coding Plan (China) | `ZAI_CODING_CN_API_KEY` |
|
|
| OpenCode Zen and Go | `OPENCODE_API_KEY` |
|
|
| Radius | `RADIUS_API_KEY` |
|
|
| Hugging Face | `HF_TOKEN` |
|
|
| Fireworks | `FIREWORKS_API_KEY` |
|
|
| Together AI | `TOGETHER_API_KEY` |
|
|
| Baseten | `BASETEN_API_KEY` |
|
|
| Kimi For Coding | `KIMI_API_KEY` |
|
|
| Meta | `META_API_KEY` |
|
|
| MiniMax | `MINIMAX_API_KEY` |
|
|
| MiniMax (China) | `MINIMAX_CN_API_KEY` |
|
|
| Moonshot AI (Global and China) | `MOONSHOT_API_KEY` |
|
|
| Qwen Token Plan and Individual | `QWEN_TOKEN_PLAN_API_KEY` |
|
|
| Qwen Token Plan (China) | `QWEN_TOKEN_PLAN_CN_API_KEY` |
|
|
| Xiaomi MiMo | `XIAOMI_API_KEY` |
|
|
| Xiaomi MiMo Token Plan (China) | `XIAOMI_TOKEN_PLAN_CN_API_KEY` |
|
|
| Xiaomi MiMo Token Plan (Amsterdam) | `XIAOMI_TOKEN_PLAN_AMS_API_KEY` |
|
|
| Xiaomi MiMo Token Plan (Singapore) | `XIAOMI_TOKEN_PLAN_SGP_API_KEY` |
|
|
|
|
Anthropic also recognizes `ANTHROPIC_OAUTH_TOKEN` as an API credential and `ANTHROPIC_AUTH_TOKEN` as bearer authentication.
|
|
|
|
## Load an API key from a command
|
|
|
|
To use a secret manager without writing the resolved key to disk, set a provider's `key` in `auth.json` to a command prefixed with `!`:
|
|
|
|
```json
|
|
{
|
|
"anthropic": {
|
|
"type": "api_key",
|
|
"key": "!security find-generic-password -ws 'anthropic'"
|
|
}
|
|
}
|
|
```
|
|
|
|
Pi runs the command when the key is first needed and caches its standard output for the process lifetime. Empty output, a timeout, or a nonzero exit leaves the key unresolved until Pi restarts.
|
|
|
|
## Cloud Providers
|
|
|
|
The providers below need additional settings or can use credentials supplied by their cloud platform.
|
|
|
|
A stored API-key credential can include an `env` object. Its values take priority over the process environment for that provider:
|
|
|
|
```json
|
|
{
|
|
"cloudflare-workers-ai": {
|
|
"type": "api_key",
|
|
"key": "...",
|
|
"env": {
|
|
"CLOUDFLARE_ACCOUNT_ID": "account-id"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Azure OpenAI
|
|
|
|
Set an API key plus either a base URL or resource name:
|
|
|
|
```bash
|
|
export AZURE_OPENAI_API_KEY=...
|
|
export AZURE_OPENAI_BASE_URL=https://your-resource.ai.azure.com
|
|
# Or:
|
|
export AZURE_OPENAI_RESOURCE_NAME=your-resource
|
|
```
|
|
|
|
Resource root URLs under `ai.azure.com`, `cognitiveservices.azure.com`, and `openai.azure.com` are normalized to the OpenAI API path.
|
|
|
|
### Amazon Bedrock
|
|
|
|
Bedrock can use a bearer token or an ambient AWS credential source:
|
|
|
|
```bash
|
|
# Named profile
|
|
export AWS_PROFILE=your-profile
|
|
|
|
# IAM keys
|
|
export AWS_ACCESS_KEY_ID=AKIA...
|
|
export AWS_SECRET_ACCESS_KEY=...
|
|
# Required for temporary credentials
|
|
export AWS_SESSION_TOKEN=...
|
|
|
|
# Bedrock bearer token
|
|
export AWS_BEARER_TOKEN_BEDROCK=...
|
|
|
|
# Region, when not supplied by the profile or AWS SDK configuration
|
|
export AWS_REGION=us-west-2
|
|
# AWS_DEFAULT_REGION is also supported
|
|
```
|
|
|
|
Pi also supports ECS task credentials and IRSA through the standard `AWS_CONTAINER_CREDENTIALS_*` and `AWS_WEB_IDENTITY_TOKEN_FILE` variables.
|
|
|
|
### Cloudflare AI Gateway
|
|
|
|
The gateway requires a token, account ID, and gateway ID:
|
|
|
|
```bash
|
|
export CLOUDFLARE_API_KEY=...
|
|
export CLOUDFLARE_ACCOUNT_ID=...
|
|
export CLOUDFLARE_GATEWAY_ID=...
|
|
```
|
|
|
|
The account and gateway IDs can come from the process environment or the credential's `env` object in `auth.json`.
|
|
|
|
`CLOUDFLARE_API_KEY` authenticates Pi to the gateway. Upstream access can use Cloudflare unified billing, credentials stored in the gateway, or an `Authorization` header configured for the provider in `models.json`.
|
|
|
|
### Cloudflare Workers AI
|
|
|
|
Workers AI requires a token and account ID:
|
|
|
|
```bash
|
|
export CLOUDFLARE_API_KEY=...
|
|
export CLOUDFLARE_ACCOUNT_ID=...
|
|
```
|
|
|
|
The account ID can also be stored in the credential's `env` object.
|
|
|
|
### Google Vertex AI
|
|
|
|
Use a Google Cloud API key:
|
|
|
|
```bash
|
|
export GOOGLE_CLOUD_API_KEY=...
|
|
```
|
|
|
|
To use Application Default Credentials, configure a project and location:
|
|
|
|
```bash
|
|
export GOOGLE_CLOUD_PROJECT=your-project
|
|
# GCLOUD_PROJECT is also supported
|
|
export GOOGLE_CLOUD_LOCATION=us-central1
|
|
```
|
|
|
|
Then authenticate:
|
|
|
|
```bash
|
|
gcloud auth application-default login
|
|
```
|
|
|
|
To use a service-account key file instead, set `GOOGLE_APPLICATION_CREDENTIALS` along with the project and location.
|