multi-claude — Run Multiple Claude Accounts (and Local LLMs) on One Machine
multi-claude
Imagine this:
mcc work # your work Anthropic account
mcc personal # a totally separate personal account
mcc local # Claude Code wired to a model running on your own machineThree accounts. Three model endpoints. One command each. No editing environment variables, no logging out and back in, no fear of session state leaking from one context into another.
That's multi-claude — mcc for short.
The problem it solves
Claude Code keeps everything in one directory: ~/.claude. One account, one set of credentials, one history. Great until you need separation:
- Two accounts — a work seat and a personal one, and you're tired of signing out to swap.
- Client isolation — an engagement that should never see your other projects or history.
- A local or custom model — you want to run Claude Code against a model on your own hardware, or any Anthropic-compatible endpoint, without touching your real setup.
The hand-rolled fix is juggling CLAUDE_CONFIG_DIR by hand and hoping you exported the right value in the right terminal. One slip and your session lands in the wrong place. mcc makes the whole thing one command.
Point a profile at a local LLM
This is the part people don't expect. Each profile can target a custom model endpoint through a provider.json — and the easiest way to set it up is the built-in web UI:
mcc ui # opens the provider config UI on port 8989provider.json takes four fields:
| Field | Description |
|---|---|
api_url |
Base URL of the endpoint |
api_key |
API key for the endpoint |
model |
Model name to request |
type |
anthropic_compat or openai_compat |
Two modes:
anthropic_compat— a direct base URL + API key override. No proxy. Point at any Anthropic-compatible endpoint.openai_compat— routes through a local proxy that translates between the Anthropic and OpenAI Chat Completions APIs. This is what unlocks LM Studio, vLLM, and other OpenAI-compatible servers — i.e. a model running on your own machine driving Claude Code.
So mcc local can be a fully offline, self-hosted coding agent, while mcc work stays on the real Anthropic API. Per profile.
Get started in 30 seconds
Homebrew:
brew tap husseinAbdElaziz/tap
brew install mccOr the install script (macOS / Linux / WSL):
curl -fsSL https://raw.githubusercontent.com/husseinAbdElaziz/multi-claude/main/install.sh | bashIt downloads the right prebuilt binary for your OS/arch, verifies its checksum, and installs it. Then:
# A shared profile — inherits your settings, plugins, and skills from ~/.claude
mcc new personal
mcc personal
# A fully isolated profile — clean slate, nothing shared
mcc new work --no-share
mcc workPlain mcc with no profile is identical to running claude — same account, same everything. The tool stays invisible until you ask for a second profile.
What's shared vs. what's private
The default profile is the real ~/.claude — mcc never touches it. Non-default profiles live under ~/.multi-claude/profiles/<name>/config/ via CLAUDE_CONFIG_DIR.
A shared profile symlinks the parts you want consistent everywhere:
settings.json— user settingsCLAUDE.md— global memoryskills/— global skillsplugins/— marketplaces, cache, data, indices
…and keeps these private to the profile:
- Auth / account credentials
sessions/,history.jsonl,shell-snapshots/,todos/,projects/— live session state
So a shared profile is a second account that still inherits your tooling. --no-share shares nothing — fully independent.
The full command set
| Command | Description |
|---|---|
mcc |
Run Claude with the default profile (identical to claude) |
mcc <profile> |
Run Claude with the specified profile |
mcc new <profile> |
Create a new shared profile |
mcc new <profile> --no-share |
Create a fully isolated profile |
mcc delete <profile> |
Delete a profile (never touches default) |
mcc ls |
List all profiles |
mcc which <profile> |
Show the CLAUDE_CONFIG_DIR for a profile |
mcc doctor |
Verify environment configuration |
mcc ui [--port <n>] |
Open the provider config web UI (default port 8989) |
mcc update |
Update mcc to the latest release (defers to brew if managed) |
mcc uninstall |
Remove mcc's data and binary (never touches ~/.claude) |
Need to pass flags straight through to Claude? Use --:
mcc personal -- --resumeWhy I built it
I run Claude Code across contexts that shouldn't bleed into each other, and I wanted to experiment with self-hosted models without wrecking my real config. Swapping accounts by hand-editing environment variables was error-prone; a wrong export meant state in the wrong place. I wanted one word — mcc work, mcc personal, mcc local — and total certainty about which identity and which model I'm in.
Because the default profile is left completely alone, you can uninstall any time and your real ~/.claude is exactly as you left it.