Stream Deck plugin for cmux workspace management.
While Claude is working across your cmux workspaces, you're often in a browser reviewing PRs or reading docs. Your Stream Deck shows workspace status and pending notifications, and lets you switch with a single tap -- no ⌘-Tab required.
Add Workspace actions to Stream Deck keys. Buttons are mapped to cmux workspaces by position (sorted left-to-right, top-to-bottom). Pressing a button selects that workspace and brings cmux to the front.
- Background color matches the workspace's cmux sidebar color
- Lighter background --currently selected workspace
- Orange bar (top) --workspace needs input
- Pink bar (top) --Claude is running
- Progress bar (bottom) --shows workspace progress
- Working directory --shown in cyan at the bottom
- Claude Code logo -- shown instead of title for "Claude Code" workspaces; bounces left-to-right when running
- Dynamic font sizing --title text scales to fit
- Black --no workspace at this position
Toggles between stable (/tmp/cmux.sock) and nightly (/tmp/cmux-nightly.sock) sockets. Shows the target socket name; blue background for stable, purple for nightly.
Creates a new cmux workspace, selects it, and starts claude --dangerously-skip-permissions in a temp directory. Each new workspace gets a color from a rotating 16-color palette.
- Stream Deck app ≥ 6.4
- macOS ≥ 12.0
- Node.js 20 (bundled by Stream Deck)
- cmux with Automation mode socket access
In cmux: Settings → Socket → set to Automation (not cmuxOnly, since the plugin process is not a cmux descendant).
Download the .streamDeckPlugin file from the latest release and double-click to install.
make installThis runs npm install, builds TypeScript, generates images, copies the plugin to the Stream Deck plugins directory, and restarts Stream Deck.
To create a distributable .streamDeckPlugin file (others can double-click to install):
make packageRun make to see all available targets.
After making changes:
make deployThis builds, copies files, and restarts the plugin process without restarting Stream Deck.
Default socket path is /tmp/cmux.sock (override with CMUX_SOCKET_PATH). Use the Nightly Toggle button to switch between stable and nightly at runtime.
