Skip to main content
Pi is a minimal, extensible terminal coding agent. It supports custom providers via ~/.pi/agent/models.json, making it straightforward to route through Portkey’s AI Gateway. With Portkey, you get full observability, cost tracking, budget controls, and access to any model from 200+ providers — all without changing how you use Pi.

Quick start

1

Add a provider in Portkey

Go to AI Providers → Add Provider → select your LLM provider (e.g., OpenAI, Anthropic, Google).Enter your provider API key and create a slug like openai-prod or anthropic-prod.
2

Get your Portkey API key

Go to API Keys → Generate a new key.
3

Configure Pi

Edit ~/.pi/agent/models.json (create it if it doesn’t exist):
{
  "providers": {
    "portkey": {
      "api": "openai-completions",
      "baseUrl": "https://api.portkey.ai/v1",
      "apiKey": "YOUR_PORTKEY_API_KEY",
      "models": [
        {
          "id": "@openai-prod/gpt-4o",
          "name": "GPT-4o via Portkey"
        }
      ]
    }
  }
}
Replace:
  • YOUR_PORTKEY_API_KEY with your Portkey API key
  • @openai-prod with your provider slug
  • gpt-4o with the model you want to use
The model id format is @<provider-slug>/<model-name> — this maps directly to a provider integration in your Portkey workspace.
4

Start Pi with Portkey

pi --provider portkey --model gpt-4o
Or use the model selector inside Pi with Ctrl+L and pick your Portkey model.
All Pi requests now route through Portkey. Monitor usage, costs, and traces in the Portkey Dashboard.

Add multiple models

Add as many models as you need under the models array. Pi lets you cycle through them with Ctrl+P:
{
  "providers": {
    "portkey": {
      "api": "openai-completions",
      "baseUrl": "https://api.portkey.ai/v1",
      "apiKey": "YOUR_PORTKEY_API_KEY",
      "models": [
        {
          "id": "@openai-prod/gpt-4o",
          "name": "GPT-4o"
        },
        {
          "id": "@anthropic-prod/claude-sonnet-4-20250514",
          "name": "Claude Sonnet 4"
        },
        {
          "id": "@gemini-prod/gemini-2.5-pro",
          "name": "Gemini 2.5 Pro"
        }
      ]
    }
  }
}
Each model id maps to a different provider integration in Portkey. Switch providers without managing separate API keys in Pi.

Trace requests

Add trace IDs to group and debug requests in the Portkey Dashboard. Create a Portkey Config with metadata and attach it to a scoped API key:
1

Create a Config with metadata

Go to Configs → Create Config:
{
  "provider": "@openai-prod",
  "metadata": {
    "environment": "development",
    "agent": "pi"
  }
}
Save and copy the Config ID.
2

Create a scoped API key with the Config

Go to API Keys → Create Key → attach your Config ID under Advanced Settings.
3

Use the scoped key in Pi

{
  "providers": {
    "portkey": {
      "api": "openai-completions",
      "baseUrl": "https://api.portkey.ai/v1",
      "apiKey": "YOUR_SCOPED_PORTKEY_KEY",
      "models": [
        {
          "id": "gpt-4o",
          "name": "GPT-4o"
        }
      ]
    }
  }
}
Use trace metadata to:
  • Group all requests from a coding session
  • Debug issues by filtering logs by environment or agent
  • Track usage per project or task

Advanced configuration

All advanced routing is configured through Portkey Configs, then attached to a scoped API key used as apiKey in models.json. Pi passes the key as a Bearer token — Portkey applies the routing logic server-side.

Fallbacks

Route to backup providers when the primary fails. Create a config with fallback targets:
{
  "strategy": { "mode": "fallback" },
  "targets": [
    { "provider": "@openai-prod" },
    { "provider": "@anthropic-prod" },
    { "provider": "@bedrock-prod" }
  ]
}

Load balancing

Distribute requests across multiple API keys or providers:
{
  "strategy": { "mode": "loadbalance" },
  "targets": [
    { "provider": "@openai-key-1", "weight": 0.5 },
    { "provider": "@openai-key-2", "weight": 0.5 }
  ]
}

Caching

Reduce costs and latency for repeated queries:
{
  "provider": "@openai-prod",
  "cache": { "mode": "simple" }
}

Retries

Automatically retry failed requests:
{
  "provider": "@openai-prod",
  "retry": { "attempts": 3, "on_status_codes": [429, 500, 502, 503] }
}

Budget limits

