Running one Claude Code session is easy. Running five at once is where it gets awkward: one is refactoring, one is writing docs, one is fixing a bug, and somewhere in those tabs a session stopped two minutes ago to ask "Do you want to make this edit?" Nothing moves until you find it.
I built hivemux for exactly that. It is a tmux sidebar that shows every Claude Code session, running, waiting for you, or done, and lets you jump to the one that needs you.
It is free, MIT licensed, and runs on macOS (Linux likely works but is untested).
What you see
The sidebar sits on the left of every tmux window. Each project gets a colored box, and each Claude gets a card with its task name and how long it has been in its current state:
- Running: the card glows. Leave it alone.
- Waiting for you: the card pulses amber and macOS sends a notification (except for the session you are already looking at).
- Done: a green badge waits until you have looked.
The task name is Claude's own conversation title. Double-click a card to rename it, and hivemux sends /rename to that Claude.
Getting to the right session fast
This is the part I use most:
-
Option+1…Option+9jumps to that session. -
Option+0jumps to whichever session has waited longest. - Or just click a card.
- The right of the tmux status line works like a food-court order board: a numbered badge for every task that needs input (amber, blinking) or just finished (green). Click one to go there.
So the loop becomes: keep working, glance at the sidebar or the status line, press Option+0, answer, carry on.
It survives closing the terminal, and reboots
Because everything lives in tmux, closing the terminal window does not stop anything. After a reboot, tmux-resurrect brings back the layout and hivemux runs claude --resume <id> in each pane, so every Claude comes back in the same conversation.
How it works
There is no daemon and no cloud service. hivemux is a set of shell and Python scripts built on two things that already exist:
- Claude Code hooks. Setup registers hooks so each session reports when it starts work, asks for input, or stops.
-
tmux pane options. The state is stored on the pane itself (
@claude_state), and every sidebar draws from that.
hivemux has no server and no telemetry. Apart from installing (it downloads hivemux and two tmux plugins from GitHub) and checking the latest Claude Code version when you update Claude, it makes no network requests of its own.
The installer adds clearly marked blocks to your tmux and shell config, and hivemux uninstall removes exactly those.
The bee office
This one started as a joke and stayed. hivemux office opens a small office where every Claude session is a bee:
- A working bee types at its desk, with small helper bees beside it for subagents.
- A waiting bee runs to the question window in the boss room and pops out in front when it has waited a while.
- A finished bee holds up a jar of honey, which goes into the honeycomb once you have looked. A Honey tab ranks bees by day, week and month.
- Click a bee to jump to its session.
At the end of the day, Clock out stops your Claudes and the bees walk home to a little village. Clock in brings every one back in the same conversation.
It is a silly way to see the same state as the sidebar, and it is oddly useful on a second monitor.
Try it
You need tmux 3.3+, jq, git, python3 and a logged-in Claude Code. Ghostty is recommended, but any terminal works if you start tmux yourself.
curl -fsSL https://hivemux.dev/install.sh | bash
or with Homebrew:
brew install esteban-eg-kim/tap/hivemux
hivemux setup
Then open a project and start Claude:
hm ~/code/api
hm ~/code/web
Watch the sidebar, and press Option+0 when something is waiting.
Links
- Website: hivemux.dev
- Docs: hivemux.dev/docs
- Guide: How to run multiple Claude Code sessions at once
- Source: github.com/esteban-eg-kim/hivemux
If you try it, I would love to hear what works and what does not, here in the comments or in a GitHub issue.



Top comments (0)