{"versions":{"2.1.0":{"name":"claude-code-router","version":"2.1.0","description":"Advanced routing and transformation system for Claude Code outputs to multiple AI providers","bin":{"ccr":"dist/cli.js"},"scripts":{"build":"tsc && esbuild src/cli.ts --bundle --platform=node --outfile=dist/cli.js --external:tiktoken --external:@anthropic-ai/sdk --banner:js='#!/usr/bin/env node'","dev":"tsx src/cli.ts","test":"jest","test:watch":"jest --watch","clean":"rm -rf dist/","prebuild":"npm run clean","release":"npm run build && npm publish"},"keywords":["claude","code","router","llm","anthropic","codewhisperer","openai","multi-provider"],"author":{"name":"Jason Zhang"},"license":"MIT","dependencies":{"@anthropic-ai/sdk":"^0.30.1","axios":"^1.7.9","chalk":"^5.3.0","commander":"^12.1.0","dotenv":"^16.4.7","express":"^5.1.0","fastify":"^5.4.0","http-proxy-middleware":"^3.0.5","json5":"^2.2.3","tiktoken":"^1.0.21","uuid":"^11.1.0"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^24.0.15","@types/uuid":"^10.0.0","esbuild":"^0.25.1","jest":"^29.7.0","ts-jest":"^29.4.0","tsx":"^4.19.2","typescript":"^5.8.2"},"publishConfig":{"ignore":["!dist/","src/","test/","*.test.js","*.test.ts"]},"engines":{"node":">=16.0.0"},"_id":"claude-code-router@2.1.0","gitHead":"c8e6f5996d57799b979b4db567e998a8660ea268","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-utDcKcuZoKpaIU3LpIdYTgLEyd8xdF3WPbV9AouEKvpappy54a4WDYZQ8+2VC5jLElir/pSTAfB2KEiOJiJygQ==","shasum":"61b0989b6fb8662122a559963d1d8714108104a3","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/claude-code-router/-/claude-code-router-2.1.0.tgz","fileCount":414,"unpackedSize":4833861,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIF+rkTvBUR5FnBvmLnaGYPgFnz+xF+q2go3gWGDD6OmjAiEAtlwcZPjxsPV9xLrHg7cZsI2GYYDfWvLwgxcfkx7zsZY="}],"size":975268},"_npmUser":{"name":"anonymous","email":"jason.zhangfan@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jason.zhangfan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-code-router_2.1.0_1753545289669_0.9204283655167689"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-26T15:54:49.933Z","publish_time":1753545289933,"_source_registry_name":"default","contributors":[]},"2.1.1":{"name":"claude-code-router","version":"2.1.1","description":"Advanced routing and transformation system for Claude Code outputs to multiple AI providers","bin":{"ccr":"dist/cli.js","claude-code-router":"dist/cli.js"},"main":"./dist/cli.js","scripts":{"build":"tsc && esbuild src/cli.ts --bundle --platform=node --outfile=dist/cli.js --external:tiktoken --external:@anthropic-ai/sdk --banner:js='#!/usr/bin/env node'","dev":"tsx src/cli.ts","test":"jest","test:watch":"jest --watch","clean":"rm -rf dist/","prebuild":"npm run clean","release":"npm run build && npm publish"},"keywords":["claude","code","router","llm","anthropic","codewhisperer","openai","multi-provider"],"author":{"name":"Jason Zhang"},"license":"MIT","dependencies":{"@anthropic-ai/sdk":"^0.30.1","axios":"^1.7.9","chalk":"^5.3.0","commander":"^12.1.0","dotenv":"^16.4.7","express":"^5.1.0","fastify":"^5.4.0","http-proxy-middleware":"^3.0.5","json5":"^2.2.3","tiktoken":"^1.0.21","uuid":"^11.1.0"},"devDependencies":{"@types/jest":"^29.5.14","@types/node":"^24.0.15","@types/uuid":"^10.0.0","esbuild":"^0.25.1","jest":"^29.7.0","ts-jest":"^29.4.0","tsx":"^4.19.2","typescript":"^5.8.2"},"repository":{"type":"git","url":"git+https://github.com/fanzhang16/claude-code-router.git"},"homepage":"https://github.com/fanzhang16/claude-code-router#readme","bugs":{"url":"https://github.com/fanzhang16/claude-code-router/issues"},"engines":{"node":">=16.0.0"},"_id":"claude-code-router@2.1.1","gitHead":"3f9051627ddfa74c86507ed0362cf1013e3f5c89","types":"./dist/cli.d.ts","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-CQRAetX3Cp8Tg4Wduv5IXBI78FpXeFHAp2qRCOjGkHoJIjBw4oHm7VKTmaZF4XBZHTYJJJ1C8NeFFx1nv6FCBw==","shasum":"7d9f9b97437197e45d47d95ad46deb1435b07925","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/claude-code-router/-/claude-code-router-2.1.1.tgz","fileCount":148,"unpackedSize":2688215,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDPJhPzoyef0ciphulptqZrwjA4RSdYWMezE3WgQldbWQIhAM0nmkPw4FWGYu4W3Mn38XB98kQ700uq0CAwT3XkXPdO"}],"size":485227},"_npmUser":{"name":"anonymous","email":"jason.zhangfan@gmail.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"jason.zhangfan@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-code-router_2.1.1_1753581691761_0.5315801429109632"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-27T02:01:32.006Z","publish_time":1753581692006,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"2.1.1"},"name":"claude-code-router","time":{"created":"2025-07-26T15:55:06.510Z","modified":"2025-07-27T02:01:40.953Z","2.1.0":"2025-07-26T15:54:49.933Z","2.1.1":"2025-07-27T02:01:32.006Z"},"readme":"# Claude Code Router\n\n🚀 **A high-performance, multi-provider routing system for Claude Code that supports seamless switching between AWS CodeWhisperer, OpenAI-compatible APIs, and other providers.**\n\n[![npm version](https://badge.fury.io/js/claude-code-router.svg)](https://badge.fury.io/js/claude-code-router)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## ✨ Features\n\n- 🔄 **Multi-Provider Support**: AWS CodeWhisperer, OpenAI-compatible APIs, and more\n- 🎯 **Smart Routing**: Route different types of requests to optimal providers\n- 🛠️ **Perfect Tool Call Support**: Advanced tool call parsing and buffered processing\n- 🔧 **Format Transformation**: Seamless conversion between API formats\n- 📊 **Load Balancing**: Multiple provider instances with automatic load balancing\n- 🔍 **Comprehensive Logging**: Full debugging and monitoring capabilities\n- ⚡ **High Performance**: Optimized for speed and reliability\n- 🔐 **Secure Authentication**: Multiple authentication methods supported\n\n## 🚀 Quick Start\n\n### Installation\n\n#### Option 1: NPM Installation (Recommended)\n```bash\nnpm install -g claude-code-router\n```\n\n#### Option 2: Install Claude Code (includes routing capabilities)\n```bash\n# Install Claude Code which can work with the router\ncurl -fsSL https://claude.ai/install.sh | sh\n```\n\n#### Option 3: Manual Installation\n```bash\ngit clone https://github.com/your-username/claude-code-router.git\ncd claude-code-router\nnpm install\nnpm run build\nnpm link\n```\n\n### Basic Usage\n\n1. **Start the Router**:\n```bash\nclaude-code-router start\n```\n\n2. **Configure Claude Code to Use Router**:\n```bash\nexport ANTHROPIC_BASE_URL=\"http://127.0.0.1:3456\"\nexport ANTHROPIC_API_KEY=\"your-router-key\"\n```\n\n3. **Use Claude Code Normally**:\n```bash\nclaude \"Help me write a Python script\"\n```\n\n## 📋 Configuration\n\n### Creating Configuration File\n\nCreate a configuration file at `~/.claude-code-router/config.json`:\n\n```json\n{\n  \"server\": {\n    \"port\": 3456,\n    \"host\": \"127.0.0.1\"\n  },\n  \"routing\": {\n    \"rules\": {\n      \"default\": {\n        \"provider\": \"codewhisperer-primary\",\n        \"model\": \"CLAUDE_SONNET_4_20250514_V1_0\"\n      },\n      \"background\": {\n        \"provider\": \"codewhisperer-primary\", \n        \"model\": \"CLAUDE_3_5_HAIKU_20241022_V1_0\"\n      },\n      \"thinking\": {\n        \"provider\": \"codewhisperer-primary\",\n        \"model\": \"CLAUDE_SONNET_4_20250514_V1_0\"\n      },\n      \"longcontext\": {\n        \"provider\": \"codewhisperer-primary\",\n        \"model\": \"CLAUDE_SONNET_4_20250514_V1_0\"\n      },\n      \"search\": {\n        \"provider\": \"openai-compatible\",\n        \"model\": \"gemini-2.5-flash\"\n      }\n    },\n    \"defaultProvider\": \"codewhisperer-primary\",\n    \"providers\": {\n      \"codewhisperer-primary\": {\n        \"type\": \"codewhisperer\",\n        \"endpoint\": \"https://codewhisperer.us-east-1.amazonaws.com\",\n        \"authentication\": {\n          \"type\": \"bearer\",\n          \"credentials\": {\n            \"tokenPath\": \"~/.aws/sso/cache/your-auth-token.json\"\n          }\n        },\n        \"settings\": {\n          \"profileArn\": \"arn:aws:codewhisperer:us-east-1:ACCOUNT:profile/PROFILE_ID\",\n          \"categoryMappings\": {\n            \"default\": true,\n            \"background\": true,\n            \"thinking\": true,\n            \"longcontext\": true,\n            \"search\": true\n          },\n          \"models\": [\n            \"CLAUDE_SONNET_4_20250514_V1_0\",\n            \"CLAUDE_3_5_HAIKU_20241022_V1_0\",\n            \"CLAUDE_3_7_SONNET_20250219_V1_0\"\n          ],\n          \"defaultModel\": \"CLAUDE_SONNET_4_20250514_V1_0\"\n        }\n      },\n      \"openai-compatible\": {\n        \"type\": \"openai\",\n        \"endpoint\": \"https://api.openai.com/v1/chat/completions\",\n        \"authentication\": {\n          \"type\": \"bearer\",\n          \"credentials\": {\n            \"apiKey\": \"sk-your-openai-api-key-here\"\n          }\n        },\n        \"settings\": {\n          \"categoryMappings\": {\n            \"default\": false,\n            \"background\": false,\n            \"thinking\": false,\n            \"longcontext\": false,\n            \"search\": true\n          },\n          \"models\": [\"gpt-4\", \"gpt-3.5-turbo\"],\n          \"defaultModel\": \"gpt-4\"\n        }\n      },\n      \"gemini-provider\": {\n        \"type\": \"openai\",\n        \"endpoint\": \"https://generativelanguage.googleapis.com/v1beta/chat/completions\",\n        \"authentication\": {\n          \"type\": \"bearer\",\n          \"credentials\": {\n            \"apiKey\": \"your-gemini-api-key\"\n          }\n        },\n        \"settings\": {\n          \"categoryMappings\": {\n            \"search\": true\n          },\n          \"models\": [\"gemini-2.5-flash\", \"gemini-pro\"],\n          \"defaultModel\": \"gemini-2.5-flash\"\n        }\n      }\n    }\n  },\n  \"debug\": {\n    \"enabled\": true,\n    \"logLevel\": \"info\",\n    \"traceRequests\": true,\n    \"saveRequests\": true,\n    \"logDir\": \"~/.claude-code-router/logs\"\n  }\n}\n```\n\n## 🔧 Supported Formats and Providers\n\n### Provider Types\n\n#### 1. AWS CodeWhisperer\n- **Type**: `codewhisperer`\n- **Authentication**: Bearer token via AWS SSO\n- **Features**: Native Claude 4 support, tool calls, 128K context\n- **Models**: \n  - `CLAUDE_SONNET_4_20250514_V1_0`\n  - `CLAUDE_3_5_HAIKU_20241022_V1_0`\n  - `CLAUDE_3_7_SONNET_20250219_V1_0`\n\n#### 2. OpenAI-Compatible APIs\n- **Type**: `openai`\n- **Authentication**: Bearer token (API Key)\n- **Features**: Universal compatibility with OpenAI-format APIs\n- **Providers**:\n  - OpenAI (GPT-4, GPT-3.5-turbo)\n  - Google Gemini (via OpenAI-compatible endpoint)\n  - Third-party providers (Anthropic, etc.)\n\n### Routing Categories\n\n- **`default`**: General conversations and coding tasks\n- **`background`**: Background processing, less critical tasks\n- **`thinking`**: Complex reasoning and analysis\n- **`longcontext`**: Long document processing\n- **`search`**: Search and information retrieval\n\n## 🛠️ Advanced Configuration\n\n### Multiple Provider Instances (Load Balancing)\n\n```json\n{\n  \"providers\": {\n    \"codewhisperer-primary\": {\n      \"type\": \"codewhisperer\",\n      \"instances\": [\n        {\n          \"endpoint\": \"https://codewhisperer.us-east-1.amazonaws.com\",\n          \"authentication\": { \"tokenPath\": \"~/.aws/sso/cache/token1.json\" }\n        },\n        {\n          \"endpoint\": \"https://codewhisperer.us-west-2.amazonaws.com\",  \n          \"authentication\": { \"tokenPath\": \"~/.aws/sso/cache/token2.json\" }\n        }\n      ],\n      \"loadBalancing\": {\n        \"strategy\": \"round-robin\",\n        \"healthCheck\": true\n      }\n    }\n  }\n}\n```\n\n### Custom Routing Rules\n\n```json\n{\n  \"routing\": {\n    \"customRules\": [\n      {\n        \"condition\": {\n          \"modelContains\": \"gpt\",\n          \"hasTools\": true\n        },\n        \"target\": {\n          \"provider\": \"openai-compatible\",\n          \"model\": \"gpt-4\"\n        }\n      },\n      {\n        \"condition\": {\n          \"messageLength\": \"> 10000\"\n        },\n        \"target\": {\n          \"provider\": \"codewhisperer-primary\",\n          \"model\": \"CLAUDE_SONNET_4_20250514_V1_0\"\n        }\n      }\n    ]\n  }\n}\n```\n\n## 🔍 Tool Call Support\n\nClaude Code Router provides **advanced tool call processing** with:\n\n- ✅ **Perfect Tool Call Parsing**: Handles fragmented tool calls across multiple events\n- ✅ **Buffered Processing**: Accumulates complete responses before processing\n- ✅ **Format Conversion**: Seamless conversion between provider formats\n- ✅ **Error Recovery**: Automatically fixes common tool call issues\n- ✅ **Streaming Support**: Real-time tool call processing in streaming mode\n\n### Tool Call Formats Supported\n\n#### Anthropic Format (Input)\n```json\n{\n  \"model\": \"claude-3\",\n  \"messages\": [...],\n  \"tools\": [\n    {\n      \"name\": \"search_web\",\n      \"description\": \"Search the web for information\",\n      \"input_schema\": {\n        \"type\": \"object\",\n        \"properties\": {\n          \"query\": {\"type\": \"string\"}\n        }\n      }\n    }\n  ]\n}\n```\n\n#### OpenAI Format (Provider)\n```json\n{\n  \"model\": \"gpt-4\",\n  \"messages\": [...],\n  \"tools\": [\n    {\n      \"type\": \"function\",\n      \"function\": {\n        \"name\": \"search_web\",\n        \"description\": \"Search the web for information\",\n        \"parameters\": {\n          \"type\": \"object\",\n          \"properties\": {\n            \"query\": {\"type\": \"string\"}\n          }\n        }\n      }\n    }\n  ]\n}\n```\n\n## 📊 Monitoring and Debugging\n\n### Built-in Status Endpoint\n\n```bash\ncurl http://127.0.0.1:3456/status\n```\n\n### Health Check\n\n```bash\ncurl http://127.0.0.1:3456/health\n```\n\n### Debug Mode\n\nEnable comprehensive logging:\n\n```json\n{\n  \"debug\": {\n    \"enabled\": true,\n    \"logLevel\": \"debug\",\n    \"traceRequests\": true,\n    \"saveRequests\": true,\n    \"logDir\": \"~/.claude-code-router/logs\"\n  }\n}\n```\n\n### Log Analysis\n\n```bash\n# View live logs\ntail -f ~/.claude-code-router/logs/ccr-$(date +%Y-%m-%d).log\n\n# Search for tool call issues\ngrep \"tool_use\" ~/.claude-code-router/logs/ccr-*.log\n\n# Monitor response fixes\ngrep \"Applied response fixes\" ~/.claude-code-router/logs/ccr-*.log\n```\n\n## 🚀 CLI Commands\n\n```bash\n# Start the router\nclaude-code-router start\n\n# Start with custom config\nclaude-code-router start --config /path/to/config.json\n\n# Start on custom port\nclaude-code-router start --port 3457\n\n# Check status\nclaude-code-router status\n\n# Stop the router\nclaude-code-router stop\n\n# View logs\nclaude-code-router logs\n\n# Test configuration\nclaude-code-router test-config\n```\n\n## 🔧 Environment Variables\n\n```bash\n# Router Configuration\nexport CCR_CONFIG_PATH=\"~/.claude-code-router/config.json\"\nexport CCR_PORT=\"3456\"\nexport CCR_LOG_LEVEL=\"info\"\n\n# Claude Code Integration\nexport ANTHROPIC_BASE_URL=\"http://127.0.0.1:3456\"\nexport ANTHROPIC_API_KEY=\"your-router-key\"\n\n# AWS CodeWhisperer\nexport AWS_PROFILE=\"your-aws-profile\"\nexport AWS_REGION=\"us-east-1\"\n```\n\n## 🔐 Authentication Methods\n\n### AWS CodeWhisperer Authentication\n\n1. **AWS SSO Token** (Recommended):\n```json\n{\n  \"authentication\": {\n    \"type\": \"bearer\",\n    \"credentials\": {\n      \"tokenPath\": \"~/.aws/sso/cache/your-token.json\"\n    }\n  }\n}\n```\n\n2. **Direct Token**:\n```json\n{\n  \"authentication\": {\n    \"type\": \"bearer\",\n    \"credentials\": {\n      \"token\": \"your-bearer-token\"\n    }\n  }\n}\n```\n\n### OpenAI-Compatible Authentication\n\n```json\n{\n  \"authentication\": {\n    \"type\": \"bearer\",\n    \"credentials\": {\n      \"apiKey\": \"sk-your-api-key\"\n    }\n  }\n}\n```\n\n## 📈 Performance Optimization\n\n### Buffered Processing\n\nClaude Code Router uses advanced buffered processing for optimal performance:\n\n- **Complete Response Assembly**: Waits for full responses before processing\n- **Intelligent Parsing**: Advanced algorithms for tool call extraction\n- **Error Recovery**: Automatic fixing of common parsing issues\n- **Memory Efficient**: Optimized memory usage for large responses\n\n### Connection Pooling\n\n```json\n{\n  \"providers\": {\n    \"provider-name\": {\n      \"settings\": {\n        \"connectionPool\": {\n          \"maxConnections\": 10,\n          \"keepAlive\": true,\n          \"timeout\": 30000\n        }\n      }\n    }\n  }\n}\n```\n\n## 🛡️ Security Features\n\n- 🔐 **Token Encryption**: Secure token storage and transmission\n- 🚫 **Request Filtering**: Block malicious requests\n- 📝 **Audit Logging**: Complete request/response logging\n- 🔒 **Access Control**: IP-based access restrictions\n- 🛡️ **Rate Limiting**: Prevent abuse and ensure fair usage\n\n## 🚨 Troubleshooting\n\n### Common Issues\n\n#### 1. Tool Calls Not Working\n```bash\n# Check tool call parsing\ngrep \"tool_use\" ~/.claude-code-router/logs/ccr-*.log\n\n# Verify response fixing\ngrep \"Applied response fixes\" ~/.claude-code-router/logs/ccr-*.log\n```\n\n#### 2. Provider Connection Issues\n```bash\n# Test provider health\ncurl http://127.0.0.1:3456/health\n\n# Check authentication\ngrep \"Authentication\" ~/.claude-code-router/logs/ccr-*.log\n```\n\n#### 3. High Memory Usage\n```bash\n# Monitor memory usage\nps aux | grep claude-code-router\n\n# Check log file sizes\ndu -sh ~/.claude-code-router/logs/\n```\n\n### Debug Mode\n\nEnable comprehensive debugging:\n\n```bash\nclaude-code-router start --debug --log-level debug\n```\n\n## 🤝 Contributing\n\nWe welcome contributions! Please see our [Contributing Guide](CONTRIBUTING.md) for details.\n\n### Development Setup\n\n```bash\ngit clone https://github.com/your-username/claude-code-router.git\ncd claude-code-router\nnpm install\nnpm run dev\n```\n\n### Running Tests\n\n```bash\n# Run all tests\nnpm test\n\n# Run specific test category\nnpm run test:integration\nnpm run test:functional\nnpm run test:performance\n```\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- AWS CodeWhisperer team for the excellent API\n- OpenAI for the standardized API format\n- Anthropic for Claude and Claude Code\n- All contributors and users of this project\n\n## 📞 Support\n\n- 📖 **Documentation**: [Full Documentation](https://github.com/your-username/claude-code-router/wiki)\n- 🐛 **Issues**: [GitHub Issues](https://github.com/your-username/claude-code-router/issues)\n- 💬 **Discussions**: [GitHub Discussions](https://github.com/your-username/claude-code-router/discussions)\n- 📧 **Email**: support@claude-code-router.com\n\n---\n\n**Made with ❤️ for the Claude Code community**","users":{}}