I've been running multiple Claude Code sessions in parallel across different repos and got tired of cmd-tabbing between terminal tabs trying to figure out which one needs me and which one is still working. So I built a little desktop app for it (or I watched it being built as they say these days).
It auto-discovers all running Claude processes and shows what each one is doing — no setup needed. There are a million projects out there that do that but the thing that always felt missing was having the full lifecycle of a code change in one place. You can see an agent go from working, to waiting for approval, to having an open PR with CI checks, review comments, and merge conflicts — all without leaving the dashboard. If a test fails or someone leaves feedback, you see it right there next to the session that wrote the code.
The "Ah yes this code from agent 69 never made it to Github before the release I see" shenanigans are a lot less likely with Claude Control in my experience.
I usually have it fullscreen to the side and everything opens on my main external screen. That way I never get lost in the weeds. And I'm intentionally not implementing any "depth" to the dashboard, opening a detailed session view etc. as that feels like a loss of the "oversight" I'm aiming for.
The trickiest part has been status detection. Claude Code exposes lifecycle hooks that I use as the primary signal, but there are edge cases — a session can look idle when it's actually just between tool calls, or show as working when it's really waiting for input. I've layered on CPU and JSONL heuristics as fallback but it's still not perfect.
If anyone has clever ideas here I'm all ears.