ccr). It intercepts Claude Code traffic and forwards chat completions to Icelake.
Prerequisites
- Node.js 18+
- An Icelake account with API credits
- An API key from API keys
Fastest setup
1. Install Claude Code and the router
Note: CCR3.xis the desktop/UI product and does not useconfig.jsonthe same way. For the copy-paste JSON setup below, use 1.0.73 (or any 1.x withccr start/ccr code).
2. Create the router config
~/.claude-code-router/config.json (Windows: %USERPROFILE%\.claude-code-router\config.json):
icl_YOUR_KEY_HERE with your key. Confirm model ids with:
anthropic transformer (same pattern as other OpenAI-compatible Claude hosts). For non-Claude coding models only, you can switch the transformer to openrouter and set Router defaults to that model id.
If you edit config.json while the router is running, apply changes with ccr restart.
3. Launch
Staging / dev endpoint
Point the provider at the host that serves your preview/staging deployment of the platform API (same path shape:/api/v1/chat/completions). Production hosts:
| Environment | Base (append /chat/completions for the router) |
|---|---|
| Production | https://icelake.io/api/v1 |
https://<preview-host>/api/v1/chat/completions.
icelake-dev,claude-opus-4-8.
How the endpoint is used
| Piece | Value |
|---|---|
| Protocol | OpenAI Chat Completions |
| Path | POST /api/v1/chat/completions |
| Auth | Authorization: Bearer icl_… |
| Streaming | Supported (stream: true) |
| Models | From GET /api/v1/models |
Supported Claude-family models (examples)
Ids available on the public catalog (verify withGET /models):
| Model | Icelake id |
|---|---|
| Claude Opus 4.8 | claude-opus-4-8 |
| Claude Opus 4.8 Fast | claude-opus-4-8-fast |
| Claude Opus 4.7 | claude-opus-4-7 |
| Claude Opus 4.6 | claude-opus-4-6 |
| Claude Opus 4.5 | claude-opus-4-5 |
| Claude Sonnet 4.6 | claude-sonnet-4-6 |
| Claude Sonnet 4.5 | claude-sonnet-4-5 |
| Claude Sonnet 5 | claude-sonnet-5 |
| Claude Fable 5 | claude-fable-5 |
zai-org-glm-5-2, qwen3-coder-480b-a35b-instruct-turbo) also work through the same endpoint when listed in your provider config.
Switch models inside Claude Code
models array (and available from GET /models).
GUI config (optional)
Debugging
"LOG_LEVEL": "debug" in config for more detail.
Common issues:
| Symptom | Check |
|---|---|
| 401 | API key prefix icl_, not expired/revoked |
| 402 | Wallet credits on that environment |
| 404 model | Model id from GET /models for that env |
| Timeout | Raise API_TIMEOUT_MS; long agent turns need headroom |
Smoke-test the API (without Claude Code)
Before wiring the router, verify the endpoint:Notes
- Claude Code is built around Claude-specific features (e.g. extended thinking). Non-Claude models on Icelake work for many coding tasks but may not match Anthropic behavior 1:1.
- Prefer a strong coding model from
GET /modelsas your Routerdefault. Claude-family models may require a paid plan; free tiers can use models likezai-org-glm-5-2orqwen3-coder-480b-a35b-instruct-turbofor smoke tests. - Keep keys out of git; use a local config file only.
Related
- Quickstart
- OpenAI SDK
- Tools & OpenRouter-style clients
- Chat completions
- Marketing overview: Claude Code with Icelake