Pick an OpenRouter model, launch Claude Code with it. Also includes provider scripts for MiniMax and Z.ai.
# Clone and symlink all scripts
git clone https://github.com/burka/claude-router.git
ln -s "$(pwd)/claude-router/claude-router" ~/.local/bin/claude-router
ln -s "$(pwd)/claude-router/claude-minimax" ~/.local/bin/claude-minimax
ln -s "$(pwd)/claude-router/claude-zai" ~/.local/bin/claude-zai
# Set API keys in ~/.env
echo "OPENROUTER_API_KEY=sk-or-..." >> ~/.env
echo "MINIMAX_API_KEY=..." >> ~/.env
echo "ZAI_API_KEY=..." >> ~/.envRequires curl, jq, and optionally fzf for interactive picking.
claude-router # Interactive picker (fzf)
claude-router auto # Best free model
claude-router --free # Pick from free models only
claude-router --list # Browse available models
claude-router openai/gpt-4o # Launch with specific model
claude-router auto -- -p "hello" # Pass args to claude
claude-minimax # Launch with MiniMax MoE
claude-zai # Launch with Zhipu GLM (Z.ai token plan)Set default claude CLI args via environment variable or ~/.env:
# ~/.env
CLAUDE_DEFAULT_PARAMS="--permission-mode auto"
CLAUDE_DEFAULT_PARAMS="--team"
CLAUDE_DEFAULT_PARAMS="-t"Or via environment:
CLAUDE_DEFAULT_PARAMS="--permission-mode auto" claude-router openai/gpt-4oUser-specified args always override CLAUDE_DEFAULT_PARAMS.
Wrap the claude launch command with nice, taskset, prlimit, etc.
Set via ~/.env or environment:
# ~/.env — pin to cores 2-7, set memory limits
CLAUDE_DEFAULT_WRAPPER="nice -n 20 taskset -c 2-7 prlimit --as=128000000000 --rss=64000000000"# Via environment
CLAUDE_DEFAULT_WRAPPER="echo running:" claude-router -p "hello"claude-routerfetches models from the OpenRouter API (cached daily in~/.cache/claude-router/)- Filters for text models with tool support
- Sets
ANTHROPIC_BASE_URL,ANTHROPIC_AUTH_TOKEN, and model env vars, then launchesclaude claude-minimaxandclaude-zaiset their provider's endpoint and auth directly