{"id":30223620,"url":"https://github.com/brianhung/claude-code-proxy","last_synced_at":"2026-04-16T00:33:05.216Z","repository":{"id":309120711,"uuid":"1031487352","full_name":"BrianHung/claude-code-proxy","owner":"BrianHung","description":"claude code vercel ai cloudflare proxy","archived":false,"fork":false,"pushed_at":"2025-08-09T23:58:29.000Z","size":72,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-08-10T01:16:51.454Z","etag":null,"topics":["claude-code","cloudflare-worker","vercel-ai-sdk"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BrianHung.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-08-03T21:00:11.000Z","updated_at":"2025-08-09T23:58:32.000Z","dependencies_parsed_at":"2025-08-10T01:26:55.830Z","dependency_job_id":null,"html_url":"https://github.com/BrianHung/claude-code-proxy","commit_stats":null,"previous_names":["brianhung/claude-code-proxy"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/BrianHung/claude-code-proxy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianHung%2Fclaude-code-proxy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianHung%2Fclaude-code-proxy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianHung%2Fclaude-code-proxy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianHung%2Fclaude-code-proxy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BrianHung","download_url":"https://codeload.github.com/BrianHung/claude-code-proxy/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BrianHung%2Fclaude-code-proxy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31866347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-15T15:24:51.572Z","status":"ssl_error","status_checked_at":"2026-04-15T15:24:39.138Z","response_time":63,"last_error":"SSL_read: 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","cloudflare-worker","vercel-ai-sdk"],"created_at":"2025-08-14T12:47:47.602Z","updated_at":"2026-04-16T00:33:05.190Z","avatar_url":"https://github.com/BrianHung.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude Code Polyglot\n\nA Cloudflare Worker proxy that converts Anthropic Claude API requests to Vercel AI SDK format, enabling Claude Code CLI to work with any AI provider supported by Vercel AI SDK.\n\n## Quick Start\n\n### Prerequisites\n\n- Node.js 18+\n- API key for your preferred provider (OpenAI, Anthropic, etc.)\n\n### Local Development\n\n```bash\ngit clone https://github.com/BrianHung/claude-code-proxy\ncd claude-code-proxy\nnpm install\n```\n\nConfigure environment variables in `wrangler.toml`:\n\n```toml\n[vars]\nOPENAI_API_KEY = \"your-openai-key\"\nANTHROPIC_API_KEY = \"your-anthropic-key\"\nGOOGLE_GENERATIVE_AI_API_KEY = \"your-google-key\"\nXAI_API_KEY = \"your-xai-key\"\n\nHAIKU_MODEL_ID = \"openai:gpt-4o-mini\"\nSONNET_MODEL_ID = \"openai:gpt-4o-mini\"\nOPUS_MODEL_ID = \"openai:gpt-4o-mini\"\n\nDEBUG = \"true\"\n```\n\nStart the proxy:\n\n```bash\nnpm run dev\n```\n\nUse with Claude CLI:\n\n```bash\nexport ANTHROPIC_BASE_URL=http://localhost:8787\nclaude \"Hello world\"\n```\n\n### Deploy to Cloudflare\n\n```bash\nnpx wrangler login\n\n# Set API keys\nnpx wrangler secret put OPENAI_API_KEY\nnpx wrangler secret put ANTHROPIC_API_KEY\nnpx wrangler secret put GOOGLE_GENERATIVE_AI_API_KEY\nnpx wrangler secret put XAI_API_KEY\n\n# Set model overrides\nnpx wrangler secret put HAIKU_MODEL_ID\nnpx wrangler secret put SONNET_MODEL_ID\nnpx wrangler secret put OPUS_MODEL_ID\n\n# Deploy\nnpm run deploy\n```\n\n## Model Configuration\n\nThe proxy maps Claude model requests to your configured models:\n\n| Claude Model      | Maps To         | Environment Variable          |\n| ----------------- | --------------- | ----------------------------- |\n| claude-_-haiku-_  | HAIKU_MODEL_ID  | Default: `openai:gpt-4o-mini` |\n| claude-_-sonnet-_ | SONNET_MODEL_ID | Default: `openai:gpt-4o-mini` |\n| claude-_-opus-_   | OPUS_MODEL_ID   | Default: `openai:gpt-4o-mini` |\n\n### Configuration Examples\n\n**OpenAI models:**\n\n```toml\nHAIKU_MODEL_ID = \"openai:gpt-4o-mini\"\nSONNET_MODEL_ID = \"openai:gpt-4o-mini\"\nOPUS_MODEL_ID = \"openai:gpt-4o-mini\"\n```\n\n**Anthropic models:**\n\n```toml\nHAIKU_MODEL_ID = \"anthropic:claude-3-5-haiku-20241022\"\nSONNET_MODEL_ID = \"anthropic:claude-3-5-sonnet-20241022\"\nOPUS_MODEL_ID = \"anthropic:claude-3-opus-20240229\"\n```\n\n**Mixed providers:**\n\n```toml\nHAIKU_MODEL_ID = \"openai:gpt-4o-mini\"\nSONNET_MODEL_ID = \"anthropic:claude-3-5-sonnet-20241022\"\nOPUS_MODEL_ID = \"openai:gpt-4o\"\n```\n\n## Web Search Support\n\nThe proxy supports web search functionality, which is available as both an Anthropic system tool and a server tool. The routing behavior depends on your API key configuration:\n\n- **With ANTHROPIC_API_KEY configured**: Web search requests are re-routed to the original Anthropic model ID to leverage Anthropic's native web search capabilities\n- **Without ANTHROPIC_API_KEY**: Web search requests are are not handled\n\n## API Usage\n\n### Basic Request\n\n```bash\ncurl -X POST http://localhost:8787/v1/messages \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"claude-3-5-haiku-20241022\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}],\n    \"max_tokens\": 100\n  }'\n```\n\n### Streaming\n\n```bash\ncurl -X POST http://localhost:8787/v1/messages \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\n    \"model\": \"claude-3-5-sonnet-20241022\",\n    \"messages\": [{\"role\": \"user\", \"content\": \"Count to 10\"}],\n    \"max_tokens\": 100,\n    \"stream\": true\n  }'\n```\n\n## Commands\n\n```bash\nnpm run dev        # Start local development server (port 8787)\nnpm run deploy     # Deploy to Cloudflare Workers\nnpm test          # Run test suite\nnpm run build     # Build the worker bundle\n```\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianhung%2Fclaude-code-proxy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbrianhung%2Fclaude-code-proxy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbrianhung%2Fclaude-code-proxy/lists"}