Releases: jakoes-wu/multi-claude
Releases · jakoes-wu/multi-claude
Release list
v0.8.0
Added
export NAME FILEwrites an account's settings,CLAUDE.md, agents,
commands, skills, output styles and MCP servers (onlymcpServersfrom
.claude.json) to a private.tar.gz; logins and sessions are never
included.import FILE NAME [--force] [--dry-run]imports it into an
existing account; conflicts are refused unless--force, which backs up
first.- README: how to share MCP servers, plugins and settings between all accounts
with--mcp-config,--settingsandCLAUDE_CODE_PLUGIN_CACHE_DIR.
v0.7.0
Added
usage --history [NAME] [--days N] [--by day|model] [--json]: token usage
per day or model, counted from the session files on this machine (only the
counters are read; each reply is counted once).listshowsLAST USEDfor each account (last_usedin--json).- When
claudeis not onPATH, the errors oflogin,mcp,runand
doctorshow the official install command.
Changed
- README: the privacy properties (never reads logins, no network, no shell
edits, changes only what you ask) are listed first. The FAQ no longer says
that credentials are never copied:migrate-defaultin copy mode copies
the account directory, which on Linux contains the credentials file. - README FAQ: why there is no command that switches the account of plain
claude, and what to use instead.
v0.6.0
v0.5.0
Added
run [NAME] [-- COMMAND ...]runs any command with the environment of an
account's launcher (without a command:claudewith the fixed arguments;
without NAME: the accountclaude-autowould use).path NAMEprints an account's directory.restore NAMEundoesmigrate-default: it moves the account back to
~/.claudeand unregisters it; the login is kept. It can be rerun after an
interruption.migrate-defaultwithout a name uses the email address of the login in
~/.claude.json.add NAME --config-from OTHERcopiessettings.jsonfrom another account
once.
Changed
- README: install from PyPI with
pipx install multi-claude-cli, and a PyPI
badge. - README: install with Homebrew,
brew install jakoes-wu/tap/multi-claude.
v0.4.0
Added
- Every release publishes
multi-claude-<tag>.tar.gzandSHA256SUMS
(workflowrelease.yml, which also checks that__version__matches the
tag).install.shdownloads that archive and verifies its SHA-256 before
installing; releases without it, and branches, are installed with a note
that they are unverified. New variables:MULTI_CLAUDE_SHA256,
MULTI_CLAUDE_REQUIRE_CHECKSUM=1,MULTI_CLAUDE_CODELOAD. - The package is published to PyPI as
multi-claude-cli(workflow
pypi.yml); the command is stillmulti-claude. - The README opens with a short example and a demo animation, has a
four-step quick start and an FAQ.scripts/make-assets.pyregenerates the
animation and the social preview image in a temporary HOME;
docs/assets/is left out of release archives.
Changed
MULTI_CLAUDE_REF=vX.Y.Zfails when the release cannot be read, instead
of falling back to an unverified download.
multi-claude 0.3.1
Changed
statusline installand the README say that running sessions keep the
old status line; usage is recorded from new sessions after their first
reply.add --shared NAME(account name after the options) gets an error that
says to put the name first, instead of "name is required".docs/analysis/roadmap.mdrecords the v0.3.0 changes and explains that
its v0.2/v0.3/v0.4 groups are not release numbers.
Upgrade: run the installer again.
multi-claude 0.3.0
Added
set NAME ...: change an existing account (proxy, sharing, shared-item
opt-outs); unlikeaddit never creates one.--shareduses~/.claude-sharedwhen no shared directory is set, and
--shared DIRmakes DIR the shared directory for every account. A note
says when the shared directory has none of the shared items yet.login NAME [ARG ...]: sign in to an account by runningclaude auth login
with its environment; an e-mail-like account name is passed as--email.- Running
multi-claudewithout arguments prints a short guide (no
configuration yet) or the account list. - A mistyped command gets a suggestion (
did you mean 'list'?). - After
add, an account without a login gets a hint to runlogin.
Changed
- Write commands print only the items that change, or
nothing to change;
--verboselists everything as before, including shared items that are
missing from the shared directory. - A proxy value that is neither a port nor a URL gets an error that shows
the accepted forms. - README: the quick start begins with
addandlogin; migrating
~/.claudeis described as optional. The rest is grouped into everyday
tasks, migration and a reference section. --helplists the commands by purpose, with examples; each command's
--helpstarts with what it does.listshows a short table (login, proxy, sharing, 5-hour and 7-day usage
and any problem);list --verboseshows the previous full listing.- When the launcher directory is not on
PATH,install.sh,addand
doctorprint the exact line to add for zsh, bash or fish.
Upgrade: run the installer again (curl -fsSL https://raw.githubusercontent.com/jakoes-wu/multi-claude/main/install.sh | sh or ./install.sh from a clone). Scripts that read the text of list should use list --json or list --verbose.
multi-claude 0.2.2
Changed
- Documentation only:
docs/analysis/roadmap.mdnow records the upgrade
plan and what each release delivered; design documents point to it.
No code changes since 0.2.1; upgrading is optional.
multi-claude 0.2.1
Changed
- The statusline hook starts the original status-line command right after
reading its input and records usage in a detached background process, so
the status line no longer waits for the capture. The hook path loads only a
small module before handing over. Measured overhead compared with running
the status-line command directly: about 30 ms, down from about 120 ms. install.shwrites the interpreter behind a pyenv, asdf or mise shim into
the launcher instead of the shim itself. Run the installer again to pick
this up.
Upgrade: run the installer again (curl -fsSL https://raw.githubusercontent.com/jakoes-wu/multi-claude/main/install.sh | sh or ./install.sh from a clone).
multi-claude 0.2.0
Added
usage: the last known 5-hour and 7-day usage of each account, read from
Claude Code's own cache in.claude.json, with the data's age. Never reads
credentials or calls the network.doctor: read-only checks of the configuration, unfinished migrations,
PATH, launchers, account directories, shared links, logins and
login-overriding variables, with a fix for each problem;--jsonoutput.completion bash|zsh|fish.list --json(includes usage) andlist --names.routeandwhich: choose an account by directory. Routes generate
claude-auto, which starts the account of the longest matching directory
(physical paths), falls back to an optional default account and then to
plainclaude.list,doctorand completion cover routes.rename OLD NEW: rename an account and its launcher while keeping its
directory (accounts gain an optionaldirfield), so the login stays;
routes follow the new name.mcp NAME [ARG ...]: runclaude mcpwith the account's environment
(configuration directory, proxy, extra variables) but without its fixed
arguments.statusline install|uninstall FILE: wrap an existingstatusLinecommand
so that each redraw records the account's 5-hour and 7-day usage from the
status-line data; the original command still produces the output.usage
andlist --jsonuse whichever is newer, the cache or the status line, and
report it in a newsourcefield.handoff TARGET [--from NAME] [--session ID] [--force]: copy a session
(its.jsonland the folder next to it) to the same project of another
account and printcd … && claude-<target> --resume <id>. Inside a
Claude session it takes the current session; a different copy already in
the target is refused (exit 3) unless--forcebacks it up first.add NAME --shared-exclude ITEM/--shared-include ITEM: keep a shared
item out of one account (the link multi-claude made is removed) or undo
it. Accounts gain an optionalshared_exclude;listshows it.
Changed
- Launchers unset
ANTHROPIC_API_KEY,ANTHROPIC_AUTH_TOKEN,
CLAUDE_CODE_OAUTH_TOKENandCLAUDE_CODE_OAUTH_REFRESH_TOKEN, so a
credential exported in the shell no longer replaces every account's login.
Runmulti-claude applyafter upgrading to regenerate existing launchers. shared.itemsandinit --shared-itemsreject items that hold one
account's own state:.credentials.json,.claude.json,
settings.local.json,projects,history.jsonl,file-history,
sessions,session-env,shell-snapshotsandtodos. Remove such an
item fromconfig.jsonif an older version accepted it.
Upgrade: run ./install.sh again (or MULTI_CLAUDE_REF=v0.2.0 ./install.sh), then multi-claude apply to regenerate launchers.