Skip to content

Releases: jakoes-wu/multi-claude

v0.8.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 23:33
6a3fceb

Added

  • export NAME FILE writes an account's settings, CLAUDE.md, agents,
    commands, skills, output styles and MCP servers (only mcpServers from
    .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, --settings and CLAUDE_CODE_PLUGIN_CACHE_DIR.

v0.7.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 22:58
d2b6a54

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).
  • list shows LAST USED for each account (last_used in --json).
  • When claude is not on PATH, the errors of login, mcp, run and
    doctor show 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-default in 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

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 20:17
a616eac

Added

  • code NAME [PATH] [-- ARGS ...] (experimental) opens a separate VS Code
    instance with the account's environment and its own user data directory
    (<root>/.apps/<account directory>/vscode), so the Claude Code extension
    uses that account.

v0.5.0

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 16:56
4ff1a8a

Added

  • run [NAME] [-- COMMAND ...] runs any command with the environment of an
    account's launcher (without a command: claude with the fixed arguments;
    without NAME: the account claude-auto would use).
  • path NAME prints an account's directory.
  • restore NAME undoes migrate-default: it moves the account back to
    ~/.claude and unregisters it; the login is kept. It can be rerun after an
    interruption.
  • migrate-default without a name uses the email address of the login in
    ~/.claude.json.
  • add NAME --config-from OTHER copies settings.json from 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

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 15:48
4770538

Added

  • Every release publishes multi-claude-<tag>.tar.gz and SHA256SUMS
    (workflow release.yml, which also checks that __version__ matches the
    tag). install.sh downloads 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 still multi-claude.
  • The README opens with a short example and a demo animation, has a
    four-step quick start and an FAQ. scripts/make-assets.py regenerates 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.Z fails when the release cannot be read, instead
    of falling back to an unverified download.

multi-claude 0.3.1

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 13:26
d019ec1

Changed

  • statusline install and 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.md records 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

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 12:24
5c0086d

Added

  • set NAME ...: change an existing account (proxy, sharing, shared-item
    opt-outs); unlike add it never creates one.
  • --shared uses ~/.claude-shared when no shared directory is set, and
    --shared DIR makes 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 running claude auth login
    with its environment; an e-mail-like account name is passed as --email.
  • Running multi-claude without 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 run login.

Changed

  • Write commands print only the items that change, or nothing to change;
    --verbose lists 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 add and login; migrating
    ~/.claude is described as optional. The rest is grouped into everyday
    tasks, migration and a reference section.
  • --help lists the commands by purpose, with examples; each command's
    --help starts with what it does.
  • list shows a short table (login, proxy, sharing, 5-hour and 7-day usage
    and any problem); list --verbose shows the previous full listing.
  • When the launcher directory is not on PATH, install.sh, add and
    doctor print 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

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 02:42
7b9353c

Changed

  • Documentation only: docs/analysis/roadmap.md now 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

Choose a tag to compare

@jakoes-wu jakoes-wu released this 02 Oct 01:12
f90a43c

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.sh writes 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

Choose a tag to compare

@jakoes-wu jakoes-wu released this 01 Oct 23:52
e785f68

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; --json output.
  • completion bash|zsh|fish.
  • list --json (includes usage) and list --names.
  • route and which: 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
    plain claude. list, doctor and completion cover routes.
  • rename OLD NEW: rename an account and its launcher while keeping its
    directory (accounts gain an optional dir field), so the login stays;
    routes follow the new name.
  • mcp NAME [ARG ...]: run claude mcp with the account's environment
    (configuration directory, proxy, extra variables) but without its fixed
    arguments.
  • statusline install|uninstall FILE: wrap an existing statusLine command
    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
    and list --json use whichever is newer, the cache or the status line, and
    report it in a new source field.
  • handoff TARGET [--from NAME] [--session ID] [--force]: copy a session
    (its .jsonl and the folder next to it) to the same project of another
    account and print cd … && 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 --force backs 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 optional shared_exclude; list shows it.

Changed

  • Launchers unset ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN,
    CLAUDE_CODE_OAUTH_TOKEN and CLAUDE_CODE_OAUTH_REFRESH_TOKEN, so a
    credential exported in the shell no longer replaces every account's login.
    Run multi-claude apply after upgrading to regenerate existing launchers.
  • shared.items and init --shared-items reject items that hold one
    account's own state: .credentials.json, .claude.json,
    settings.local.json, projects, history.jsonl, file-history,
    sessions, session-env, shell-snapshots and todos. Remove such an
    item from config.json if 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.