v3.5.4

Juggling multiple AI accounts, solved

Orrery pools your Claude Code, Codex, and Gemini CLI accounts and switches between them with one command — no logging out, no re-auth, and your conversation picks up right where you left off.

Get Started View on GitHub
Native Install (macOS, Linux, WSL) — recommended
$ curl -fsSL https://offskylab.github.io/Orrery/install.sh | bash
Or via Homebrew (macOS)
$ brew install OffskyLab/orrery/orrery
Windows — via WSL
Claude Code on Windows runs inside WSL. Open PowerShell as Administrator and enable WSL first if you haven't already, then install Orrery inside the WSL shell using the native install command above.
PS> wsl --install
Activate shell integration
$ source ~/.orrery/activate.sh
Migrating from APT on Linux (v2.3.x or earlier)

If you installed Orrery via APT (apt install orrery), running orrery update may show already the newest version (2.3.x). The APT repo is no longer maintained, and the old update path didn't run apt update first. Run the native installer once to transition:

$ curl -fsSL https://offskylab.github.io/Orrery/install.sh | bash

This removes the APT-managed binary, installs the new orrery-bin, and switches future orrery update calls to the native install flow. Optionally clean up the stale APT source:

$ sudo rm /etc/apt/sources.list.d/orrery.list
$ sudo apt update

Built for switching AI accounts

🗂️

Account pool

All your logins in one place. Add a Claude, Codex, or Gemini account once — Orrery keeps the credential in a shared pool, ready to switch to any time.

One-command switch

orrery use --claude work swaps the active account for a tool. No logout, no password, no browser auth flow — just an instant switch.

💬

Sessions follow you

Switch accounts mid-task and claude --resume still works. Conversation history is shared across switches by default.

👻

Switch mid-conversation

Run claude and use /orrery:phantom inside Claude to swap account without losing the conversation.

📦

Workspaces for isolation

Need a fully separate config per client or project? An optional workspace isolates memory, sessions, and env vars on top of accounts.

🐚

Per-shell, no daemon

Switching only affects the current shell. Other terminal windows stay on their own account, unaffected — and there's no background process.

🚀

Zero runtime overhead

Built in Swift — native binary, instant startup. Shell integration is a tiny eval'd function. Supports bash and zsh.

The account pool

Add each AI tool account once. Orrery keeps the credentials in a shared pool — switching is instant, with no logout and no re-auth.

$ orrery add --claude
# log in once — the account joins the pool

$ orrery list
claude accounts:
  - work     you@company.com, team
  - personal you@gmail.com, pro

$ orrery use --claude personal
# active Claude account → personal, instantly

orrery use switching between Claude accounts

The Model

Start with accounts — that's all most people need. Reach for a workspace only when a context needs fully isolated config.

👤

Account

Your identity for a tool — the credential Orrery logs in with. Accounts live in a shared pool: add once, switch any time with orrery use. This is the layer you'll touch every day.

📦

Workspace ADVANCED

An optional isolation layer: separate memory, sessions, and env vars. Most users never need one — reach for a workspace when a client or project needs its own config space. Pin an account into it with orrery pin <account> --workspace <name>, then activate it with orrery use <account>.

💬

Session

Represents continuity: conversation history and project context. Shared across account switches by default — claude --resume just works.

Traditional tooling isolates dependencies (virtualenv) or runtime versions (nvm). Orrery extends that idea to AI accounts — and, when you need it, full config isolation.

How it works

1

Install shell integration

Run orrery setup once. It generates ~/.orrery/activate.sh and adds it to your rc file. Then source ~/.orrery/activate.sh to activate in the current shell.

activate.sh also checks for new Orrery releases in the background (once per day) and shows a notice at your next shell open.

2

Add your accounts

Run orrery add --claude (or --codex / --gemini) and log in once. The account joins a shared pool — repeat for every account you use.

3

Switch with one command

orrery use --claude personal makes that account active for Claude. No logout, no re-auth — and your conversation history stays intact across switches.

4

Resume where you left off

After switching accounts, claude --resume picks up your last session. Identity changes, continuity doesn't — the best of both worlds.

5

Optional: create a workspace

When a client or project needs fully isolated config, run orrery workspace create client-a, pin an account into it with orrery pin work --workspace client-a, then activate it with orrery use work. Skip this entirely if you only switch accounts.

orrery workspace create wizard orrery pin an account to a workspace, then orrery use it

Phantom mode — switch mid-conversation

Run claude and a supervisor stays alongside it. From inside that Claude, the /orrery:phantom slash command swaps the active account without restarting the conversation — Claude exits, the supervisor relaunches it with the new context and --resume, and you continue where you left off.

# inside a supervised Claude session
> /orrery:phantom personal
  # → switch the claude account to 'personal'

> /orrery:phantom codex work
  # → switch the codex account

# or straight from the shell, no Claude turn needed:
$ orrery phantom personal

/orrery:phantom mid-session switch

