[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-72441":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":16,"stars7d":17,"stars30d":18,"stars90d":15,"forks30d":15,"starsTrendScore":19,"compositeScore":20,"rankGlobal":9,"rankLanguage":9,"license":21,"archived":22,"fork":22,"defaultBranch":23,"hasWiki":24,"hasPages":22,"topics":25,"createdAt":9,"pushedAt":9,"updatedAt":26,"readmeContent":27,"aiSummary":28,"trendingCount":15,"starSnapshotCount":15,"syncStatus":29,"lastSyncTime":30,"discoverSource":31},72441,"claude-code-proxy","fuergaosi233\u002Fclaude-code-proxy","fuergaosi233","Claude Code to OpenAI API Proxy",null,"Python",2659,388,9,23,0,6,29,78,18,94.07,"MIT License",false,"main",true,[],"2026-06-12 04:01:05","# Claude Code Proxy\n\nA proxy server that enables **Claude Code** to work with OpenAI-compatible API providers. Convert Claude API requests to OpenAI API calls, allowing you to use various LLM providers through the Claude Code CLI.\n\n![Claude Code Proxy](demo.png)\n\n## Features\n\n- **Full Claude API Compatibility**: Complete `\u002Fv1\u002Fmessages` endpoint support\n- **Multiple Provider Support**: OpenAI, Azure OpenAI, local models (Ollama), and any OpenAI-compatible API\n- **Smart Model Mapping**: Configure BIG and SMALL models via environment variables\n- **Function Calling**: Complete tool use support with proper conversion\n- **Streaming Responses**: Real-time SSE streaming support\n- **Image Support**: Base64 encoded image input\n- **Custom Headers**: Automatic injection of custom HTTP headers for API requests\n- **Error Handling**: Comprehensive error handling and logging\n\n## Quick Start\n\n### 1. Install Dependencies\n\n```bash\n# Using UV (recommended)\nuv sync\n\n# Or using pip\npip install -r requirements.txt\n```\n\n### 2. Configure\n\n```bash\ncp .env.example .env\n# Edit .env and add your API configuration\n# Note: Environment variables are automatically loaded from .env file\n```\n\n### 3. Start Server\n\n```bash\n# Direct run\npython start_proxy.py\n\n# Or with UV\nuv run claude-code-proxy\n\n# Or with docker compose\ndocker compose up -d\n```\n\n### 4. Use with Claude Code\n\n```bash\n# If ANTHROPIC_API_KEY is not set in the proxy:\nANTHROPIC_BASE_URL=http:\u002F\u002Flocalhost:8082 ANTHROPIC_API_KEY=\"any-value\" claude\n\n# If ANTHROPIC_API_KEY is set in the proxy:\nANTHROPIC_BASE_URL=http:\u002F\u002Flocalhost:8082 ANTHROPIC_API_KEY=\"exact-matching-key\" claude\n```\n\n## Configuration\n\nThe application automatically loads environment variables from a `.env` file in the project root using `python-dotenv`. You can also set environment variables directly in your shell.\n\n### Environment Variables\n\n**Required:**\n\n- `OPENAI_API_KEY` - Your API key for the target provider\n\n**Security:**\n\n- `ANTHROPIC_API_KEY` - Expected Anthropic API key for client validation\n  - If set, clients must provide this exact API key to access the proxy\n  - If not set, any API key will be accepted\n\n**Model Configuration:**\n\n- `BIG_MODEL` - Model for Claude opus requests (default: `gpt-4o`)\n- `MIDDLE_MODEL` - Model for Claude opus requests (default: `gpt-4o`)\n- `SMALL_MODEL` - Model for Claude haiku requests (default: `gpt-4o-mini`)\n\n**API Configuration:**\n\n- `OPENAI_BASE_URL` - API base URL (default: `https:\u002F\u002Fapi.openai.com\u002Fv1`)\n\n**Server Settings:**\n\n- `HOST` - Server host (default: `0.0.0.0`)\n- `PORT` - Server port (default: `8082`)\n- `LOG_LEVEL` - Logging level (default: `WARNING`)\n\n**Performance:**\n\n- `MAX_TOKENS_LIMIT` - Token limit (default: `4096`)\n- `REQUEST_TIMEOUT` - Request timeout in seconds (default: `90`)\n\n**Custom Headers:**\n\n- `CUSTOM_HEADER_*` - Custom headers for API requests (e.g., `CUSTOM_HEADER_ACCEPT`, `CUSTOM_HEADER_AUTHORIZATION`)\n  - Uncomment in `.env` file to enable custom headers\n\n### Custom Headers Configuration\n\nAdd custom headers to your API requests by setting environment variables with the `CUSTOM_HEADER_` prefix:\n\n```bash\n# Uncomment to enable custom headers\n# CUSTOM_HEADER_ACCEPT=\"application\u002Fjsonstream\"\n# CUSTOM_HEADER_CONTENT_TYPE=\"application\u002Fjson\"\n# CUSTOM_HEADER_USER_AGENT=\"your-app\u002F1.0.0\"\n# CUSTOM_HEADER_AUTHORIZATION=\"Bearer your-token\"\n# CUSTOM_HEADER_X_API_KEY=\"your-api-key\"\n# CUSTOM_HEADER_X_CLIENT_ID=\"your-client-id\"\n# CUSTOM_HEADER_X_CLIENT_VERSION=\"1.0.0\"\n# CUSTOM_HEADER_X_REQUEST_ID=\"unique-request-id\"\n# CUSTOM_HEADER_X_TRACE_ID=\"trace-123\"\n# CUSTOM_HEADER_X_SESSION_ID=\"session-456\"\n```\n\n### Header Conversion Rules\n\nEnvironment variables with the `CUSTOM_HEADER_` prefix are automatically converted to HTTP headers:\n\n- Environment variable: `CUSTOM_HEADER_ACCEPT`\n- HTTP Header: `ACCEPT`\n\n- Environment variable: `CUSTOM_HEADER_X_API_KEY`\n- HTTP Header: `X-API-KEY`\n\n- Environment variable: `CUSTOM_HEADER_AUTHORIZATION`\n- HTTP Header: `AUTHORIZATION`\n\n### Supported Header Types\n\n- **Content Type**: `ACCEPT`, `CONTENT-TYPE`\n- **Authentication**: `AUTHORIZATION`, `X-API-KEY`\n- **Client Identification**: `USER-AGENT`, `X-CLIENT-ID`, `X-CLIENT-VERSION`\n- **Tracking**: `X-REQUEST-ID`, `X-TRACE-ID`, `X-SESSION-ID`\n\n### Usage Example\n\n```bash\n# Basic configuration\nOPENAI_API_KEY=\"sk-your-openai-api-key-here\"\nOPENAI_BASE_URL=\"https:\u002F\u002Fapi.openai.com\u002Fv1\"\n\n# Enable custom headers (uncomment as needed)\nCUSTOM_HEADER_ACCEPT=\"application\u002Fjsonstream\"\nCUSTOM_HEADER_CONTENT_TYPE=\"application\u002Fjson\"\nCUSTOM_HEADER_USER_AGENT=\"my-app\u002F1.0.0\"\nCUSTOM_HEADER_AUTHORIZATION=\"Bearer my-token\"\n```\n\nThe proxy will automatically include these headers in all API requests to the target LLM provider.\n\n### Model Mapping\n\nThe proxy maps Claude model requests to your configured models:\n\n| Claude Request                 | Mapped To     | Environment Variable   |\n| ------------------------------ | ------------- | ---------------------- |\n| Models with \"haiku\"            | `SMALL_MODEL` | Default: `gpt-4o-mini` |\n| Models with \"sonnet\"           | `MIDDLE_MODEL`| Default: `BIG_MODEL`   |\n| Models with \"opus\"             | `BIG_MODEL`   | Default: `gpt-4o`      |\n\n### Provider Examples\n\n#### OpenAI\n\n```bash\nOPENAI_API_KEY=\"sk-your-openai-key\"\nOPENAI_BASE_URL=\"https:\u002F\u002Fapi.openai.com\u002Fv1\"\nBIG_MODEL=\"gpt-4o\"\nMIDDLE_MODEL=\"gpt-4o\"\nSMALL_MODEL=\"gpt-4o-mini\"\n```\n\n#### Azure OpenAI\n\n```bash\nOPENAI_API_KEY=\"your-azure-key\"\nOPENAI_BASE_URL=\"https:\u002F\u002Fyour-resource.openai.azure.com\u002Fopenai\u002Fdeployments\u002Fyour-deployment\"\nBIG_MODEL=\"gpt-4\"\nMIDDLE_MODEL=\"gpt-4\"\nSMALL_MODEL=\"gpt-35-turbo\"\n```\n\n#### Local Models (Ollama)\n\n```bash\nOPENAI_API_KEY=\"dummy-key\"  # Required but can be dummy\nOPENAI_BASE_URL=\"http:\u002F\u002Flocalhost:11434\u002Fv1\"\nBIG_MODEL=\"llama3.1:70b\"\nMIDDLE_MODEL=\"llama3.1:70b\"\nSMALL_MODEL=\"llama3.1:8b\"\n```\n\n#### Other Providers\n\nAny OpenAI-compatible API can be used by setting the appropriate `OPENAI_BASE_URL`.\n\n## Usage Examples\n\n### Basic Chat\n\n```python\nimport httpx\n\nresponse = httpx.post(\n    \"http:\u002F\u002Flocalhost:8082\u002Fv1\u002Fmessages\",\n    json={\n        \"model\": \"claude-3-5-sonnet-20241022\",  # Maps to MIDDLE_MODEL\n        \"max_tokens\": 100,\n        \"messages\": [\n            {\"role\": \"user\", \"content\": \"Hello!\"}\n        ]\n    }\n)\n```\n\n## Integration with Claude Code\n\nThis proxy is designed to work seamlessly with Claude Code CLI:\n\n```bash\n# Start the proxy\npython start_proxy.py\n\n# Use Claude Code with the proxy\nANTHROPIC_BASE_URL=http:\u002F\u002Flocalhost:8082 claude\n\n# Or set permanently\nexport ANTHROPIC_BASE_URL=http:\u002F\u002Flocalhost:8082\nclaude\n```\n\n## Testing\n\nTest proxy functionality:\n\n```bash\n# Run comprehensive tests\npython src\u002Ftest_claude_to_openai.py\n```\n\n## Development\n\n### Using UV\n\n```bash\n# Install dependencies\nuv sync\n\n# Run server\nuv run claude-code-proxy\n\n# Format code\nuv run black src\u002F\nuv run isort src\u002F\n\n# Type checking\nuv run mypy src\u002F\n```\n\n### Project Structure\n\n```\nclaude-code-proxy\u002F\n├── src\u002F\n│   ├── main.py                     # Main server\n│   ├── test_claude_to_openai.py    # Tests\n│   └── [other modules...]\n├── start_proxy.py                  # Startup script\n├── .env.example                    # Config template\n└── README.md                       # This file\n```\n\n## Performance\n\n- **Async\u002Fawait** for high concurrency\n- **Connection pooling** for efficiency\n- **Streaming support** for real-time responses\n- **Configurable timeouts** and retries\n- **Smart error handling** with detailed logging\n\n## License\n\nMIT License\n","Claude Code Proxy 是一个代理服务器，使 Claude Code 能够与 OpenAI 兼容的 API 提供商协同工作。该项目通过将 Claude API 请求转换为 OpenAI API 调用，支持多种语言模型提供商如 OpenAI、Azure OpenAI 以及本地模型等。其核心功能包括全 Claude API 兼容性、智能模型映射、函数调用支持、实时流响应、图片支持和自定义 HTTP 头注入等。此外，它还具备全面的错误处理机制。此项目适用于需要跨不同平台或服务使用 Claude 代码的场景，特别适合开发者希望在不更改现有 Claude CLI 工具的前提下，扩展到更多 AI 模型和服务的情况。",2,"2026-06-11 03:42:03","high_star"]