Set spending controls at the provider level to prevent runaway costs from long coding sessions:
  1. Go to AI Providers → select your provider
  2. Click Budget & Limits
  3. Configure:
    • Cost limit: Maximum spend (e.g., $100/month)
    • Token limit: Maximum tokens (e.g., 5M tokens/week)
    • Rate limit: Requests per minute
Budget limits prevent runaway costs from agentic coding sessions.

Complete example

Full ~/.pi/agent/models.json with multiple providers and a scoped key that applies fallback + retry logic:
{
  "providers": {
    "portkey": {
      "api": "openai-completions",
      "baseUrl": "https://api.portkey.ai/v1",
      "apiKey": "YOUR_SCOPED_PORTKEY_KEY",
      "models": [
        {
          "id": "gpt-4o",
          "name": "GPT-4o (with fallback)"
        },
        {
          "id": "@anthropic-prod/claude-sonnet-4-20250514",
          "name": "Claude Sonnet 4"
        },
        {
          "id": "@gemini-prod/gemini-2.5-pro",
          "name": "Gemini 2.5 Pro"
        }
      ]
    }
  }
}
Corresponding Portkey Config attached to the scoped key:
{
  "strategy": { "mode": "fallback" },
  "targets": [
    { "provider": "@openai-prod" },
    { "provider": "@anthropic-prod" }
  ],
  "cache": { "mode": "simple" },
  "retry": { "attempts": 3, "on_status_codes": [429, 500, 502, 503] },
  "metadata": {
    "agent": "pi",
    "environment": "production"
  }
}

Troubleshooting

Requests not appearing in Portkey logs

Cause: Pi may not be using the configured provider. Fix:
  1. Verify ~/.pi/agent/models.json is valid JSON — run cat ~/.pi/agent/models.json to check
  2. Start Pi with --provider portkey explicitly
  3. Confirm baseUrl is https://api.portkey.ai/v1 (with /v1)
  4. Check that apiKey matches your Portkey API key

Model not found error

Cause: The model id doesn’t match a valid provider slug and model in your Portkey workspace. Fix: Go to AI Providers, confirm the provider slug, and verify the model name is supported by that provider.

Pi version issues

Cause: Older versions of Pi may not support the models.json custom provider format. Fix: Update to the latest version:
npm update -g @mariozechner/pi-coding-agent

3. Set Up Enterprise Governance

Why Enterprise Governance?
  • Cost Management: Controlling and tracking AI spending across teams
  • Access Control: Managing team access and workspaces
  • Usage Analytics: Understanding how AI is being used across the organization
  • Security & Compliance: Maintaining enterprise security standards
  • Reliability: Ensuring consistent service across all users
  • Model Management: Managing what models are being used in your setup
Portkey adds a comprehensive governance layer to address these enterprise needs. Enterprise Implementation Guide

Step 1: Implement Budget Controls & Rate Limits

Model Catalog enables you to have granular control over LLM access at the team/department level. This helps you:
  • Set up budget limits
  • Prevent unexpected usage spikes using Rate limits
  • Track departmental spending

Setting Up Department-Specific Controls:

  1. Navigate to Model Catalog in Portkey dashboard
  2. Create new Provider for each engineering team with budget limits and rate limits
  3. Configure department-specific limits

Step 2: Define Model Access Rules

As your AI usage scales, controlling which teams can access specific models becomes crucial. You can simply manage AI models in your org by provisioning model at the top integration level.
Portkey allows you to control your routing logic very simply with it’s Configs feature. Portkey Configs provide this control layer with things like:
  • Data Protection: Implement guardrails for sensitive code and data
  • Reliability Controls: Add fallbacks, load-balance, retry and smart conditional routing logic
  • Caching: Implement Simple and Semantic Caching. and more…

Example Configuration:

Here’s a basic configuration to load-balance requests to OpenAI and Anthropic:
{
	"strategy": {
		"mode": "load-balance"
	},
	"targets": [
		{
			"override_params": {
				"model": "@YOUR_OPENAI_PROVIDER_SLUG/gpt-model"
			}
		},
		{
			"override_params": {
				"model": "@YOUR_ANTHROPIC_PROVIDER/claude-sonnet-model"
			}
		}
	]
}
Create your config on the Configs page in your Portkey dashboard. You’ll need the config ID for connecting.
Configs can be updated anytime to adjust controls without affecting running applications.

Step 3: Implement Access Controls

Create User-specific API keys that automatically:
  • Track usage per developer/team with the help of metadata
  • Apply appropriate configs to route requests
  • Collect relevant metadata to filter logs
  • Enforce access permissions
