Go proxy that routes Claude Code's Anthropic-format requests to OpenAI-compatible LLM providers.
CCR acts as a reverse proxy:
- Receives Anthropic API requests from Claude Code
- Converts to OpenAI format
- Forwards to provider (OpenRouter, Groq, LM Studio, etc.)
- Converts response back to Anthropic format
go build -o ccr .ccr start # Start server
ccr stop # Stop server
ccr status # Show status
ccr restart # Restart
ccr model # List available models
ccr code # Run Claude Code command via proxy
ccr activate # Output shell env vars
ccr version # Show version~/.claude-code-router/config.yaml:
port: 3457
host: "127.0.0.1"
Providers:
- name: openrouter
api_base_url: "https://openrouter.ai/api/v1"
api_key: "${OPENROUTER_API_KEY}"
models:
- "anthropic/claude-3.5-sonnet"
Router:
default: "openrouter,anthropic/claude-3.5-sonnet"
think: "openrouter,anthropic/claude-3.5-sonnet"
longContext: "openrouter,gpt-4o"
longContextThreshold: 100000Claude Code→ CCR (Anthropic format)- CCR converts request to OpenAI format
- Router selects provider/model based on rules
- Provider forwards request
- Response converted back to Anthropic format
- Explicit
provider,modelin request thinking.type == "enabled"→Router.Thinktokens > longContextThreshold→Router.LongContext- Default →
Router.Default
Provider SSE chunks → CCR converts to Anthropic SSE events:
message_start,content_block_start,content_block_delta,content_block_stopmessage_delta,message_stop,ping- Tool calls with
input_json_delta
go build -o ccr .
go test ./...