Claude Code Router
Umfassende Claude Code Router Befehle und Workflows für Claude Code Anfragen an verschiedene AI-Modelle, die Multi-Modellentwicklung und Kostenoptimierung ermöglichen.
Überblick
Claude-Code Router ist ein Open-Source-Tool, das als lokale Proxy für Claude Code-Anfragen fungiert, so dass Sie Anfragen an verschiedene AI-Modelle wie GPT-4, Gemini, lokale Modelle und andere OpenAI-kompatible APIs abfangen, ändern und Routen. Dies ermöglicht Entwicklern, die leistungsstarke Schnittstelle von Claude Code zu verwenden, während verschiedene Modelle für bestimmte Aufgaben, Kostenoptimierung oder Zugriff auf kostenlose API-Gutschriften verwendet werden.
ZEIT ** Nutzungshinweis*: Claude-Code Router modifiziert API-Anfragen und erfordert eine ordnungsgemäße Konfiguration der API-Tasten und Endpunkte. Sicheres Handling von Anmeldeinformationen und Einhaltung von API-Bedingungen.
Installation
Quick Setup
```bash
Install via npm
npm install -g claude-code-router
Install via pip
pip install claude-code-router
Clone from GitHub
git clone https://github.com/musistudio/claude-code-router.git cd claude-code-router npm install ```_
Docker Installation
```bash
Pull Docker image
docker pull claudecode/router:latest
Run with Docker
docker run -p 8080:8080 -e OPENAI_API_KEY=your-key claudecode/router
Docker Compose
version: '3.8' services: claude-router: image: claudecode/router:latest ports: - "8080:8080" environment: - OPENAI_API_KEY=${OPENAI_API_KEY} - ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} ```_
Aufbau von Source
```bash
Clone repository
git clone https://github.com/musistudio/claude-code-router.git cd claude-code-router
Install dependencies
npm install
Build project
npm run build
Start router
npm start ```_
Konfiguration
Grundkonfiguration
json
{
"router": {
"port": 8080,
"host": "localhost",
"logLevel": "info",
"enableCors": true
},
"models": {
"claude-3-sonnet": {
"provider": "anthropic",
"apiKey": "${ANTHROPIC_API_KEY}",
"endpoint": "https://api.anthropic.com/v1/messages"
},
"gpt-4": {
"provider": "openai",
"apiKey": "${OPENAI_API_KEY}",
"endpoint": "https://api.openai.com/v1/chat/completions"
},
"gemini-pro": {
"provider": "google",
"apiKey": "${GOOGLE_API_KEY}",
"endpoint": "https://generativelanguage.googleapis.com/v1/models"
}
},
"routing": {
"defaultModel": "claude-3-sonnet",
"fallbackModel": "gpt-4",
"loadBalancing": false,
"costOptimization": true
}
}
_
Erweiterte Routing-Regeln
json
{
"routingRules": [
{
"name": "code_generation",
"condition": {
"messageContains": ["write code", "implement", "create function"],
"fileTypes": [".py", ".js", ".ts", ".java"]
},
"targetModel": "gpt-4",
"priority": 1
},
{
"name": "documentation",
"condition": {
"messageContains": ["document", "explain", "comment"],
"taskType": "documentation"
},
"targetModel": "claude-3-sonnet",
"priority": 2
},
{
"name": "cost_optimization",
"condition": {
"tokenCount": { "max": 1000 },
"complexity": "low"
},
"targetModel": "gpt-3.5-turbo",
"priority": 3
}
]
}
_
Kernkommandos
Router Management
| | Command | Description | |
| --- | --- |
| | router start
| Start the Claude Code Router | |
| | router stop
| Stop the router service | |
| | router restart
| Restart the router | |
| | router status
| Check router status | |
| | router config
| View current configuration | |
| | router logs
| View router logs | |
| | router health
| Health check endpoint | |
Modellmanagement
| | Command | Description | |
| --- | --- |
| | router models list
| List available models | |
| | router models add
| Add new model configuration | |
| | router models remove
| Remove model configuration | |
| | router models test
| Test model connectivity | |
| | router models switch
| Switch default model | |
| | router models status
| Check model status | |
Integration von Claude Code
Claude Code konfigurieren
```bash
Set Claude Code to use router
export ANTHROPIC_API_BASE=http://localhost:8080/v1 export ANTHROPIC_API_KEY=router-proxy-key
Alternative configuration
claude-code config set api.base_url http://localhost:8080/v1 claude-code config set api.key router-proxy-key
Verify configuration
claude-code config show ```_
Router Proxy Setup
```bash
Start router with specific configuration
claude-code-router --config config.json --port 8080
Start with environment variables
ROUTER_PORT=8080 ROUTER_CONFIG=config.json claude-code-router
Start with custom models
claude-code-router --models gpt-4,claude-3-sonnet,gemini-pro ```_
Modellanbieter
OpenAI Integration
json
{
"openai": {
"apiKey": "${OPENAI_API_KEY}",
"baseUrl": "https://api.openai.com/v1",
"models": {
"gpt-4": {
"maxTokens": 8192,
"temperature": 0.7,
"costPerToken": 0.00003
},
"gpt-3.5-turbo": {
"maxTokens": 4096,
"temperature": 0.7,
"costPerToken": 0.000002
}
}
}
}
_
Google Gemini Integration
json
{
"google": {
"apiKey": "${GOOGLE_API_KEY}",
"baseUrl": "https://generativelanguage.googleapis.com/v1",
"models": {
"gemini-pro": {
"maxTokens": 32768,
"temperature": 0.7,
"costPerToken": 0.000001
},
"gemini-pro-vision": {
"maxTokens": 16384,
"temperature": 0.7,
"supportsImages": true
}
}
}
}
_
Lokale Modellintegration
json
{
"local": {
"baseUrl": "http://localhost:11434/v1",
"models": {
"llama2": {
"endpoint": "/api/generate",
"maxTokens": 4096,
"temperature": 0.7,
"costPerToken": 0
},
"codellama": {
"endpoint": "/api/generate",
"maxTokens": 8192,
"temperature": 0.3,
"specialization": "code"
}
}
}
}
_
OpenRouter Integration
json
{
"openrouter": {
"apiKey": "${OPENROUTER_API_KEY}",
"baseUrl": "https://openrouter.ai/api/v1",
"models": {
"anthropic/claude-3-sonnet": {
"maxTokens": 200000,
"costPerToken": 0.000015
},
"openai/gpt-4": {
"maxTokens": 8192,
"costPerToken": 0.00003
},
"google/gemini-pro": {
"maxTokens": 32768,
"costPerToken": 0.000001
}
}
}
}
_
Routing-Strategien
Last Balancing
json
{
"loadBalancing": {
"enabled": true,
"strategy": "round_robin",
"models": ["gpt-4", "claude-3-sonnet", "gemini-pro"],
"weights": {
"gpt-4": 0.4,
"claude-3-sonnet": 0.4,
"gemini-pro": 0.2
},
"healthCheck": {
"enabled": true,
"interval": 60,
"timeout": 10
}
}
}
_
Kostenoptimierung
json
{
"costOptimization": {
"enabled": true,
"budget": {
"daily": 10.00,
"monthly": 300.00,
"currency": "USD"
},
"rules": [
{
"condition": "tokenCount < 500",
"model": "gpt-3.5-turbo"
},
{
"condition": "tokenCount >= 500 && tokenCount < 2000",
"model": "claude-3-haiku"
},
{
"condition": "tokenCount >= 2000",
"model": "claude-3-sonnet"
}
]
}
}
_
Intelligentes Routing
json
{
"intelligentRouting": {
"enabled": true,
"rules": [
{
"name": "code_tasks",
"patterns": ["implement", "write code", "debug", "refactor"],
"model": "gpt-4",
"confidence": 0.8
},
{
"name": "analysis_tasks",
"patterns": ["analyze", "explain", "review", "understand"],
"model": "claude-3-sonnet",
"confidence": 0.9
},
{
"name": "creative_tasks",
"patterns": ["create", "design", "brainstorm", "generate"],
"model": "gemini-pro",
"confidence": 0.7
}
]
}
}
_
Monitoring und Analytics
Verwendung Tracking
```bash
View usage statistics
curl http://localhost:8080/api/stats
Model usage breakdown
curl http://localhost:8080/api/stats/models
Cost analysis
curl http://localhost:8080/api/stats/costs
Performance metrics
curl http://localhost:8080/api/stats/performance ```_
Logging Konfiguration
json
{
"logging": {
"level": "info",
"format": "json",
"outputs": ["console", "file"],
"file": {
"path": "./logs/router.log",
"maxSize": "100MB",
"maxFiles": 10,
"compress": true
},
"metrics": {
"enabled": true,
"interval": 60,
"endpoint": "/metrics"
}
}
}
_
Gesundheitsüberwachung
```bash
Health check endpoint
curl http://localhost:8080/health
Detailed health status
curl http://localhost:8080/health/detailed
Model availability
curl http://localhost:8080/health/models
Performance metrics
curl http://localhost:8080/metrics ```_
Erweiterte Funktionen
Transformation anfordern
```javascript // Custom request transformer const requestTransformer = { transform: (request, targetModel) => { // Modify request based on target model if (targetModel === 'gpt-4') { request.temperature = 0.3; // Lower temperature for code } else if (targetModel === 'claude-3-sonnet') { request.max_tokens = 4096; // Adjust token limit } return request; } };
// Response transformer const responseTransformer = { transform: (response, sourceModel) => { // Standardize response format return { | content: response.content | | response.message, | model: sourceModel, usage: response.usage, timestamp: new Date().toISOString() }; } }; ```_
Plugin System
```javascript // Router plugin interface class RouterPlugin { constructor(config) { this.config = config; }
onRequest(request, context) { // Pre-process request return request; }
onResponse(response, context) { // Post-process response return response; }
onError(error, context) { // Handle errors console.error('Router error:', error); } }
// Load plugins const plugins = [ new CostTrackingPlugin(), new CachePlugin(), new RateLimitPlugin() ]; ```_
Caching System
json
{
"cache": {
"enabled": true,
"type": "redis",
"connection": {
"host": "localhost",
"port": 6379,
"password": "${REDIS_PASSWORD}"
},
"ttl": 3600,
"keyPrefix": "claude-router:",
"compression": true,
"rules": [
{
"pattern": "explain*",
"ttl": 7200
},
{
"pattern": "generate*",
"ttl": 1800
}
]
}
}
_
Sicherheit und Authentifizierung
API Schlüsselverwaltung
json
{
"security": {
"authentication": {
"enabled": true,
"type": "bearer",
"keys": [
{
"key": "router-key-1",
"permissions": ["read", "write"],
"rateLimit": 1000
},
{
"key": "router-key-2",
"permissions": ["read"],
"rateLimit": 100
}
]
},
"encryption": {
"enabled": true,
"algorithm": "AES-256-GCM",
"keyRotation": 86400
}
}
}
_
Grenzwerte
json
{
"rateLimit": {
"enabled": true,
"global": {
"requests": 1000,
"window": 3600
},
"perKey": {
"requests": 100,
"window": 3600
},
"perModel": {
"gpt-4": {
"requests": 50,
"window": 3600
},
"claude-3-sonnet": {
"requests": 100,
"window": 3600
}
}
}
}
_
Fehlerbehebung
Gemeinsame Themen
```bash
Router not starting
- Check port availability
- Verify configuration file
- Check API key validity
- Review log files
Model connection failures
- Test API endpoints
- Verify API keys
- Check network connectivity
- Review rate limits
Performance issues
- Monitor memory usage
- Check cache configuration
- Review routing rules
- Optimize model selection ```_
Debug Mode
```bash
Enable debug logging
DEBUG=claude-router:* npm start
Verbose logging
claude-code-router --log-level debug
Request tracing
curl -H "X-Debug: true" http://localhost:8080/v1/messages
Performance profiling
curl http://localhost:8080/debug/profile ```_
Leistungsoptimierung
json
{
"performance": {
"connectionPool": {
"maxConnections": 100,
"timeout": 30000,
"keepAlive": true
},
"compression": {
"enabled": true,
"level": 6,
"threshold": 1024
},
"clustering": {
"enabled": true,
"workers": "auto"
}
}
}
_
Bereitstellung
Produktionsentwicklung
```yaml
Kubernetes deployment
apiVersion: apps/v1 kind: Deployment metadata: name: claude-router spec: replicas: 3 selector: matchLabels: app: claude-router template: metadata: labels: app: claude-router spec: containers: - name: claude-router image: claudecode/router:latest ports: - containerPort: 8080 env: - name: OPENAI_API_KEY valueFrom: secretKeyRef: name: api-keys key: openai - name: ANTHROPIC_API_KEY valueFrom: secretKeyRef: name: api-keys key: anthropic ```_
Docker komponiert
```yaml version: '3.8' services: claude-router: image: claudecode/router:latest ports: - "8080:8080" environment: - NODE_ENV=production - ROUTER_CONFIG=/app/config/production.json volumes: - ./config:/app/config - ./logs:/app/logs restart: unless-stopped
redis: image: redis:alpine ports: - "6379:6379" volumes: - redis_data:/data
volumes: redis_data: ```_
Ressourcen
- [Claude Code Router GitHub](LINK_5___ -%20[Dokumentation](LINK_5 -%20[Community%20Discord](_LINK_5___ -%20Video-Tutorials
- (OpenRouter Integration)(LINK_5)