Skip to content

Windows-native CLIProxyAPI fork with TUI, system tray, and multi-provider OAuth for AI coding tools - No API key needed

License

Notifications You must be signed in to change notification settings

Finesssee/ProxyPilot

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ProxyPilot Logo

ProxyPilot

MIT License Go Version Follow on 𝕏 Star this repo

Stop juggling API keys. ProxyPilot is a powerful local API proxy that lets you use your existing Claude Code, Codex, Gemini, Kiro, and Qwen subscriptions with any AI coding tool – no separate API keys required.

Built in Go, it handles OAuth authentication, token management, and API translation automatically. One server to route them all.


Tip

📣 Latest models supported: Claude Opus 4.5 / Sonnet 4.5 with extended thinking, GPT-5.2 / GPT-5.2 Codex, Gemini 3 Pro/Flash, and Kiro (AWS CodeWhisperer)! 🚀

Setup Guides:


Features

  • 🎯 10 Auth Providers - Claude, Codex (OpenAI), Gemini, Gemini CLI, Kiro (AWS), Amazon Q CLI, Qwen, Antigravity, MiniMax, Zhipu AI
  • 🔄 Universal API Translation - Auto-converts between OpenAI, Anthropic, and Gemini formats
  • 🔧 Tool Calling Repair - Fixes tool/function call mismatches between providers automatically
  • 🧠 Extended Thinking - Full support for Claude and Gemini thinking models
  • 🔐 OAuth Integration - Browser-based login with automatic token refresh
  • 👥 Multi-Account Support - Round-robin distribution with automatic failover
  • Quota Auto-Switch - Automatically switches to backup project/model when quota exceeded
  • 📊 Usage Statistics - Track requests, tokens, and errors per provider/model
  • 🧩 Context Compression - LLM-based summarization for long sessions (Factory.ai research)
  • 🤖 Agentic Harness - Guided workflow for coding agents (Anthropic research)
  • 💾 Session Memory - Persistent storage across conversation turns
  • 🎨 System Tray - Native Windows tray app for quick access
  • 📡 60+ Management APIs - Full control via REST endpoints

Supported Providers

Provider Auth Method Models
Claude (Anthropic) OAuth2 / API Key Claude Opus 4.5, Sonnet 4.5, Haiku 4.5
Codex (OpenAI) OAuth2 / API Key GPT-5.2, GPT-5.2 Codex
Gemini OAuth2 / API Key Gemini 3 Pro, Gemini 3 Flash
Gemini CLI OAuth2 Cloud Code Assist (separate quota)
Kiro OAuth2 + AWS SSO AWS CodeWhisperer
Amazon Q CLI Import from CLI Amazon Q Developer
Qwen OAuth2 Qwen models
Antigravity OAuth2 Gemini via Antigravity (separate quota)
MiniMax API Key MiniMax M2, M2.1 models
Zhipu AI API Key GLM-4.5, GLM-4.6, GLM-4.7
Custom API Key Any OpenAI-compatible endpoint

Installation

Download Pre-built Release (Recommended)

  1. Go to the Releases page
  2. Download the latest binary for your platform
  3. Run ./proxypilot

Build from Source

git clone https://github.com/Finesssee/ProxyPilot.git
cd ProxyPilot
go build -o proxypilot ./cmd/server
./proxypilot

Usage

First Launch

  1. Copy config: cp config.example.yaml config.yaml
  2. Run: ./proxypilot
  3. Server starts on http://localhost:8317
  4. Open dashboard: http://localhost:8317/proxypilot.html

Authentication

Run OAuth login for your provider:

# OAuth providers (opens browser)
./proxypilot --claude-login        # Claude
./proxypilot --codex-login         # OpenAI/Codex
./proxypilot --login               # Gemini
./proxypilot --kiro-login          # Kiro (Google OAuth)
./proxypilot --kiro-aws-login      # Kiro (AWS Builder ID)
./proxypilot --qwen-login          # Qwen
./proxypilot --antigravity-login   # Antigravity

# Import providers (from existing CLI tools)
./proxypilot --amazonq-import      # Amazon Q CLI (run 'q login' first)
./proxypilot --kiro-import         # Kiro IDE token

# API key providers (prompts for key)
./proxypilot --minimax-login       # MiniMax API key
./proxypilot --zhipu-login         # Zhipu AI API key

OAuth tokens are stored locally and auto-refreshed before expiry.

Security Defaults (Auth + CORS)

  • Proxy requests require API keys by default. To allow unauthenticated access (not recommended), set allow-unauthenticated: true in config.yaml.
  • CORS is enabled for non-management endpoints by default (wildcard *). Management endpoints do not emit CORS headers unless you explicitly allow origins under cors.management-allow-origins.

