DEV Community

Mohsin Sheikhani
Mohsin Sheikhani

Posted on

How to Use Claude Code with Qwen models for Free (Linux)

Prerequisites

  • Qwen CLI installed and authenticated
  • Node.js v18+ installed

Step 1: Install Claude, Claude Code Router and Qwen Code

npm install -g @qwen-code/qwen-code@latest
Enter fullscreen mode Exit fullscreen mode
npm install -g @anthropic-ai/claude-code @musistudio/claude-code-router
Enter fullscreen mode Exit fullscreen mode

Step 2: Extract Your Access Token

Replace LINUX_USER with your Linux username.

Open /home/LINUX_USER/.qwen/oauth_creds.json

It should look something like this:

{
  "access_token": "YOUR_QWEN_ACCESS_TOKEN_HERE",
  "token_type": "Bearer",
  "refresh_token": "YOUR_QWEN_REFRESH_TOKEN_HERE",
  "resource_url": "portal.qwen.ai",
  "expiry_date": 1764876220290
}
Enter fullscreen mode Exit fullscreen mode

Copy the access_token value.

Step 3: Create router config

cat > ~/.claude-code-router/config.json << 'EOF'
{
  "LOG": true,
  "LOG_LEVEL": "info",
  "HOST": "127.0.0.1",
  "PORT": 3456,
  "API_TIMEOUT_MS": 600000,
  "Providers": [
    {
      "name": "qwen",
      "api_base_url": "https://portal.qwen.ai/v1/chat/completions",
      "api_key": "$QWEN_ACCESS_TOKEN",
      "models": [
        "qwen3-coder-plus",
        "qwen3-coder-plus",
        "qwen3-coder-plus"
      ]
    }
  ],
  "Router": {
    "default": "qwen,qwen3-coder-plus",
    "background": "qwen,qwen3-coder-plus",
    "think": "qwen,qwen3-coder-plus",
    "longContext": "qwen,qwen3-coder-plus",
    "longContextThreshold": 60000,
    "webSearch": "qwen,qwen3-coder-plus"
  }
}
EOF
Enter fullscreen mode Exit fullscreen mode

Verify file was created

cat ~/.claude-code-router/config.json
Enter fullscreen mode Exit fullscreen mode

Step 4: Set your Access Token

echo 'export QWEN_ACCESS_TOKEN="YOUR_QWEN_ACCESS_TOKEN_HERE"' >> ~/.zshrc
Enter fullscreen mode Exit fullscreen mode
source ~/.zshrc
Enter fullscreen mode Exit fullscreen mode

Step 5: Verify Setup

claude --version        # Should show: Claude Code v2.x.x
ccr version             # Should show version number
echo $QWEN_ACCESS_TOKEN # Should show your token
Enter fullscreen mode Exit fullscreen mode

Step 6: Start Using

Restart the router server:

ccr restart
Enter fullscreen mode Exit fullscreen mode

Run Claude Code with Qwen models:

ccr code
Enter fullscreen mode Exit fullscreen mode

Test with:

> hi
Enter fullscreen mode Exit fullscreen mode

Token Refresh (When you get 401 errors)

Your OAuth token expires. Refresh it by:

  1. Re-authenticating your QWEN CODE CLI: If already logged in and the access_token matches in both config.json and oauth_creds.json, delete the oauth_creds.json file and run qwen to initiate re-authentication.
  2. Update the api_key in your config.json with the new access_token: nano ~/.claude-code-router/config.json
  3. Restart: ccr restart

Hopefully this will help you learn Claude Code for Free 💖

Top comments (0)