
You give Claude Code a long refactor, go make coffee, and come back to this:
You've hit your session limit Β· resets 3:45pm
It stopped forty minutes ago. If you pay for more than one account (personal and work, or a client's seat), the others sat idle the whole time. Moving to another account means logging out, logging in, guessing which one still has room, and typing "continue".
I got tired of that, so I built LiveIsland: a free, open-source Dynamic Island for the Mac's notch, written in Swift.
What it does
It switches before you hit the wall. LiveIsland runs two open-source tools for you: claude-swap for Claude Code and ccswap for Codex. Each one checks every account once a minute, and when the account in use nears the switch point you set (say 95% of the weekly limit), it moves the tool to the account with the most room. Claude Code sessions follow within about 30 seconds, in Terminal, VS Code or anywhere else. Codex picks up the new account at its next start (codex resume).
Every account, side by side. The notch's Accounts tab shows each account's 5-hour and weekly use, when it resets, which one is in use, and which has the most room (β ). One click switches by hand.
Nothing hidden. Settings has a console that shows every command LiveIsland runs, with its full output and exit code, and every check and switch as it happens. You can type commands there too. LiveIsland never reads your logins: the two tools hold them.
Everything else a Dynamic Island should do:
- now playing from any app, with a real waveform that moves to the music
- which agent is working, waiting for you, or done, with a sound when it finishes
- calls, mic and camera in use, AirPods battery, timers, your next meeting
Setup in three steps
- Settings βΊ Accounts, pick Claude Code or Codex, click Install. uv installs the tool, and an Update button keeps it current.
- Type a name and click Sign Inβ¦. Claude Code's (or Codex's) own sign-in opens in a separate folder, so the account you use now stays as it is, and LiveIsland adds the new one.
- Turn Auto on.
A few engineering notes
- Idle has to be nearly free. Closed, it uses under 1% of one core. No per-frame SwiftUI work: Core Animation does the animating, and timers tick at 1 s or slower.
- Transcripts can be gigabytes. Usage is read incrementally: byte offsets per file, and only new lines.
- The waveform only listens. A Core Audio process tap is read-only, and the bars are fed straight into CALayers 30 times a second, never through SwiftUI state.
- Keeping two forks apart. ccswap is a fork of claude-swap and keeps its data in the same folder on a Mac. LiveIsland runs ccswap with a home folder of its own, so the two never touch each other's accounts.
- Built with the Command Line Tools only, no Xcode: SwiftPM, Swift Testing, 105 tests.
The honest part
Automatic switching stays off until you turn it on. Neither Anthropic nor OpenAI says whether switching between your own accounts automatically is allowed. Anthropic's Consumer Terms forbid "bypassing any of our systems or protective measures", so decide for yourself, and keep it to accounts you actually pay for.
Try it
macOS 14+, Apple silicon and Intel, MIT license.
curl -fL https://github.com/charonova/LiveIsland/releases/latest/download/LiveIsland.zip -o /tmp/LiveIsland.zip \
&& ditto -x -k /tmp/LiveIsland.zip /Applications && open /Applications/LiveIsland.app
π https://github.com/charonova/LiveIsland
Feedback is welcome, especially from people juggling several Claude or Codex accounts. What would you want the island to show next?
Top comments (0)