{"id":35003739,"url":"https://github.com/finesssee/proxypilot","last_synced_at":"2026-04-30T01:05:07.854Z","repository":{"id":330985594,"uuid":"1116326457","full_name":"Finesssee/ProxyPilot","owner":"Finesssee","description":"Windows-native CLIProxyAPI fork with TUI, system tray, and multi-provider OAuth for AI coding tools - No API key needed","archived":false,"fork":false,"pushed_at":"2026-02-11T12:08:26.000Z","size":11030,"stargazers_count":74,"open_issues_count":0,"forks_count":9,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-02-11T20:29:36.855Z","etag":null,"topics":["claude-code","cli-proxy","codex","factory-droids","gemini","kiro"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Finesssee.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":"NOTICE.md","maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["router-for-me"]}},"created_at":"2025-12-14T16:37:00.000Z","updated_at":"2026-02-11T12:08:29.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/Finesssee/ProxyPilot","commit_stats":null,"previous_names":["finesssee/proxypilot"],"tags_count":683,"template":false,"template_full_name":null,"purl":"pkg:github/Finesssee/ProxyPilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finesssee%2FProxyPilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finesssee%2FProxyPilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finesssee%2FProxyPilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finesssee%2FProxyPilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Finesssee","download_url":"https://codeload.github.com/Finesssee/ProxyPilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Finesssee%2FProxyPilot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29739024,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-23T04:51:08.365Z","status":"ssl_error","status_checked_at":"2026-02-23T04:49:15.865Z","response_time":90,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-code","cli-proxy","codex","factory-droids","gemini","kiro"],"created_at":"2025-12-27T04:19:08.821Z","updated_at":"2026-04-30T01:05:07.846Z","avatar_url":"https://github.com/Finesssee.png","language":"Go","funding_links":["https://github.com/sponsors/router-for-me"],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg src=\"./static/icon.png\" width=\"128\" height=\"128\" alt=\"ProxyPilot Logo\"\u003e\n\u003c/p\u003e\n\n\u003ch1 align=\"center\"\u003eProxyPilot\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-28a745\" alt=\"MIT License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://golang.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Go-1.24+-00ADD8?logo=go\" alt=\"Go Version\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://x.com/Finessse377721\"\u003e\u003cimg src=\"https://img.shields.io/badge/Follow-%F0%9D%95%8F%2F%40Finessse377721-1c9bf0\" alt=\"Follow on 𝕏\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Finesssee/ProxyPilot\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/Finesssee/ProxyPilot.svg?style=social\u0026label=Star%20this%20repo\" alt=\"Star this repo\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003eStop juggling API keys.\u003c/strong\u003e 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.\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Built in Go, it handles OAuth authentication, token management, and API translation automatically. One server to route them all.\n\u003c/p\u003e\n\n---\n\n\u003e [!TIP]\n\u003e 📣 **Latest models supported:**\n\u003e 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)! 🚀\n\n**Setup Guides:**\n- [Claude Code Setup →](docs/claude-code-local-proxy.md)\n- [Cursor IDE Setup →](docs/cursor-ide.md)\n\n---\n\n## Features\n\n- 🎯 **10 Auth Providers** - Claude, Codex (OpenAI), Gemini, Gemini CLI, Kiro (AWS), Amazon Q CLI, Qwen, Antigravity, MiniMax, Zhipu AI\n- 🔄 **Universal API Translation** - Auto-converts between OpenAI, Anthropic, and Gemini formats\n- 🔧 **Tool Calling Repair** - Fixes tool/function call mismatches between providers automatically\n- 🧠 **Extended Thinking** - Full support for Claude and Gemini thinking models\n- 🔐 **OAuth Integration** - Browser-based login with automatic token refresh\n- 👥 **Multi-Account Support** - Round-robin distribution with automatic failover\n- ⚡ **Quota Auto-Switch** - Automatically switches to backup project/model when quota exceeded\n- 📊 **Usage Statistics** - Track requests, tokens, and errors per provider/model\n- 🧩 **Context Compression** - LLM-based summarization for long sessions (Factory.ai research)\n- 🤖 **Agentic Harness** - Guided workflow for coding agents (Anthropic research)\n- 💾 **Session Memory** - Persistent storage across conversation turns\n- 🎨 **System Tray** - Native Windows tray app for quick access\n- 🔄 **Auto-Updates** - Background update checking with one-click install\n- ⏪ **Rollback Support** - Automatic crash detection with version recovery\n- 📡 **60+ Management APIs** - Full control via REST endpoints\n\n---\n\n## Supported Providers\n\n| Provider | Auth Method | Models |\n|----------|-------------|--------|\n| Claude (Anthropic) | OAuth2 / API Key | Claude Opus 4.5, Sonnet 4.5, Haiku 4.5 |\n| Codex (OpenAI) | OAuth2 / API Key | GPT-5.2, GPT-5.2 Codex |\n| Gemini | OAuth2 / API Key | Gemini 3 Pro, Gemini 3 Flash |\n| Gemini CLI | OAuth2 | Cloud Code Assist (separate quota) |\n| Kiro | OAuth2 + AWS SSO | AWS CodeWhisperer |\n| Amazon Q CLI | Import from CLI | Amazon Q Developer |\n| Qwen | OAuth2 | Qwen models |\n| Antigravity | OAuth2 | Gemini via Antigravity (separate quota) |\n| MiniMax | API Key | MiniMax M2, M2.1 models |\n| Zhipu AI | API Key | GLM-4.5, GLM-4.6, GLM-4.7 |\n| Custom | API Key | Any OpenAI-compatible endpoint |\n\n---\n\n## Installation\n\n### Download Pre-built Release (Recommended)\n\n1. Go to the [**Releases**](https://github.com/Finesssee/ProxyPilot/releases) page\n2. Download the latest binary for your platform\n3. Run `./proxypilot`\n\n### Build from Source\n\n```bash\ngit clone https://github.com/Finesssee/ProxyPilot.git\ncd ProxyPilot\ngo build -o proxypilot ./cmd/server\n./proxypilot\n```\n\n---\n\n## Usage\n\n### First Launch\n\n1. Packaged installs create `config.yaml` automatically on first start when `config.example.yaml` is bundled next to the executable.\n2. If you're running from source, copy config: `cp config.example.yaml config.yaml`\n3. Run: `./proxypilot`\n4. Server starts on `http://localhost:8317`\n5. Open dashboard: `http://localhost:8317/management.html`\n\n### Authentication\n\nRun OAuth login for your provider:\n\n```bash\n# OAuth providers (opens browser)\n./proxypilot --claude-login        # Claude\n./proxypilot --codex-login         # OpenAI/Codex\n./proxypilot --login               # Gemini\n./proxypilot --kiro-login          # Kiro (Google OAuth)\n./proxypilot --kiro-aws-login      # Kiro (AWS Builder ID)\n./proxypilot --qwen-login          # Qwen\n./proxypilot --antigravity-login   # Antigravity\n\n# Import providers (from existing CLI tools)\n./proxypilot --kiro-import         # Kiro IDE token\n\n# API key providers (prompts for key)\n./proxypilot --minimax-login       # MiniMax API key\n./proxypilot --zhipu-login         # Zhipu AI API key\n```\n\nOAuth tokens are stored locally and auto-refreshed before expiry.\n\n### Security Defaults (Auth + CORS)\n\n- Proxy requests require API keys by default. To allow unauthenticated access (not recommended), set `allow-unauthenticated: true` in `config.yaml`.\n- 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`.\n\nExample:\n\n```yaml\nallow-unauthenticated: false\ncors:\n  allow-origins:\n    - \"http://localhost:5173\"\n  management-allow-origins:\n    - \"http://localhost:5173\"\n```\n\n### Configure Your Tools\n\n**Claude Code** (`~/.claude/settings.json`):\n```json\n{\n  \"env\": {\n    \"ANTHROPIC_BASE_URL\": \"http://127.0.0.1:8317\",\n    \"ANTHROPIC_AUTH_TOKEN\": \"your-api-key\"\n  }\n}\n```\n\n**Codex CLI** (`~/.codex/config.toml`):\n```toml\n[openai]\napi_base_url = \"http://127.0.0.1:8317\"\n```\n\n**Factory Droid** (`~/.factory/settings.json`):\n```json\n{\n  \"customModels\": [{\n    \"name\": \"ProxyPilot\",\n    \"baseUrl\": \"http://127.0.0.1:8317\"\n  }]\n}\n```\n\n---\n\n## API Endpoints\n\n```\nPOST /v1/chat/completions     # OpenAI Chat Completions\nPOST /v1/responses            # OpenAI Responses API\nPOST /v1/messages             # Anthropic Messages API\nGET  /v1/models               # List available models\nGET  /healthz                 # Health check\n```\n\nAll endpoints auto-translate between formats based on the target provider.\n\n---\n\n## Caching\n\nProxyPilot includes two caching layers to reduce latency and token usage.\n\n### Response Cache\n\nCaches full API responses for identical requests. Useful for repeated queries during development.\n\n**Config** (`config.yaml`):\n```yaml\nresponse-cache:\n  enabled: true           # Default: false\n  max-size: 1000          # Max entries (default: 1000)\n  max-bytes: 0            # Optional total cache size cap in bytes\n  ttl-seconds: 300        # Cache TTL (default: 300 = 5 min)\n  exclude-models:         # Models to skip (supports wildcards)\n    - \"*-thinking\"\n    - \"o1-*\"\n```\n\n### Prompt Cache\n\nSynthetic prompt caching for providers without native support. Tracks repeated system prompts and estimates token savings.\n\n**Config** (`config.yaml`):\n```yaml\nprompt-cache:\n  enabled: true           # Default: false\n  max-size: 500           # Max entries (default: 500)\n  max-bytes: 0            # Optional total cache size cap in bytes\n  ttl-seconds: 1800       # Cache TTL (default: 1800 = 30 min)\n```\n\n### Cache Management API\n\n| Endpoint | Method | Description |\n|----------|--------|-------------|\n| `/v0/management/cache/stats` | GET | Response cache stats (hits, misses, size) |\n| `/v0/management/cache/clear` | POST | Clear response cache |\n| `/v0/management/cache/enabled` | PUT | Enable/disable at runtime `{\"enabled\": true}` |\n| `/v0/management/prompt-cache/stats` | GET | Prompt cache stats + estimated tokens saved |\n| `/v0/management/prompt-cache/clear` | POST | Clear prompt cache |\n| `/v0/management/prompt-cache/enabled` | PUT | Enable/disable at runtime |     \n| `/v0/management/prompt-cache/top` | GET | Top 10 most-hit prompts |\n\n---\n\n## Lightweight Profile\n\nFor low‑memory or high‑throughput setups, you can disable heavier features:\n\n```yaml\ncommercial-mode: true\nusage-statistics-enabled: false\nusage-sample-rate: 0.25\nmetrics-enabled: false\nrequest-history-enabled: false\nrequest-history-sample-rate: 0.25\nagentic-harness-enabled: false\nprompt-budget-enabled: false\nrequest-log: false\nresponse-cache:\n  enabled: false\nprompt-cache:\n  enabled: false\n```\n\n---\n\n## Ecosystem\n\n### [CPA Usage Keeper](https://github.com/Willxup/cpa-usage-keeper)\n\nStandalone persistence and visualization service for CLIProxyAPI, with periodic data sync, SQLite storage, aggregate APIs, and a built-in dashboard for usage and statistics.\n\n\u003e [!NOTE]\n\u003e If you developed a project based on CLIProxyAPI, please open a PR to add it to this list.\n\n## Auto-Updates\n\nProxyPilot includes a built-in auto-update system that checks for new releases and allows one-click installation.\n\n### Configuration\n\n**Config** (`config.yaml`):\n```yaml\nupdates:\n  auto-check: true              # Enable background update checking (default: true)\n  check-interval-hours: 24      # How often to check (default: 24)\n  notify-on-update: true        # Show toast notification when update available (default: true)\n  channel: stable               # Update channel: \"stable\" or \"prerelease\" (default: stable)\n```\n\n### Features\n\n- **Background Polling** - Checks for updates at configurable intervals\n- **Dashboard Banner** - Proactive notification when update is available\n- **One-Click Install** - Download, verify, and install from the tray menu\n- **Session Dismissal** - Dismissed banners won't reappear until next session\n\n### Tray Menu\n\nWhen an update is available:\n- **Settings → Download \u0026 Install vX.X.X** - One-click update flow\n- **Settings → Check for Updates** - Manual check\n\n---\n\n## Rollback Support\n\nProxyPilot automatically backs up the previous version during updates and can restore it if something goes wrong.\n\n### Automatic Recovery\n\n- **Crash Detection** - Tracks rapid restarts within a 30-second window\n- **Auto-Rollback** - After 3 rapid failures, automatically restores previous version\n- **Health Marking** - After 30 seconds of stable operation, clears the failure counter\n\n### Manual Rollback\n\nFrom the tray menu:\n- **Settings → Rollback to Previous Version** - Restore the previous version\n\n### How It Works\n\n1. During update, current binary is saved as `.old` backup\n2. Rollback metadata stored in `%APPDATA%/ProxyPilot/updates/`\n3. On crash loop detection, previous version is automatically restored\n4. After successful startup (30s), backup can be cleaned up\n\n---\n\n## CLI Tools\n\n| Binary | Description |\n|--------|-------------|\n| `proxypilot` | Main CLI with server and config switching |\n| `proxypilot-tray` | System tray app |\n\n---\n\n## Tool Integrations\n\nWorks with these AI coding tools:\n\n- **Claude Code** - Auto-configure via settings.json\n- **Codex CLI** - Auto-configure via config.toml\n- **Factory Droid** - Auto-configure via settings.json\n- **Cursor IDE** - Manual endpoint configuration\n- **Continue** - Manual endpoint configuration\n\n---\n\n## Requirements\n\n- macOS, Linux, or Windows\n- Go 1.24+ (for building from source)\n\n---\n\n## Author\n\nProxyPilot is developed and maintained by [@Finesssee](https://github.com/Finesssee). Some contributors shown in the git history are from upstream [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) merges. Direct contributors to ProxyPilot will be listed here as the project grows.\n\n---\n\n## Credits\n\nProxyPilot builds upon excellent work from the open-source community:\n\n- **[CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI)** - The original unified proxy server that inspired this project\n- **[VibeProxy](https://github.com/automazeio/vibeproxy)** - Native macOS menu bar app showcasing clean proxy UX\n\nLong-context features are inspired by research from the AI community:\n\n- **[Factory.ai](https://factory.ai/news/evaluating-compression)** - Context compression techniques for long-running coding agents\n- **[Anthropic](https://www.anthropic.com/engineering/effective-harnesses-for-long-running-agents)** - Effective harnesses for long-running agents\n\nSpecial thanks to these teams for sharing their work and insights.\n\n---\n\n## License\n\nMIT License - see [LICENSE](LICENSE) for details.\n\n---\n\n## Support\n\n- **Report Issues**: [GitHub Issues](https://github.com/Finesssee/ProxyPilot/issues)\n\n---\n\n## Disclaimer\n\nThis project is for educational and interoperability research purposes. It interacts with various APIs to provide compatibility layers.\n\n- **Use at your own risk.** Authors are not responsible for account suspensions or service interruptions.\n- **Not affiliated** with Google, OpenAI, Anthropic, Amazon, or any other provider.\n- Users must comply with the Terms of Service of connected platforms.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinesssee%2Fproxypilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffinesssee%2Fproxypilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffinesssee%2Fproxypilot/lists"}