Open-source project
amirlehmam/wmux avatar
amirlehmam/wmux

wmux 2.7: A Windows terminal multiplexer that watches your AI agents and guards your edits

The original Windows terminal multiplexer for AI agents.

412 stars81 forksTypeScriptMIT

At a glance

What is it?
wmux is an Electron and xterm.js multiplexer for Windows that shows every coding agent in one window, ranks who needs you, and adds a read-only file tree with conflict-checked saves. The 2.7 release is the first to make agent edits visible next to the terminal they came from.
Who is it for?
Adopt wmux if you run multiple AI coding agents on Windows and need a single window that tells you who is blocked, what they changed, and lets you fix a line without leaving the terminal. Skip it if you never run agents, need a general-purpose multiplexer, or require per-project configuration beyond the global settings.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly TypeScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 8, 2026, and from our analysis. They are not legal advice.

Editorial analysis

What wmux actually solves

The README positions wmux as a visibility layer for coding agents on Windows. The problem is concrete: when you run several AI agents in separate terminals, you cannot tell which one is waiting for your input, what it has changed, or whether a file you are editing has been rewritten underneath you. wmux gives you a roster of every agent in the window, ranked by how long each has been blocked, and a file tree that shows live diffs. It is not a general terminal multiplexer like tmux for Windows. It is built for the specific workflow of supervising multiple agents at once.

The mechanism: hooks, a CDP proxy, and screen detection

wmux observes agents in three layers. For Claude Code, it auto-configures hooks in `~/.claude/settings.json` that report agent and tool activity to the sidebar. A CDP proxy on `localhost:9222` lets Claude Code's native `chrome-devtools-mcp` plugin control the wmux browser panel. For agents that report nothing, wmux falls back to screen detection: it identifies which agent a pane is running from the command line or shell, then matches the agent's on-screen UI against bundled rules to classify it as blocked, working, or idle. The key design choice is that a detected state never overrides a reported one. If an agent says it is working, that wins over what the screen looks like. And if no rule matches, the pane reads as silent, never idle, because idle is a claim no one made.

Getting it running: install, launch, and the first keybindings

The README does not give an install command, but it describes a Windows desktop application built on Electron, so the likely path is downloading a release from the GitHub releases page or building from source. Once running, the important shortcuts are `Ctrl+Shift+X` to dock the file tree on the right, `Ctrl+Shift+A` for the agent navigator, and `Ctrl+Shift+B` to jump to the agent that has waited longest. Screen detection is on by default and can be turned off in Settings → Workspace. Detection rules live in `%APPDATA%\wmux\agent-detection` if you want to add or fix one. The `wmux detect explain` command names the rule that fired and the line that matched, and `wmux detect explain --file screen.txt` replays a captured screen offline.

The file tree: a jail, not a browser

The 2.7 file tree is deliberately constrained. The renderer sends only a pane id and a relative path, never an absolute one. The main process derives the root itself, so a folder above the pane's cwd is unreachable even if the renderer asks for it. Symlinks and junctions are resolved on every path segment. This is a security boundary, not a convenience. The tree shows a `+55/-22` column per row, rolled up so a collapsed `src/` shows the sum of everything beneath it, including folders you never expanded. In a git repo the numbers mean uncommitted changes; outside one, they mean changes since the session started. The panel header says which interpretation applies. Files an agent touched get a dot, read from the hook stream wmux already receives.

Saves that refuse to overwrite: the stale-buffer guard

A save in wmux can only land on a file you opened in a pane, in this window, in this session. The save carries the timestamp the buffer was read at. If an agent rewrote the file while you were typing, the save is refused rather than quietly picking a winner. This is a strong correctness choice, but it has a cost: you must re-read the file and reapply your edit manually. The README also promises that CRLF line endings and UTF-16/BOM encodings survive the round trip instead of being normalised into a whole-file rewrite. That matters for Windows users who share files with tools that expect specific line endings.

What is missing: agent coverage and the silent pane problem

