TL;DR
If you're coding on Windows and juggling multiple AI CLI agents in a single terminal window — stop. wmux is a native Windows terminal multiplexer that lets you run Claude Code, Codex, and Gemini CLI side by side, with built-in browser automation, an MCP server, and real session persistence. No WSL required.
winget install openwong2kim.wmux
That's it. 30 seconds and you're done.
The problem
macOS devs have had cmux — a tmux-based terminal multiplexer tuned for AI agents — for a while now. Windows devs? We've been stuck with a single terminal tab, Alt+Tabbing between agents, spamming "are you done yet?" into the void.
You could use WSL, sure. But then your PowerShell scripts, Windows-native toolchains, and ConPTY-aware TUIs (hi, Claude Code) start to feel awkward.
wmux fills that gap. It's a native Windows multiplexer built on ConPTY, xterm.js with WebGL rendering, and Electron. No VM, no Linux emulation, no weird path translation.
What it actually feels like
Picture this layout on one screen:
- Left pane: Claude Code writing your backend
- Right pane: Codex scaffolding the frontend
- Bottom pane: Gemini CLI running the test suite
-
Floating pane: A Quake-style dropdown terminal for quick
git statuschecks
Ctrl+D splits right. Ctrl+Shift+D splits down. Ctrl+N opens a new workspace. Ctrl+1~9 jumps between them. Ctrl+click stitches multiple workspaces into a multiview grid. If you're a tmux person, Ctrl+B gives you a prefix mode with 13 rebindable actions.
The part that actually sold me: browser control
Tell Claude Code "search Google for wmux" and it actually does it. Not via shelling out to curl. Not by pretending. wmux exposes a built-in browser panel connected over the Chrome DevTools Protocol, and the MCP server exposes tools like:
| What Claude does | MCP tool |
|---|---|
| Open browser | browser_open |
| Read page structure | browser_snapshot |
| Click element | browser_click |
| Fill form |
browser_fill / browser_type
|
| Press key | browser_press_key |
| Run JS | browser_evaluate |
| Screenshot | browser_screenshot |
So a prompt like "search for wmux on Google" becomes:
browser_open → browser_snapshot → browser_fill(ref=13, "wmux") → browser_press_key("Enter")
And it works. Even with React controlled inputs and CJK text — both of which love to break naive automation.
Every browser tool accepts a surfaceId, so each Claude Code session drives its own browser. Run three agents, get three browsers, zero cross-talk.
Agent-to-agent messaging
This is the fun one. wmux exposes a2a_send, a2a_broadcast, a2a_task_send, and friends. Your Claude Code instance on the left can literally ping your Codex instance on the right:
"Hey, I changed the API response shape, regenerate the TypeScript types."
That's not a demo — that's Tuesday.
Stop babysitting your agents
wmux watches terminal output throughput (not brittle pattern matching) and fires desktop notifications + taskbar flashes when:
- A task finishes
- A process exits abnormally
- A dangerous command shows up (
git push --force,rm -rf,DROP TABLE…)
Go make coffee. wmux will tell you when to come back.
Session persistence that actually persists
Close wmux. Reopen it. Your sessions are still there, 999K lines of scrollback intact, in the right working directory.
Reboot your machine. Same thing. A background daemon keeps PTY processes alive, dumps scrollback to disk, and auto-starts on login.
This is the part tmux users have been quietly missing on Windows for years.
Security I didn't have to ask for
- Token auth on every IPC pipe
- SSRF protection (blocks private IPs,
file://,javascript:) - PTY input sanitization
- Randomized CDP port (no fixed
--remote-debugging-port=9222for anyone to hijack) - Memory pressure watchdog (reaps dead sessions at 750MB, blocks new ones at 1GB)
- Electron Fuses locked down (RunAsNode disabled, cookie encryption on)
For a tool that hands AI agents a browser and a shell, this is the bare minimum — and wmux actually does it.
The rest of the goodies
- xterm.js + WebGL GPU rendering
- Unicode 11 width tables (CJK/emoji actually render correctly in TUIs)
- Shell integration via OSC 133 —
terminal_read_eventsgives agents semantic command boundaries, not raw bytes - Regex search (
Ctrl+F), Vi copy mode (Ctrl+Shift+X), scroll bookmarks (Ctrl+M) - Smart right-click: selection → copy, empty area → paste, link → Open/Copy menu
- Layout templates you can save and restore from the command palette
- Themes: Catppuccin Mocha, Monochrome, Sandstone
- i18n: English, Korean, Japanese, Chinese
- Auto-update via GitHub Releases
Agent detection covers Claude Code, Cursor, Aider, Codex CLI, Gemini CLI, OpenCode, and GitHub Copilot CLI out of the box.
Install
Pick your poison:
# winget (recommended)
winget install openwong2kim.wmux
# Chocolatey
choco install wmux
# PowerShell one-liner
irm https://raw.githubusercontent.com/openwong2kim/wmux/main/install.ps1 | iex
Or grab wmux Setup.exe from the releases page.
Final thought
Windows devs have been the second-class citizens of the AI coding agent world for a minute. wmux doesn't fix everything — but running three agents on one screen, each with its own browser, talking to each other, surviving reboots? That's a genuinely different workflow.
Repo: github.com/openwong2kim/wmux — MIT licensed.
If you try it, I'd love to hear which layout you end up with. Mine is Claude-left / Codex-right / Gemini-bottom, and a floating terminal for git. What's yours?
Top comments (0)