Phantom supervision is the default for a bare claude — the shell integration wraps it. To opt out for one launch: ORRERY_NO_PHANTOM=1 claude. The slash command is installed automatically by orrery mcp setup.

The origin baseline

Your default config — the workspace an account uses when you haven't chosen another

origin is your normal setup: the accounts and per-tool config you'd use without Orrery at all. On first orrery setup, your existing tool configs (~/.claude/, ~/.codex/, ~/.gemini/) are moved into ~/.orrery/origin/ and the original paths become symlinks — your data is untouched, it just lives where Orrery can manage and sync it. Switching accounts with orrery use works right here at origin; you only need a workspace when a context calls for fully isolated config.

To move an account back to origin, re-pin it: orrery pin <account> --workspace origin. An account pinned to origin resolves to the system's native config paths — which now point at Orrery-managed storage via the symlinks — so the experience feels like "outside Orrery" while everything stays managed and syncable.

Unlike regular workspaces, origin cannot be deleted or renamed and uses the system's native config paths. It does support memory and session settings — use orrery memory isolate / share / storage to control where its project memory lives, and choose per-tool session sharing during orrery setup. Run orrery workspace info origin to see full state.

Reverting the takeover. To take a tool fully out of Orrery (back to its pre-setup state), uninstall — it restores tools to their original locations and removes the shell integration:

$ orrery uninstall
# release everything + remove shell integration

Use Cases

💼

Work / Personal

Your company uses a Claude Team plan, and you have a personal Pro subscription. Add both to the pool, then flip between them with one command — no logout.

$ orrery use --claude work
# → company Team plan

$ orrery use --claude personal
# → personal Pro plan
💬

Resume After Switching

Mid-conversation with Claude on your work account? Switch to personal, do something, then switch back — your session is still there.

$ orrery use --claude work
$ claude
# ... working on a task ...

$ orrery use --claude personal
$ orrery use --claude work
$ claude --resume
# → picks up exactly where you left off
🏢

Multiple Clients WORKSPACE

Freelancers and consultants juggling different clients — each needs its own credentials, settings, and memory. Give each client a workspace for full isolation.

$ orrery workspace create client-a
$ orrery pin work --workspace client-a
$ orrery use work

AI Tool Integration

Orrery integrates with Claude Code, Codex CLI, and Gemini CLI via MCP. Delegate tasks across accounts, share memory between tools, and manage sessions — all from one place.

1

One-time setup

Run this in your project directory. Orrery registers itself as an MCP server and installs slash commands.

$ orrery mcp setup
2

Slash commands

After setup, use these directly in Claude Code:

/orrery:delegate Delegate a task to another account
/orrery:delegate Use the "work" account to review this PR for security issues
/orrery:sessions List sessions, then resume by index
/orrery:sessions
then: orrery delegate --resume 1 "..."
/orrery:phantom Switch env mid-conversation — Claude relaunches with --resume
launch with: claude
then in Claude: /orrery:phantom work
3

Or just ask naturally

Claude understands your environments through MCP tools. You can say things like:

"Review this PR using my work account"
"Which account am I on?"
"Show me recent sessions and resume the last one"

Commands

Accounts — the everyday layer
orrery add --<tool> <name>Add an account (--claude / --codex / --gemini)
orrery list [--tool]List accounts in the pool
orrery use --<tool> <name>Switch the active account for a tool
orrery showShow the active account per tool
orrery currentShow the pinned account new shells pick up
orrery removeRemove an account from the pool
Workspace assignment
orrery pin <name> --workspace <ws>Pin an account to a workspace
orrery use <name>Activate that account (and its workspace)
Workspace CRUD
orrery workspace create <name>Create a workspace (wizard)
orrery workspace delete [name]Delete workspace(s) (multi-select if no name)
orrery workspace rename <old> <new>Rename a workspace
orrery workspace listList workspaces
orrery workspace info [name]Show workspace details
Sessions
orrery sessionsList all sessions for current project
orrery sessions --claudeClaude sessions only
orrery sessions --codexCodex sessions only
orrery sessions --geminiGemini sessions only
Memory
orrery memory infoShow current memory status and path
orrery memory exportExport shared memory for the current project
orrery memory isolateSwitch this environment to isolated memory
orrery memory shareSwitch this environment to shared memory
orrery memory storage <path>Redirect memory to external path
Memory sync (experimental)
orrery sync daemonStart the sync daemon
orrery sync statusShow daemon and peer status
orrery sync pair <host:port>Pair with a remote peer
orrery sync team createCreate a new team
orrery sync team inviteGenerate an invite code
orrery sync team joinJoin a team
orrery sync rendezvousRun a rendezvous server
Shell integration
orrery setupInstall shell integration
orrery initPrint shell function (eval)
orrery updateSelf-update (install script or Homebrew)

orrery update self-updating to the latest release orrery update picks the channel matching how you installed — brew upgrade for the Homebrew tap, otherwise the native install script.