gmux
A Windows-native, GPU-accelerated terminal multiplexer built for running many AI coding agents in parallel.
- Language
- Rust
- Renderer
- wgpu
- Milestones
- M0–M12
- all shipped
- Targets
- x64 · ARM64
- License
- MIT
My role
Sole author
Domains
Systems/Windows internals/Developer tools
Context
Running coding agents in parallel is now a normal workflow: four or five terminals, each with an agent working, each occasionally needing a human. On macOS there are tools built for exactly this. On Windows there is no native tmux, and every alternative either drops the multiplexing, drops the notifications, or wraps a browser engine to draw text.
The problem
The failure mode is not aesthetic, it is attentional. An agent finishes, or asks for permission, and nothing tells you — so you poll windows, and the machine sits idle between the moment it needed you and the moment you noticed. Closing the window kills the sessions on top of that.
What I built
gmux builds the tmux model in-app: a per-user daemon owns the ConPTYs so sessions survive closing the GUI, with sessions, windows, panes, splits and real detach/reattach on top. The wedge is notifications — any tool that emits an OSC 9, 777 or 99 escape lights its pane with a persistent attention ring, badges the taskbar and fires a real Windows toast, suppressed when you are already looking at that pane and cleared when you focus it. No SDK, no integration: it works with anything that speaks the standard escape. The grid renders through wgpu rather than a browser engine, and a named-pipe API with a tmux-style CLI lets orchestrators drive it from outside.
Outcome
Every roadmap milestone from the terminal core through detach and restore shipped, plus sixteen rounds of interface work: scrollback search with match highlighting, OSC 8 hyperlinks with hover tooltips, IME input, mouse reporting, per-pane scrollback, a command palette, prompt-jump navigation, OSC 52 clipboard and busy-pane close protection. MIT-licensed, x64 and ARM64, portable — no installer.
How it works
Detail- Notifications that actually fire
- OSC 9 / 777 / 99 map to a Windows toast plus a persistent per-pane attention ring and taskbar badge. Suppression is state-aware: no toast for the pane you are already watching, and the ring clears on focus, so the signal stays meaningful instead of becoming noise you learn to ignore.
- Sessions that survive you
- A per-user daemon holds the ConPTY handles, so closing the GUI — or crashing it — leaves the agents running. Reattach restores the layout, and session state survives a reboot.
- Programmable from outside
- A local named-pipe API plus a tmux-style CLI: send-keys, capture-pane, screenshot, wait-for, subscribe. That makes gmux a target for orchestration scripts, not just a window you type into.
- Native rendering
- Rust with wgpu for the grid — no Electron, no web view. The terminal core came first and everything else was built on top of it, because a multiplexer with a subtly wrong VT parser is worse than no multiplexer.
Built with
Rust/wgpu/ConPTY/Win32/Named pipes