The problem was attention, not depth
I run three or four Claude Code sessions in parallel most days. Depth inside each thread was never the problem. The problem was attention across them: knowing which session actually needs me right now, and which one finished ten minutes ago while I wasn't looking.
Claude Deck fixes that. It's a native plugin (com.adenmann.deck) for a 15-key Elgato Stream Deck, and it does one job: turn each key into a live state light for a session, running, waiting for you or done.
How it works
The mechanism is simpler than it sounds. Claude Code already writes a .jsonl transcript for every session, and that transcript is the single source of truth Claude Deck reads to drive the state machine. No polling a window, no scraping a title bar, just tailing the file the tool already produces.
Two things had to hold before this was viable, and neither was guaranteed going in:
- Desktop-app Claude Code sessions fire the same hooks and write the same readable transcripts as CLI sessions.
- A
claude://code/new?prompt=...deep link prefills and sends a prompt in one step, so a single key press can launch a fully-formed new session rather than a blank one.
Once both checked out, the rest was straightforward: own the whole stack instead of wrapping something fragile, and let the transcript drive the lights.
Why it exists
It's a small personal tool, built to solve a problem I actually had rather than one I imagined I might. That's the bar I try to hold any side project to.
Stack
Elgato Stream Deck SDK, native plugin, .jsonl transcript parsing.