The bundled detection rules currently cover Claude Code (blocked, working, idle), plus Codex and OpenCode for identity and idle. Anything else is identified but reads as silent until someone contributes rules. The README is explicit: a new prompt shape wmux has not learned yet shows as 'we don't know'. This is honest, but it means wmux is only as useful as the rule set for the agents you actually run. If you use Cursor or Copilot, you will get a roster entry but no state. The `wmux detect explain --file` command is the intended way to author rules, and PRs are welcome. Whether you want to maintain your own detection rules is a real adoption question.

Alternatives and the difference in approach

The README names cmux as inspiration and herdr as the source of the agent-visibility model. cmux is a terminal multiplexer for AI agents that focuses on managing sessions, while herdr is a separate project that models agent visibility. wmux differs by being Windows-specific and by adding a file tree with edit-dots and stale-buffer protection. A generic alternative is tmux for Windows via WSL, but tmux has no concept of an agent's blocked state or a file's edit history. If you only need to keep multiple terminals open and switch between them, tmux is lighter. If you need to know which agent is waiting and what it changed, wmux is the only project in this description that provides that.

Maintenance, licensing, and what to verify first

wmux is MIT licensed, which means you can modify and redistribute it with attribution. The repository is active, with releases v2.6.0, v2.7.0, and v2.7.1 pushed on consecutive days in August 2026. That pace suggests rapid iteration, but it also implies you should expect frequent updates. The README warns that with no hooks configured there are simply no agent dots, and every number still works. That is a degradation to honest silence, not a guess, but it means you must verify that the hooks were injected into `~/.claude/settings.json` for Claude Code, and that the CDP proxy on `localhost:9222` is not blocked by your firewall. Before relying on wmux for edit safety, test a save against a file you have open in two panes to confirm the stale-buffer refusal works as documented.

Editorial conclusion

Adopt wmux if you run multiple AI coding agents on Windows and need a single window that tells you who is blocked, what they changed, and lets you fix a line without leaving the terminal. Skip it if you never run agents, need a general-purpose multiplexer, or require per-project configuration beyond the global settings. Before adopting, verify that your agent's UI is covered by the bundled detection rules; otherwise panes will read as silent, and you will need to write your own rules with `wmux detect explain --file`. Also confirm that the auto-injected Claude Code hooks in `~/.claude/settings.json` do not conflict with your existing hook setup, and test a save on a file you have open in two panes to see the stale-buffer refusal in action.

Frequently asked questions

What is the equivalent of Cmux for Windows?

wmux describes itself as the original Windows terminal multiplexer for AI agents, built on Electron and xterm.js. It takes cmux as its inspiration and says the agent visibility model is modelled on herdr. Its distinguishing addition is a roster that ranks blocked agents across every workspace by how long each has waited.

What is wmux?

An MIT licensed Windows terminal multiplexer written in TypeScript for people running several AI coding agents at once. Workspaces hold panes, and since version 2.0 the window keeps a roster of which agents are blocked, reachable with Ctrl+Shift+A or Ctrl+Shift+B.

Can wmux see an agent that never reports itself?

Claude Code, OpenCode and Kiro report through hooks or a plugin. For agents that report nothing, including Codex, Gemini, Aider, Amp, Cursor and Copilot, wmux works out which agent a pane is running from the command line that was typed there.

What happens if an agent rewrites a file while I am editing it?

The save is refused rather than quietly picking a winner, because every save carries the timestamp the buffer was read at and can only target a file you opened in a pane, in this window, in this session. CRLF line endings and UTF-16 or BOM encodings are also preserved instead of being normalised.

What does the +55/-22 column in the file tree count?

Inside a git repository the numbers mean everything uncommitted, and outside one they mean everything since the session started. A collapsed folder shows the sum of everything beneath it, including folders that were never expanded. The panel header says which of the two you are looking at.

What can the wmux phone console not do?

It cannot spawn, kill or close anything, and it never touches the pipe token. It can list agents, mirror a terminal, type, and press a choice the agent itself declared, and an answer is tied to the prompt it was shown for so a replayed tap is refused. It listens on 127.0.0.1:9790 only.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/amirlehmam-wmux.svg)](https://hysenlabs.com/projects/amirlehmam-wmux)