openai2claude
Proxy server that converts Claude API requests to OpenAI-compatible backends. This allows you to use the Anthropic Claude SDK with any OpenAI-compatible API provider.
Installation
pip install openai2claude
Quick Start
- Start the proxy server:
export OPENAI2CLAUDE_BACKEND=https://api.openai.com/v1
export OPENAI2CLAUDE_API_KEY=sk-your-api-key
openai2claude
Or with command-line arguments:
openai2claude --backend https://api.openai.com/v1 --api-key sk-your-api-key
- Configure your Claude SDK code to use the proxy:
import anthropic
client = anthropic.Anthropic(
base_url="http://localhost:8000"
)
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello, world!"}]
)
Or via environment variable:
export ANTHROPIC_API_BASE="http://localhost:8000"
Configuration
Environment Variables
| Variable | Default | Description |
|---|---|---|
OPENAI2CLAUDE_BACKEND |
http://localhost:8080/v1 |
OpenAI-compatible backend URL |
OPENAI2CLAUDE_API_KEY |
sk-xxx... |
API key for the backend |
OPENAI2CLAUDE_HOST |
0.0.0.0 |
Proxy server host |
OPENAI2CLAUDE_PORT |
8000 |
Proxy server port |
OPENAI2CLAUDE_LOG_LEVEL |
INFO |
Logging level |
OPENAI2CLAUDE_TIMEOUT |
300 |
Request timeout in seconds |
OPENAI2CLAUDE_VERIFY_SSL |
true |
Verify SSL certificates |
Command-Line Options
openai2claude [OPTIONS]
Options:
-b, --backend TEXT OpenAI-compatible backend URL
-k, --api-key TEXT API key for the backend
-h, --host TEXT Host to bind the proxy server
-p, --port INTEGER Port to bind the proxy server
-l, --log-level TEXT Logging level (debug, info, warning, error)
-t, --timeout FLOAT Request timeout in seconds
--no-verify-ssl Disable SSL certificate verification
--version Show version
Architecture
┌─────────────┐ ┌─────────────────┐ ┌────────────────────┐
│ Your Code │───>│ openai2claude │───>│ OpenAI Backend │
│ Claude SDK │ │ (localhost │ │ (api.openai.com, │
│ │<───│ :8000) │<───│ ollama, etc.) │
└─────────────┘ └─────────────────┘ └────────────────────┘
The proxy:
- Accepts requests in Claude API format (
/v1/messages) - Converts them to OpenAI API format (
/v1/chat/completions) - Forwards to the configured backend
- Converts responses back to Claude format
Features
- Format Conversion: Automatically converts between Claude and OpenAI API formats
- Tool Calling Fix: Fixes malformed tool calls (e.g.,
cmd/input->command) for Bash tools - Streaming Support: Full SSE streaming support for real-time responses
- System Prompt Injection: Adds tool usage instructions to prevent common errors
- Environment Variables: Full configuration via environment variables
- CLI Interface: Easy-to-use command-line interface with
--help
Use Cases
- Use Claude SDK with local models: Point to Ollama, LM Studio, or other OpenAI-compatible local servers
- Multi-provider support: Switch between OpenAI, Azure, or other OpenAI-compatible providers
- Development and testing: Test Claude code against mock or local backends
License
MIT
Metadata
Release files for openai2claude 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| openai2claude-0.1.1.tar.gz | 11.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| openai2claude-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.5 kB
Release files / openai2claude-0.1.1.tar.gz
| Download URL | openai2claude-0.1.1.tar.gz |
|---|---|
| Size | 11.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5308a696113be301a67480f2efb4c43453316b7611156eb6c98fd5e286592ed5
|
|
BLAKE2b-256 checksum How to use checksums |
64f87341c1aee45ccdbf24b42475674f7f3a5526cc9a1c21f9ededac92b8250c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|
Release files / openai2claude-0.1.1-py3-none-any.whl
| Download URL | openai2claude-0.1.1-py3-none-any.whl |
|---|---|
| Size | 8.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fc009a1f75114cf9101a3906f40e95a08302fbdea1f043820cb305b99e058fdc
|
|
BLAKE2b-256 checksum How to use checksums |
0de2b1956bb5a9e8199364ce93bd3f3712aa0bbb15241c729e9048b967905d91
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.12.11
|