Wmux
wmux (Windows Terminal Multiplexer) is a native Windows terminal multiplexer designed for running AI coding agents. Built on ConPTY and Electron, it provides tmux-style split panes, session persistence, a built-in browser with Chrome DevTools Protocol (CDP) automation, and an integrated Model Context Protocol (MCP) server — all without requiring WSL, Cygwin, or MSYS2.[1][2]
It is purpose-built for AI coding agents such as Claude Code, OpenAI Codex CLI, and Google Gemini CLI, and supports multi-agent workflows through a built-in A2A (Agent-to-Agent) messaging protocol.
| Developer(s) | openwong2kim |
|---|---|
| Stable release | 2.1.6
|
| Engine | |
| Operating system | Microsoft Windows |
| Available in | English, Korean, Japanese, Chinese |
| Type | Terminal multiplexer |
| License | MIT License |
| Website | wmux |
Search Wmux on Amazon.
Background
On Unix-like operating systems, terminal multiplexers such as tmux and GNU Screen have long allowed developers to manage multiple terminal sessions within a single window. Windows, however, lacked a native equivalent. While tmux can be run through WSL (Windows Subsystem for Linux), the WSL environment is not fully integrated with native Windows processes and introduces additional configuration overhead.
With the rapid proliferation of large language model-based AI coding agents in the 2020s — including Claude Code, Codex CLI, and Gemini CLI — demand arose for a way to run multiple AI agents simultaneously on Windows and have them collaborate. wmux was created to address this need, combining terminal multiplexing, browser automation, and inter-agent communication in a single application.
Overview
wmux is described by its developers as "LSP for terminals" — analogous to how the Language Server Protocol provides a standard interface between editors and language analysis tools, wmux acts as a neutral substrate on which external AI tools can build workflow intelligence on top of any terminal session.
Core design principles include:
- No WSL required: Communicates directly with the Windows kernel via ConPTY, eliminating the need for WSL, Cygwin, or MSYS2.
- AI-first: An MCP server is built in, enabling AI agents to directly control the terminal and browser.
- Multi-agent: Multiple AI agents running within the same wmux instance can communicate via an A2A (Agent-to-Agent) protocol.
- Session durability: Terminal sessions and scrollback buffers are restored after app restarts and system reboots.
Installation
wmux can be installed in several ways:
| Method | Command / Action |
|---|---|
| winget (recommended) | winget install openwong2kim.wmux
|
| Chocolatey | choco install wmux
|
| Installer | Download wmux Setup.exe |
| PowerShell one-liner | iex |
The PowerShell one-liner automatically installs Python and Visual Studio Build Tools if they are not present.
Features
Terminal multiplexing
wmux uses ConPTY-based native Windows pseudo-terminals and xterm.js with WebGL hardware-accelerated rendering. It applies Unicode 11 width tables for correct CJK character and emoji cursor positioning, ensuring that TUI applications such as Claude Code and Vim render correctly.
Key terminal features include horizontal and vertical pane splitting (Ctrl+D / Ctrl+Shift+D), per-workspace tabs, a Quake-style floating pane (Ctrl+`), 999K-line scrollback with disk persistence, tmux-style prefix mode (Ctrl+B followed by one of 13 action keys), smart right-click (selection → instant copy; empty area → instant paste; link → Open/Copy Link menu), scroll bookmarks (Ctrl+M to mark, Ctrl+Up/Down to jump), Vi copy mode (Ctrl+Shift+X), regex search (Ctrl+F), and OSC 133 shell integration (auto-injected for PowerShell and Bash).
Built-in browser and CDP automation
wmux includes a built-in browser panel (Ctrl+Shift+L) driven by the Chrome DevTools Protocol (CDP). The panel includes a navigation bar, DevTools, back/forward navigation, and an Element Inspector that highlights elements on hover and copies LLM-friendly context on click.
CDP automation supports click, form fill, text typing, screenshot capture, JavaScript evaluation, and key press. React controlled inputs and CJK text are handled correctly.
MCP server integration
When wmux starts, it automatically registers an MCP (Model Context Protocol) server in ~/.claude.json. Claude Code can use wmux's browser and terminal features without any manual configuration. Each browser tool accepts a surfaceId parameter so that multiple Claude Code sessions can each control their own independent browser.
| Category | MCP Tool | Description |
|---|---|---|
| Browser control | browser_open |
Open browser panel |
browser_navigate |
Navigate to URL | |
browser_screenshot |
Capture screenshot | |
browser_snapshot |
Read page structure | |
browser_click |
Click element | |
browser_fill / browser_type |
Fill form | |
browser_evaluate |
Execute JavaScript | |
browser_press_key |
Send key press | |
| Terminal control | terminal_read |
Read terminal output |
terminal_read_events |
Read commands semantically via OSC 133 | |
terminal_send |
Send command to terminal | |
| Workspace management | workspace_list |
List workspaces |
surface_list |
List surfaces | |
pane_list |
List panes | |
| A2A messaging | a2a_send / a2a_broadcast |
Send messages between agents |
a2a_whoami |
Query own agent ID | |
a2a_task_send / a2a_task_query / a2a_task_cancel |
Delegate and track tasks | |
| Company mode | company_a2a_send |
Send coordinated message |
company_a2a_inbox |
Check inbox | |
company_a2a_status |
Check status |
Multi-agent workflows
wmux's A2A (Agent-to-Agent) protocol allows AI agents running within the same wmux instance to exchange messages and delegate tasks. For example:
- Left pane: Claude Code writes the backend API
- Right pane: Codex CLI builds the frontend UI
- Bottom pane: Gemini CLI runs tests and reports results back to the other agents via A2A
Company Mode is a more structured multi-agent coordination mode in which a central orchestrating agent distributes tasks to sub-agents and tracks their status.
Session persistence
wmux restores terminal sessions after app restarts and system reboots via a background daemon process:
- App restart: The daemon keeps PTY processes alive in the background, so sessions reconnect instantly when wmux is reopened.
- Reboot: Scrollback buffers and working directories are saved and recovered. wmux registers itself to auto-start on Windows login.
- Auto-update: Checks for updates via GitHub Releases; can be toggled in Settings.
Notifications and agent detection
wmux uses output throughput-based activity detection (rather than pattern matching) to determine when an AI agent has completed work, making it compatible with any agent. Automatically detected agents include Claude Code, Cursor, Aider, Codex CLI, Gemini CLI, OpenCode, and GitHub Copilot CLI.
Events trigger the following responses:
- Task complete → Windows desktop notification (toast) + taskbar flash
- Abnormal exit → immediate warning
- Dangerous commands (
git push --force,rm -rf,DROP TABLE, etc.) → dangerous action warning
Security
| Security feature | Details |
|---|---|
| IPC authentication | Token authentication on all Named Pipes |
| SSRF protection | Blocks private IP ranges, file://, javascript: schemes
|
| Command injection prevention | PTY input sanitization |
| CDP port security | Randomized port (no fixed debug port) |
| Memory watchdog | Reaps dead sessions at 750 MB; blocks new sessions at 1 GB |
| Electron Fuses | RunAsNode disabled; cookie encryption enabled |
Keyboard shortcuts
| Shortcut | Action |
|---|---|
| Ctrl+D | Split pane right |
| Ctrl+⇧ Shift+D | Split pane down |
| Ctrl+T | New tab |
| Ctrl+W | Close tab |
| Ctrl+N | New workspace |
| Ctrl+1–9 | Switch workspace |
| Ctrl+⇧ Shift+L | Open browser panel |
| Ctrl+B then key | tmux-style prefix mode (13 actions) |
| Ctrl+⇧ Shift+B | Toggle sidebar |
| Ctrl+` | Toggle floating pane (Quake-style) |
| Ctrl+K | Command palette |
| Ctrl+I | Notification panel |
| Ctrl+, | Settings |
| Ctrl+F | Search terminal (with regex toggle) |
| Ctrl+M | Add scroll bookmark |
| Ctrl+↑ / ↓ | Jump to previous/next bookmark |
| Ctrl+⇧ Shift+X | Vi copy mode |
| F12 | Browser DevTools |
Architecture
wmux consists of four main processes:
Electron main process
Handles core application logic: PTYManager (ConPTY-based pseudo-terminal management), PTYBridge (data forwarding and ActivityMonitor), AgentDetector (gate-based agent status tracking), SessionManager (atomic save with .bak recovery), ScrollbackPersistence (terminal buffer dump/load), PipeServer (Named Pipe JSON-RPC with token authentication), McpRegistrar (auto-registers MCP in ~/.claude.json), WebviewCdpManager (CDP proxy to webview), DaemonClient (daemon connector), AutoUpdater (GitHub Releases feed), and ToastManager (OS notifications and taskbar flash).
Renderer process
A React 19 + Zustand UI layer consisting of: PaneContainer (recursive split layout), Terminal (xterm.js + WebGL + scrollback restore), BrowserPanel (webview + Inspector + CDP), NotificationPanel, SettingsPanel (auto-update toggle, workspace reset), and a Multiview grid.
Daemon process
Runs independently in the background to keep PTY sessions alive across app restarts: DaemonSessionManager (ConPTY lifecycle), RingBuffer (circular scrollback buffer), StateWriter (session suspend/resume), ProcessMonitor (external process watchdog), Watchdog (memory pressure escalation), and DaemonPipeServer (Named Pipe RPC with token authentication).
MCP server
Runs as a stdio process bridging Claude Code and wmux: PlaywrightEngine (CDP connection, fast-fail), CDP RPC fallback (screenshot, evaluate, type, click), and a Claude Code ↔ wmux Named Pipe RPC bridge.
Comparison with similar software
| Software | Platform | WSL required | AI agent support | Browser automation | MCP server | Session persistence |
|---|---|---|---|---|---|---|
| wmux | Windows native | No | Built-in, dedicated | Built-in CDP | Auto-registered | App restart + reboot |
| tmux | Unix/Linux/macOS | N/A | None | None | None | Session keep-alive |
| GNU Screen | Unix/Linux/macOS | N/A | None | None | None | Session keep-alive |
| Windows Terminal | Windows native | No | None | None | None | None |
| tmux (via WSL) | Windows + WSL | Required | None | None | None | Limited |
Technology stack
| Component | Technology | Role |
|---|---|---|
| Terminal rendering | xterm.js + WebGL | GPU-accelerated terminal output |
| Pseudo-terminal | node-pty / ConPTY | Native Windows PTY |
| Desktop framework | Electron | Cross-process app container |
| Browser automation | Playwright | CDP engine |
| UI framework | React 19 + Zustand | Renderer UI and state management |
| IPC | Named Pipe JSON-RPC | Inter-process communication |
| Updates | GitHub Releases | Auto-update feed |
Development
wmux is open-source software released under the MIT License, with source code hosted on GitHub. Development requires Node.js 18 or later, Python 3.x (for node-gyp builds), and Visual Studio Build Tools with the C++ workload. The install.ps1 script installs Python and VS Build Tools automatically if they are missing.
git clone https://github.com/openwong2kim/wmux.git
cd wmux
npm install
npm start # Development mode
npm run make # Build installer
wmux detects AI coding agents for status display purposes only. It does not call any AI APIs, capture agent outputs, or automate agent interactions. Users are responsible for complying with their AI provider's Terms of Service.
See also
- tmux
- GNU Screen
- Windows Terminal
- Model Context Protocol
- Chrome DevTools Protocol
- Electron (software framework)
- ConPTY
- xterm.js
References
- ↑ "wmux – Windows Terminal Multiplexer for AI Agents". GitHub. Retrieved 2026-05-15.
- ↑ "wmux — Windows terminal multiplexer for AI agents". wmux.app. Retrieved 2026-05-15.
External links
Category:Terminal emulators Category:Windows-only software Category:Free software Category:MIT licensed software Category:Artificial intelligence applications Category:Terminal multiplexers Category:Electron (software framework)-based software
This article "Wmux" is from Wikipedia. The list of its authors can be seen in its historical and/or the page Edithistory:Wmux. Articles copied from Draft Namespace on Wikipedia could be seen on the Draft Namespace of Wikipedia and not main one.
