claude-garage-showreel-rust.mp4
Running several Claude Code sessions means juggling terminal windows. The hard part isn't the windows. It's knowing which session is waiting for you right now, and not losing sessions when you close a terminal or reboot.
herdr solves a lot of this and is a good product. I found it too complex and verbose for what I needed. So I built something simpler: one wall, one key to jump to whoever is waiting, and tmux keeping every session alive.
- Shows every session at once. One full-screen grid per project.
- Tells you who needs you. A session waiting for your answer turns
amber. Press
ato jump to it, from any project. - Keeps sessions alive. tmux runs them, not garage. Close the terminal or reboot, and your sessions come back with their full conversation.
It's small: a 2.6 MB binary, about 6 MB of RAM and ~2% CPU.
You need:
- macOS
- Node.js 20 or newer
- tmux 3.2 or newer (garage offers to
install it with
brew) - Claude Code on your
PATH
Then run:
npx claude-garageOn an Intel Mac, the first run builds the app from source, so you also need Rust (rustup.rs). Apple Silicon needs nothing extra.
- Press
wand add a project folder. You can type, paste or drag the path in, or pressCtrl+Oto pick a folder. - Press
nto start a Claude session in it. - Press
Enterto type into the session. PressCtrl+Gto get back to garage. - Press
?any time to see all keys.
Press q to quit. Your sessions keep running in the background.
| Glyph | State | Meaning |
|---|---|---|
● |
needs input | Claude is waiting for your answer. Always sorted first. |
◐ |
working | Claude is running. |
✓ |
done | Finished since you last looked. |
○ |
idle | Waiting for your next request. |
⟳ |
restorable | The session stopped (after a reboot, say). Press Enter to bring it back. |
Moving around
| Key | Action |
|---|---|
1–9 |
switch project |
[ / ] |
previous / next session |
Tab |
switch view |
m |
maximize the focused session |
a |
jump to the session waiting longest |
A |
list every waiting session |
Typing into a session
| Key | Action |
|---|---|
Enter |
start typing into the focused session |
Ctrl+G |
stop typing, back to garage |
t |
open the session in its own terminal window |
Sessions and projects
| Key | Action |
|---|---|
n |
new session |
N |
new session in its own git worktree |
x x |
close the focused session |
R |
bring back all stopped sessions in this project |
d |
move the session into its own view (press again to move it back) |
D |
move the session to another view |
w |
add a project |
X X |
remove the project (sessions keep running) |
X K |
remove the project and close its sessions |
Closing a worktree session (x x) asks whether to merge, discard or keep
its branch.
Restart and extras
| Key | Action |
|---|---|
r r |
restart the focused session on the latest claude |
r a |
restart all idle sessions in this project |
r d |
restart garage's background service |
I |
install hooks (instant status) and the context meter |
P |
pick a pit pet |
? |
show all keys |
q |
quit |
Terminal tip: Ghostty, iTerm2, kitty and WezTerm work best. In macOS Terminal.app,
Shift+Enteracts likeEnter. UseOption+Enterfor a new line instead.
When Claude Code ships an update, running sessions keep the old version. To update them:
claude-garage restart --sessionsThis restarts every idle session and keeps its conversation. Busy
sessions are skipped. Add --all to restart those too.
claude-garage restart alone restarts only garage's background service.
Your sessions are not touched.
An optional pet lives in the bottom bar. It sleeps when all is quiet and
runs to alert you when a session needs you. Press P to choose one.
Everything stays on your machine.
- garage listens on
127.0.0.1only. - No telemetry, no accounts.
- State is one file:
~/.garage/state.json.
tmux runs every session
└─ daemon small Node service: starts, lists and watches sessions
└─ TUI the Rust terminal wall you look at
You can delete garage and your sessions keep running. Reattach any of them
with tmux attach -t garage/<project>/<label>.
npm install
npm test # daemon tests
npm run build:tui # build the Rust app into wall/dist
cd wall && cargo test --lib --binsNote: plain cargo test also starts and kills real tmux sessions.
- Linux support
- Diff review in the TUI
- Adopt an existing tmux session
- Phone notifications
MIT © Saiful Islam
Not affiliated with Anthropic. "Claude" and "Claude Code" are Anthropic trademarks.




