One command, your provider, zero changes to your Claude Code configuration. The provider's settings live only inside that session. Several Claude accounts, personal and Team, work side by side the same way.
The same prompt in two terminals: wrapper-code claude on the left, wrapper-code deepseek on the right. When both finish, wrapper-code usage shows the requests and tokens of each one, by model.
Only environment variables change, and only for that process. Plain claude keeps using Anthropic, and nothing is written under ~/.claude.
Run several Claude Code sessions at the same time, each with its own LLM: wrapper-code deepseek in one terminal, wrapper-code qwencloud in another, plain claude in a third.
Several Claude logins at once, a personal plan and a Team on the same e-mail included. wrapper-code claude --account work opens one, --temp logs in for a single session. Plain claude keeps its own.
Use a subscription you already pay for, such as Kimi Code, the Qwen Token Plan or the GLM Coding Plan, or pay per token. wrapper-code list shows how each provider bills.
The first launch opens a local page: paste the key, pick a model profile, and the key is tested before anything is saved.
Each session records its requests and tokens locally. wrapper-code usage adds them up by provider, model and day, wrapper-code usage clear deletes them, and wrapper-code claude counts your Anthropic usage too. Nothing leaves your machine.
| Command | Provider | Profiles | |
|---|---|---|---|
wrapper-code claude |
Claude Code Your own Claude Code login |
|
docs |
wrapper-code deepseek |
DeepSeek API key |
|
docs |
wrapper-code kimi-code |
Kimi Code Kimi Code API key |
|
docs |
wrapper-code kimi |
Kimi (Moonshot API) Moonshot API key |
|
docs |
wrapper-code ollama |
Ollama No key |
|
docs |
wrapper-code openrouter |
OpenRouter OpenRouter API key |
|
docs |
wrapper-code qwencloud-token |
Qwen Cloud Token Plan Token Plan API key |
|
docs |
wrapper-code qwencloud |
Qwen Cloud Qwen Cloud API key |
|
docs |
wrapper-code zai-coding |
Z.ai GLM Coding Plan Z.ai API key |
|
docs |
claude-code-router (CCR) is a local gateway that routes, rewrites and retries every request, for Claude Code and other agents. wrapper-code only sets up the environment of one session and gets out of the way: nothing between Claude Code and the provider, nothing running when you are not working, plain claude untouched. If you need routing, fallbacks or other agents, use CCR.
claude-code-router (CCR) is the best-known way to run Claude Code on other models. It is a local gateway: a background service on 127.0.0.1:3456 receives every request from Claude Code (and from Codex, Kimi CLI, OpenCode and other agents), decides per request which provider and model to call, and can rewrite, retry, fall back to another model or key, translate to OpenAI- and Gemini-style APIs, and add vision, web search or MCP tools to a model that lacks them. It has a management UI, request logs with cost estimates, a desktop app and Docker images. If you need any of that, use CCR.
wrapper-code wants to solve a smaller problem: start one Claude Code session on one other provider, with nothing changed for your normal Claude Code and nothing extra running. It sets the provider's ANTHROPIC_BASE_URL, key and model variables in the environment of one claude process and gets out of the way. That is the whole design, and it is where its advantages come from:
claude exits, wrapper-code prints the usage block and exits too.claude cannot be hijacked. Nothing is written under ~/.claude, and there is no "system default" mode, so no setting could make your normal Claude Code talk to another backend. CCR has such a scope; its own guide recommends starting with "only opened from CCR" for the same reason.wrapper-code deepseek, wrapper-code ollama and plain claude can run at the same time in three terminals.cat; export the same variables by hand and you get the same session, with or without wrapper-code.What wrapper-code does not do, by design: per-request routing, fallbacks, retries, key rotation, several providers in one session, protocol translation (the provider must speak the Anthropic Messages API), other agents than Claude Code. This reflects CCR 3.1 and its documentation (September 2026); check its repository for the current state.
Both can be installed at once. If a CCR profile is set as "system default", check that it did not add ANTHROPIC_BASE_URL to the env block of ~/.claude/settings.json: settings there win over the variables wrapper-code sets.
ANTHROPIC_API_KEY is removed so Claude Code cannot fall back to Anthropic.127.0.0.1 for Claude Code's own token counts, which become the usage report.claude on your PATH and runs it with that environment, forwarding your arguments and its exit code.wrapper-code claude is the exception: it skips the first three steps and runs your own Claude Code with your environment as it is, only adding the receiver.
Requires Node.js 18+ and Claude Code. Works on macOS, Linux and Windows. Version v0.6.1.