About claude-multi.
claude-multi is a CLI that runs multiple Claude Code instances side by side. Each one talks to a different AI provider and keeps its own config directory.
A config directory is a single shared state.
Claude Code stores everything in ~/.claude: settings, MCP servers, plugins, skills, history. Try a second model and that one directory becomes a problem. I ended up editing settings by hand, swapping keys, and keeping shell aliases nobody asked for. Sessions and context get overwritten and you find out later.
claude-multi gives every provider its own alias and config directory. One alias per provider (claude-glm, claude-deepseek, claude-anthropic), each rooted under ~/.claude-multi/. Plugins and skills symlink from your primary install, so you still maintain them in one place.
There are no daemons and no background services. Nothing phones home. Every instance is a real directory you can cd into and inspect with the tools you already use.
What I optimize for.
Zero magic
Every instance is a real directory at ~/.claude-multi/<name>. Open it, edit it, or delete it. Nothing is hidden from you.
Native passthrough
Each alias is a thin wrapper around the official claude binary. All flags, commands, and keybindings pass through unchanged.
Templates over docs
Provider templates come with the right base URLs, model mappings, and defaults. Drop in your API key and go.
Reversible everything
Migrations back up config files. Plugin operations rename to backup before deleting. Health checks help you recover broken state.
A wrapper, not a fork.
When you run claude-multi add glm --provider glm, four things happen:
- 1claude-multi creates a directory at
~/.claude-multi/glm/with its ownsettings.json,.claude.json, and history. - 2It merges the provider's env vars (base URL, model mappings) into that instance's settings and never touches your primary
~/.claude. - 3It symlinks plugins and skills from your primary install. Update once and every instance sees it.
- 4A wrapper script at
~/.bun/bin/claude-glmlaunches the officialclaudebinary withCLAUDE_CONFIG_DIRpointed at the new instance.
That's the whole trick. One environment variable pointing at a config directory, plus a few symlinks. Nothing proxies your traffic and nothing patches the binary.
At a glance.
Built by hmziqrs.
I'm an independent developer and I build open-source tooling for my own workflow first. claude-multi exists because switching providers halfway through a day kept breaking my setup, and every alternative meant learning a new CLI I did not want to learn.
Ready to try it?
One npm install, two commands, and you have your first provider running.