Create API keys through:Example using Python SDK:
from portkey_ai import Portkey

portkey = Portkey(api_key="YOUR_ADMIN_API_KEY")

api_key = portkey.api_keys.create(
    name="frontend-engineering",
    type="organisation",
    workspace_id="YOUR_WORKSPACE_ID",
    defaults={
        "config_id": "your-config-id",
        "metadata": {
            "environment": "development",
            "department": "engineering",
            "team": "frontend"
        }
    },
    scopes=["logs.view", "configs.read"]
)
For detailed key management instructions, see our API Keys documentation.

Step 4: Deploy & Monitor

After distributing API keys to your engineering teams, your enterprise-ready setup is ready to go. Each developer can now use their designated API keys with appropriate access levels and budget controls. Apply your governance setup using the integration steps from earlier sections Monitor usage in Portkey dashboard:
  • Cost tracking by engineering team
  • Model usage patterns for AI agent tasks
  • Request volumes
  • Error rates and debugging logs

Enterprise Features Now Available

You now have:
  • Departmental budget controls
  • Model access governance
  • Usage tracking & attribution
  • Security guardrails
  • Reliability features

Portkey Features

Now that you have an enterprise-grade setup, let’s explore the comprehensive features Portkey provides to ensure secure, efficient, and cost-effective AI operations.

1. Comprehensive Metrics

Using Portkey you can track 40+ key metrics including cost, token usage, response time, and performance across all your LLM providers in real time. You can also filter these metrics based on custom metadata that you can set in your configs. Learn more about metadata here.

2. Advanced Logs

Portkey’s logging dashboard provides detailed logs for every request made to your LLMs. These logs include:
  • Complete request and response tracking
  • Metadata tags for filtering
  • Cost attribution and much more…

3. Unified Access to 1600+ LLMs

You can easily switch between 1600+ LLMs. Call various LLMs such as Anthropic, Gemini, Mistral, Azure OpenAI, Google Vertex AI, AWS Bedrock, and many more by simply changing the provider slug in your default config object.

4. Advanced Metadata Tracking

Using Portkey, you can add custom metadata to your LLM requests for detailed tracking and analytics. Use metadata tags to filter logs, track usage, and attribute costs across departments and teams.

Custom Metata

5. Enterprise Access Management

Budget Controls

Set and manage spending limits across teams and departments. Control costs with granular budget limits and usage tracking.

Single Sign-On (SSO)

Enterprise-grade SSO integration with support for SAML 2.0, Okta, Azure AD, and custom providers for secure authentication.

Organization Management

Hierarchical organization structure with workspaces, teams, and role-based access control for enterprise-scale deployments.

Access Rules & Audit Logs

Comprehensive access control rules and detailed audit logging for security compliance and usage tracking.

6. Reliability Features

Fallbacks

Automatically switch to backup targets if the primary target fails.

Conditional Routing

Route requests to different targets based on specified conditions.

Load Balancing

Distribute requests across multiple targets based on defined weights.

Caching

Enable caching of responses to improve performance and reduce costs.

Smart Retries

Automatic retry handling with exponential backoff for failed requests

Budget Limits

Set and manage budget limits across teams and departments. Control costs with granular budget limits and usage tracking.

7. Advanced Guardrails

Protect your Project’s data and enhance reliability with real-time checks on LLM inputs and outputs. Leverage guardrails to:
  • Prevent sensitive data leaks
  • Enforce compliance with organizational policies
  • PII detection and masking
  • Content filtering
  • Custom security rules
  • Data compliance checks

Guardrails

Implement real-time protection for your LLM interactions with automatic detection and filtering of sensitive content, PII, and custom security rules. Enable comprehensive data protection while maintaining compliance with organizational policies.

FAQs

Update AI Provider limits at any time from Model Catalog: 1. Open the provider you want to modify. 2. Update the budget or rate limits. 3. Save your changes.
Yes! Add multiple AI Providers to Model Catalog (one for each provider) and attach them to a single config. This config can then be connected to your API key, allowing you to use multiple providers through a single API key.
Portkey provides several ways to track team costs:
  • Create separate AI Providers for each team
  • Use metadata tags in your configs
  • Set up team-specific API keys
  • Monitor usage in the analytics dashboard
When a team reaches their budget limit:
  1. Further requests will be blocked
  2. Team admins receive notifications
  3. Usage statistics remain available in dashboard
  4. Limits can be adjusted if needed

Next Steps

Join our Community
For enterprise support and custom features, contact our enterprise team.
Last modified on April 14, 2026