A CLI for people running more than one Claude Code account on the same machine.
If you have a personal account, a work account, and maybe a third for a client, you already know the pain: switching CLAUDE_CONFIG_DIR by hand, forgetting which terminal is logged into which account, or wanting two accounts to compare notes on the same problem without copy-pasting between windows.
roulette does three things:
- Lists every Claude Code account it can find on your machine.
- Opens any of them (or all of them) in their own terminal window with the right account already set.
- Lets two or more accounts talk to each other, or answer the same question in parallel, inside a single window.
You need Node 18 or later and the claude CLI already installed and logged into at least one account.
git clone https://github.com/dbisina/roulette.git
cd roulette
npm linknpm link puts roulette on your PATH. If you'd rather not use npm link, you can also just run node roulette.mjs directly from the cloned folder, or write your own one-line wrapper script that points at it.
Claude Code keeps each account's login in its own config directory, normally ~/.claude, or wherever CLAUDE_CONFIG_DIR points for that account. If you run several accounts side by side, each one probably lives in a folder like ~/.claude-work or ~/.claude-personal.
roulette scans your home directory for .claude and .claude-* folders that contain a .credentials.json file, which is what marks a folder as a real logged-in account rather than just a settings directory. No setup step is required for this to work.
If it guesses an email wrong, or you want to add an account that lives somewhere unusual, fix it by hand:
roulette add work ~/.claude-work you@company.comThis writes to ~/.roulette/accounts.json and always takes priority over what roulette finds on its own.
Shows every account it knows about, with a short slug you'll use in the other commands.
$ roulette list
SLUG EMAIL CONFIG DIR
default you@personal.com /home/you/.claude
work you@company.com /home/you/.claude-work
client-a you@clienta.com /home/you/.claude-client-a
Opens a new terminal window running an interactive claude session, already pointed at that account. roulette launch all opens one window per account, spaced out slightly so your window manager doesn't drop any of them.
On Windows this uses Windows Terminal if it's installed, otherwise a plain cmd window (--no-wt forces the plain window even if Windows Terminal is present). On macOS it opens a new Terminal.app window. On Linux it tries x-terminal-emulator, gnome-terminal, konsole, xfce4-terminal, alacritty, kitty, and xterm, in that order, and uses whichever one it finds first.
Sends a message to one or more accounts without opening any new windows, and prints the replies right where you are.
By default every account gets the same message and answers independently:
roulette talk "what's a good name for a rate limiter?" --accounts work,client-aAdd --relay to have the accounts respond to each other instead of to you. The first account gets your message, the second account gets the first account's reply, and so on. --rounds 2 runs the whole chain twice.
roulette talk "review this approach: cache-then-write" --accounts work,client-a --relaySame idea as talk, but interactive. You type a line, every selected account responds, then you type the next line. Type /exit to leave.
roulette room --relay --accounts default,work,client-aThis is the one to reach for when you want a running conversation between accounts instead of a single exchange.
talk and room call claude -p under the hood, which runs without a terminal attached for permission prompts. Plain conversation works fine. If a reply would need to read a file or run a command, that permission check has nowhere to go, so it will likely fail rather than pause and ask you. Keep prompts conversational if you're using these two commands.
MIT. See LICENSE.