Four agents in four terminal tabs. One of them is waiting for me.
I run several Claude Code sessions at once. In terminal tabs there is no signal for the one that stopped to ask me something, tool output arrives as raw text, and picking a session back up means hunting through history.
One window, several live sessions, and I always see who needs me
-
F1: Sessions side by side
A grid of live sessions with a colour per project. Any pane can be zoomed or detached into its own window.
-
F2: A waiting-for-you signal
When a session stops for my answer or a permission, its pane is flagged, with a sound, so it never sits unnoticed.
-
F3: Readable agent output
Tool calls, diffs and thinking render as widgets. The agent’s questions and permission prompts become clickable cards instead of terminal menus.
-
F4: A live status line and a trace
Context use and plan usage per session, with where each value came from, and a per-turn trace of the files, tools and skills the agent touched.
-
F5: Resume and survive
Sessions resume from Claude Code’s own logs, and an optional background host keeps them running when the app closes.
A real claude process per pane, parsed rather than reimplemented
The Rust side spawns each session on a pseudo-terminal (ConPTY on Windows), so every pane runs the real Claude Code CLI, not a reimplementation. A hidden terminal per pane answers the CLI’s terminal queries, and screen parsers turn its status line, question menus and permission prompts into UI. The terminal itself stays one click away for anything the UI does not model.
The code is written by AI agents under my specification, test contracts and review of the result. The contracts are strict: a render gate draws 47 UX states in both themes on every change, and a performance HUD watches frame time. When four busy panes stuttered, a measured fix took frame-time p95 from 765 ms to 31 ms, about 25× faster.
Measured, with dates
Frontend and Rust tests passing on the current build.
p95 before and after the fix.
UX states drawn in both themes, all passing.
Commits since April 2026.
Four live sessions, two of them waiting for me
In daily use. Public once it has earned it.
It is my daily driver. The code lives in a private repository for now: the plan is to publish it after a week of daily use without a new high-severity issue, as a clean export. It doesn’t have a product name yet; “for Claude Code” describes what it works with, not what it’s called.