June 6, 2026 · 5 min read

multi-claude — Run Multiple Claude Accounts (and Local LLMs) on One Machine

#claude-code#cli#local-llm#tooling#open-source#zig

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 machine

Three 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-claudemcc 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 8989

provider.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 mcc

Or the install script (macOS / Linux / WSL):

curl -fsSL https://raw.githubusercontent.com/husseinAbdElaziz/multi-claude/main/install.sh | bash

It 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 work

Plain 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 ~/.claudemcc 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 settings
  • CLAUDE.md — global memory
  • skills/ — global skills
  • plugins/ — 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 -- --resume

Why 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.

Try it: github.com/husseinAbdElaziz/multi-claude.