v0.5.0 What's new: mcc usage --all

Open-source CLI · macOS & Linux

Run every Claude Code account side by side.

mcc gives each account its own login, its own command, and a copy of your main setup. Type work for one account and claude for the other. No logging out in between.

  • Apache-2.0
  • Written in Rust
  • Never copies credentials
  • No telemetry
$ mcc list
NAME       ACCOUNT  5H          WEEK      LAST USED  SYNC
default ★  —        85%! (35m)  62% (3d)  just now   —
work       Acme     12% (4h)    30% (5d)  48m ago    ✓
  ● 2 profiles · 1.6 GB on disk · add one with `mcc add <alias>`
$ mcc usage
PROFILE    5-HOUR  RESETS IN  WEEKLY  RESETS IN  UPDATED
default ★  85%!    35m        62%     3d 4h      just now
work       12%     4h 10m     30%     5d 2h      48m ago
$ work     # Claude Code on the work account
$ claude   # your default account, unchanged
$ mcc project set work
  ✓ ~/code/app: `mcc run` starts `work` here
    → when it is at its limit, `mcc run` asks whether to wait (the default) or start it anyway; `mcc list` shows every project
$ mcc run
  ● starting `work` — the default for ~/code/app (5h 12%, week 30% used · 48m ago)
The problem

Claude Code has one config directory. You have more than one account.

Your login, settings, skills, agents and MCP servers all live in ~/.claude. That holds up until a second account shows up.

Scenario 01

A personal plan and a company plan

You use your own subscription for side projects and your employer's for work, and the two should never share a session.

Scenario 02

A limit hit in the middle of a task

Your 5-hour window runs out halfway through a refactor. The account that still has room is one logout and one login away.

Scenario 03

Client work on the client's seat

A client pays for the account, so the sessions, history and billing for their project belong on their login, not yours.

The workarounds

Each workaround costs you something.

  • Logging out and back inEvery switch breaks your flow, and every new session runs on whichever account you touched last.
  • Setting CLAUDE_CONFIG_DIR by handYou get a bare profile. None of your skills, agents, hooks, plugins or MCP servers come with it.
  • Copying ~/.claude yourselfThe copy drags credentials along, keeps paths that point back at the original directory, and falls out of date the day you add a skill to your main setup.
  • Guessing which account has roomNothing shows the 5-hour and weekly limits of all your accounts in one place, so you find out when a session stops.
What mcc does

One command per account. One setup across all of them.

A command for each account

mcc add work creates ~/.mcc/profiles/work, a work launcher and a shell alias, then opens the login. claude stays exactly as it was. Rename a profile later with mcc rename work job; it stays logged in.

Your setup, without your login

Cloning copies settings, CLAUDE.md, skills, agents, commands, hooks and MCP servers, and shares your default's plugins instead of copying them. Credentials, history and sessions stay behind, and paths to copied items are rewritten to the new profile. To resume sessions across accounts, opt each profile in with mcc share work: only sessions are shared, never logins.

Sync when your main setup changes

mcc sync work pulls new skills, settings and MCP servers from your default profile and keeps the changes you made in the profile: a file changed on both sides is reported as a conflict, not overwritten. mcc diff work shows what differs, --dry-run previews the sync, and every file it overwrites or removes is backed up first.

Every limit on one screen

mcc usage shows each account's 5-hour and weekly usage and when it resets. Anything at 80% gets a !, at 95% a !!, so it reads the same without colour. mcc usage --all looks every account up live for one run, with a risk notice each time, and caches what it finds.

Every change can be undone

A failed add rolls itself back. Your rc file is backed up before each edit. mcc delete logs the profile out and removes only what mcc created.

Each project on its own account

mcc project set work makes work the profile mcc run starts in this repository. At its limit, mcc run asks first, with waiting as the default: mcc never switches accounts for you. eval "$(mcc env)" points plain claude, IDE extensions and scripts at the same profile.

Why not just a shell alias?

An alias sets one variable. mcc also checks the name against every command your shell knows, copies and rewrites your setup, runs and verifies the login, and keeps the profile in sync later.

mcc usage

See which account has room before you start.

