One Claude Code window. Every Claude account you own.
Your window plans and talks with you. Your other accounts do the heavy lifting.
Install · Use it in a conversation · How it works · FAQ · 中文
![]() Overview · this window, live jobs, recent work |
![]() Accounts · 5-hour and weekly usage, a model each |
![]() Dark mode · follows macOS |
A Claude Code window runs on one account, and that account's usage runs out. Relay keeps your window as the leader: it talks with you, plans and reviews. Heavy, self-contained jobs go to your other accounts, the workers, each running the official Claude Code under its own login and its own usage. You keep one conversation; the work spreads across your plans.
| Feature | What it does |
|---|---|
| Hand off | Say /relay <job> or "use relay for this". A free worker takes it and the report comes back to your window. |
| Memory | A named thread resumes the same worker session, even after it moved to another account. A project ledger tells every worker what the others did. |
| Usage at a glance | Every account's 5-hour and weekly usage and when it resets, read from Claude Code's own /usage. |
| A model per account | Run mechanical jobs on Haiku and save the big models for the work that needs them. |
| Safety net | When the leader hits its limit mid-task, Relay resumes the same session on the next ready account in the background. |
| Every worker at once | Several jobs run in the same folder and conversation at the same time, one per free worker; with every worker busy, a job waits for the first one to come free. Jobs that name overlapping folders (scope) take turns, so they never edit the same files together. |
| Native on macOS | A menu-bar app: template icon, frosted panel under the icon, running-job count next to it, open at login. |
| Updates reach open windows | Every tool call runs Relay's current code, so an update applies to conversations that are already open. |
| Local and private | Everything listens on 127.0.0.1. Relay never reads, copies or sends your credentials. |
You need Claude Code (the desktop app or the claude CLI) and Node.js 22 or newer.
git clone https://github.com/OvOhao/relay.git
cd relay
npm install
npm startThe R icon appears in the menu bar. Want to look around first, without touching your accounts?
npm start -- --demoBuild a real app (Relay.app and a .dmg for Apple silicon and Intel, written to dist/):
npm run dist:macThe build is ad-hoc signed, not notarized. One you built yourself opens directly; a copied one needs System Settings › Privacy & Security › Open Anyway once, or xattr -dr com.apple.quarantine /Applications/Relay.app.
Windows
npm start runs it as a tray app; npm run dist builds an installer and a portable exe. The Windows build is tested in CI but has not been tried on a real Windows machine yet.
- Click the menu-bar icon. Accounts › Add account for each Claude account you own; each one signs in once through Claude Code's own login, in a browser profile of its own.
- Connect. Relay backs up
~/.claude/settings.json, then adds two hooks (StopFailure,SessionStart), an MCP serverrelayand a skill~/.claude/skills/relay. - Start a new Claude Code session (open ones don't pick the tools up).
claude mcp listshould showrelay ✔ Connected.
Just ask, in any new Claude Code session:
/relay write unit tests for src/parser and make npm test pass
Which relay accounts are free right now?
Continue the auth-refactor thread: also handle expired sessions.
Read the relay ledger for this project: what did the workers do?
Claude calls the tools for you:
| Tool | What it does |
|---|---|
relay_run |
Hands a job to a worker: task, context, cwd, an optional thread to continue, read_only, account, model, title, scope (the folders it changes). Returns the worker's report. Call it several times in one turn to run jobs in parallel. |
relay_status |
Who is the leader, which workers are ready, how much usage each has left; the threads in a project. |
relay_ledger |
Everything workers did in a project, to get back on track after a long break or a compacted context. |
While a job runs, the number next to the menu-bar icon counts it and the panel shows which account is on it and what it is doing.
Workers run in the background, so nobody is there to approve a command. Settings decides what they may do:
- Permission mode. Auto works like your own window: routine commands run, risky ones are refused. Edit files, Do everything and Read only are there too.
- Commands workers may run. Claude Code permission rules such as
Bash(npm test). - Commands workers may never run. Refused however the command is written: a full path,
./, or insidecd … && …. Use it for what only you or your own window should do, such asBash(git push *). - Jobs. One job at a time per folder (off by default) and Jobs per worker at once (1 by default).
Relay writes these rules into each worker account's own settings.json (your settings plus the rules) and keeps them current. Your own ~/.claude/settings.json is never changed.
flowchart LR
L["Your Claude Code window<br/>(leader)"] -->|"relay_run · hooks"| R
subgraph Mac["Your Mac · 127.0.0.1"]
R["Relay<br/>threads · project ledger · usage"]
end
R --> W1["Worker A<br/>official Claude Code<br/>own login"]
R --> W2["Worker B<br/>official Claude Code<br/>own login"]
W1 -->|report| R
W2 -->|report| R
R -->|report| L
- Leader and workers. The account of the window you are in is the leader; Relay recognises it from the session. Every other account is a worker.
- Threads and the ledger. Workers cannot see your conversation, so the leader writes a self-contained brief. A thread name resumes the same worker session; the project ledger goes into the next worker's prompt.
- Usage. Each account's numbers come from Claude Code's own
/usage, read in the background and live while the panel is open. - Safety net. A
StopFailurehook notices a plan limit and Relay continues the session with--resumeon the next ready account, then tells you.
- Never reads, copies or sends your Claude credentials. Sign-in only through
claude auth login; on macOS each login stays in the Keychain, managed by Claude Code. - Local only: the panel, its API and the hooks listen on
127.0.0.1. Nothing is proxied and the Claude Code binary is not modified. - Settings › Remove Relay takes it all out again and restores your settings; saved sign-ins stay unless you tick the box.
- Use only accounts you own. Each account's limits and terms still apply: the Consumer Terms, the Usage Policy and your organisation's terms for a Team or Enterprise seat.
An account keeps saying "Sign-in needed" right after I sign in
Another tool is deleting its login. On macOS Claude Code keeps one Keychain item per login folder; some multi-account tools (for example the clauth plugin) delete every such item they don't recognise whenever a Claude Code session starts. Relay shows a warning when it sees clauth enabled. Turn that tool off, then sign in again.
Not verified yet
A real plan-limit takeover (tested with simulated limit events and a fake claude), Apple notarization, and a real Windows machine.
npm test # 84 tests against a fake claude: no usage spent
node src/dev.js --demo # the panel in a browser
npx electron scripts/make-icon.js # icons from build/logo.svg and build/mark.svg
npx electron scripts/screenshots.js # the screenshots above, from the demosrc/core holds accounts, limit detection and takeover, usage, project memory, workers, hooks and connect, and macOS support; src/mcp.js is the MCP server, src/server.js the local API, ui/ the panel and src/main.js the Electron shell.
Relay includes code by ZhengGao-30, used under the MIT license. It is an independent project, not made by or affiliated with Anthropic.


