Skip to main content
Claude Code is Anthropic’s agentic coding CLI. Point it at Icelake for private, usage-based inference on OpenAI-compatible models. Claude Code talks to Anthropic’s API by default. To use Icelake you need a small local proxy: claude-code-router (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: CCR 3.x is the desktop/UI product and does not use config.json the same way. For the copy-paste JSON setup below, use 1.0.73 (or any 1.x with ccr start / ccr code).

2. Create the router config

Create ~/.claude-code-router/config.json (Windows: %USERPROFILE%\.claude-code-router\config.json):
Replace icl_YOUR_KEY_HERE with your key. Confirm model ids with:
Claude-family model ids work best with the 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

Or:

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: Use a key created in that environment. For a Vercel preview URL, use https://<preview-host>/api/v1/chat/completions.
Then set Router defaults to icelake-dev,claude-opus-4-8.

How the endpoint is used

The router converts Claude Code’s Anthropic-shaped requests into OpenAI chat completions for Icelake. You do not need a separate Icelake “Claude Code API” — the standard public chat endpoint is the integration surface.

Supported Claude-family models (examples)

Ids available on the public catalog (verify with GET /models): Non-Claude coding models (e.g. 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

Use any id listed under your provider’s models array (and available from GET /models).

GUI config (optional)

Opens a browser UI for editing providers and routing without hand-editing JSON.

Debugging

Set "LOG_LEVEL": "debug" in config for more detail. Common issues:

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 /models as your Router default. Claude-family models may require a paid plan; free tiers can use models like zai-org-glm-5-2 or qwen3-coder-480b-a35b-instruct-turbo for smoke tests.
  • Keep keys out of git; use a local config file only.