Each profile's 5-hour and weekly limits, as Claude Code last reported them to mcc statusline, or as the last mcc usage --all found them. Plain mcc usage reads no login and touches no network.

  • One compact table: percent used, time until reset, the reset time in your time zone, and how old the numbers are
  • Account emails stay hidden unless you ask for them, so it is safe to share on screen
  • Bars shrink to fit narrow terminals; --json for scripts
  • A profile with nothing current cached shows — and a hint to run /usage in Claude Code. The command still exits 0
  • Set it up once with mcc statusline install. Asking Anthropic with each profile's login is opt-in: mcc config set usage.live true, or mcc usage --all for one run of every account, with a risk notice; what it finds is cached for the next mcc usage
$ mcc usage
PROFILE    5-HOUR           RESETS IN                  WEEKLY            RESETS IN                 UPDATED
default ★  ████░░░░░░ 42%   2h 14m (Sat Oct 10 16:00)  ██░░░░░░░░ 18%    3d 4h (Wed Oct 14 00:00)  12m ago
lab        — (no recent usage cached; run /usage in Claude Code)
work       █████████░ 85%!  35m (Sat Oct 10 14:21)     ██████████ 96%!!  3d 4h (Wed Oct 14 00:00)  just now
How it works

Three commands to a second account.

Install

Download the prebuilt mcc for your platform. You need Claude Code, not Rust.

$ curl -fsSL https://raw.githubusercontent.com/luongnv89/mcc/main/install.sh | sh
Add a profile

Clone your default setup into a new profile, then finish the sign-in in your browser.

$ mcc add work --clone
Run it

Start Claude Code on that account by typing its name. Your default claude keeps working.

$ work

Built on the variable Claude Code already reads

Claude Code takes its config from CLAUDE_CONFIG_DIR, which defaults to ~/.claude. An mcc profile is a directory plus a launcher that sets that variable. Nothing is patched or wrapped.

You typework

Launcher in ~/.local/bin, plus a shell alias

It setsCLAUDE_CONFIG_DIR=~/.mcc/profiles/work

The profile's own login, settings and skills

And runsclaude

The same Claude Code binary you already have

FAQ

Questions before you install

Does mcc copy or share my login between profiles?

No. Each profile signs in separately through claude auth login. Clone and sync never copy credentials or account identity (oauthAccount, userID), and never copy history, sessions or projects.

Will it change my existing claude setup?

Your default profile stays in ~/.claude and keeps the claude command, and sync is one-way: it copies from the default into a profile, never back. Three things do reach the default: a cloned profile shares its plugins, so installing or removing a plugin in it does so for the default too (clone with --copy-plugins to avoid that); items you link with mcc link are the default's own files; and the opt-in mcc statusline install sets the default's statusLine, after backing up its settings.

What does mcc send over the network?

By default, nothing: mcc list, mcc usage and mcc run read the usage mcc statusline cached on your machine. Only if you turn on the live lookup (mcc config set usage.live true), or run mcc usage --all for one live look at every account (it prints a risk notice each time), does mcc ask Anthropic's usage endpoint, each profile with its own token. The token is never printed, logged or written to disk. mcc has no telemetry or analytics. Details are on the privacy page.

Is the usage data official?

By default it is what Claude Code itself passes to its status line, the session's 5-hour and weekly rate limits, which mcc statusline caches. The opt-in live lookup uses the same endpoint as Claude Code's /usage screen. That endpoint is undocumented and may change. If it does, mcc shows unavailable instead of failing.

Which platforms and shells are supported?

macOS and Linux, with zsh, bash or fish. mcc detects your shell and rc file on first run. Windows is not supported.

Do I need Rust?

Not with Homebrew: brew install luongnv89/tap/mcc builds mcc with Homebrew's own Rust. Not with the install script either: it downloads a prebuilt, checksum-verified binary from the latest GitHub release (falling back to building with cargo when a release has none for your platform). Building from a clone or with cargo install needs cargo (Rust 1.88 or newer). Get Rust from rustup.rs.

How do I remove a profile, or mcc itself?

mcc delete work logs the profile out, clears its keychain entry, and removes its directory, launcher, shell alias and registry entry. To remove mcc entirely, see Uninstall.

Install

Give your next account its own command.

Free and open source under Apache-2.0. You need Claude Code. Building from source also needs Rust (cargo).

One-liner

$ curl -fsSL https://raw.githubusercontent.com/luongnv89/mcc/main/install.sh | sh

Homebrew (macOS and Linux)

$ brew install luongnv89/tap/mcc

With Cargo

$ cargo install --git https://github.com/luongnv89/mcc --locked

From a clone

$ git clone https://github.com/luongnv89/mcc && cd mcc && ./install.sh

Then run mcc add work --clone. First run detects your OS, shell and rc file automatically.