Example:

allow-unauthenticated: false
cors:
  allow-origins:
    - "http://localhost:5173"
  management-allow-origins:
    - "http://localhost:5173"

Configure Your Tools

Claude Code (~/.claude/settings.json):

{
  "env": {
    "ANTHROPIC_BASE_URL": "http://127.0.0.1:8317",
    "ANTHROPIC_AUTH_TOKEN": "your-api-key"
  }
}

Codex CLI (~/.codex/config.toml):

[openai]
api_base_url = "http://127.0.0.1:8317"

Factory Droid (~/.factory/settings.json):

{
  "customModels": [{
    "name": "ProxyPilot",
    "baseUrl": "http://127.0.0.1:8317"
  }]
}

API Endpoints

POST /v1/chat/completions     # OpenAI Chat Completions
POST /v1/responses            # OpenAI Responses API
POST /v1/messages             # Anthropic Messages API
GET  /v1/models               # List available models
GET  /healthz                 # Health check

All endpoints auto-translate between formats based on the target provider.


Caching

ProxyPilot includes two caching layers to reduce latency and token usage.

Response Cache

Caches full API responses for identical requests. Useful for repeated queries during development.

Config (config.yaml):

response-cache:
  enabled: true           # Default: false
  max-size: 1000          # Max entries (default: 1000)
  max-bytes: 0            # Optional total cache size cap in bytes
  ttl-seconds: 300        # Cache TTL (default: 300 = 5 min)
  exclude-models:         # Models to skip (supports wildcards)
    - "*-thinking"
    - "o1-*"

Prompt Cache

Synthetic prompt caching for providers without native support. Tracks repeated system prompts and estimates token savings.

Config (config.yaml):

prompt-cache:
  enabled: true           # Default: false
  max-size: 500           # Max entries (default: 500)
  max-bytes: 0            # Optional total cache size cap in bytes
  ttl-seconds: 1800       # Cache TTL (default: 1800 = 30 min)

Cache Management API

Endpoint Method Description
/v0/management/cache/stats GET Response cache stats (hits, misses, size)
/v0/management/cache/clear POST Clear response cache
/v0/management/cache/enabled PUT Enable/disable at runtime {"enabled": true}
/v0/management/prompt-cache/stats GET Prompt cache stats + estimated tokens saved
/v0/management/prompt-cache/clear POST Clear prompt cache
/v0/management/prompt-cache/enabled PUT Enable/disable at runtime
/v0/management/prompt-cache/top GET Top 10 most-hit prompts

Lightweight Profile

For low‑memory or high‑throughput setups, you can disable heavier features:

commercial-mode: true
usage-statistics-enabled: false
usage-sample-rate: 0.25
metrics-enabled: false
request-history-enabled: false
request-history-sample-rate: 0.25
agentic-harness-enabled: false
prompt-budget-enabled: false
request-log: false
response-cache:
  enabled: false
prompt-cache:
  enabled: false

CLI Tools

Binary Description
proxypilot Main CLI with server and config switching
proxypilot-tray System tray app

Tool Integrations

Works with these AI coding tools:

  • Claude Code - Auto-configure via settings.json
  • Codex CLI - Auto-configure via config.toml
  • Factory Droid - Auto-configure via settings.json
  • Cursor IDE - Manual endpoint configuration
  • Continue - Manual endpoint configuration

Requirements

  • macOS, Linux, or Windows
  • Go 1.24+ (for building from source)

Author

ProxyPilot is developed and maintained by @Finesssee. Some contributors shown in the git history are from upstream CLIProxyAPI merges. Direct contributors to ProxyPilot will be listed here as the project grows.


Credits

ProxyPilot builds upon excellent work from the open-source community:

  • CLIProxyAPI - The original unified proxy server that inspired this project
  • VibeProxy - Native macOS menu bar app showcasing clean proxy UX

Long-context features are inspired by research from the AI community:

  • Factory.ai - Context compression techniques for long-running coding agents
  • Anthropic - Effective harnesses for long-running agents

Special thanks to these teams for sharing their work and insights.


License

MIT License - see LICENSE for details.


Support


Disclaimer

This project is for educational and interoperability research purposes. It interacts with various APIs to provide compatibility layers.

  • Use at your own risk. Authors are not responsible for account suspensions or service interruptions.
  • Not affiliated with Google, OpenAI, Anthropic, Amazon, or any other provider.
  • Users must comply with the Terms of Service of connected platforms.

About

Windows-native CLIProxyAPI fork with TUI, system tray, and multi-provider OAuth for AI coding tools - No API key needed

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 6