Windows 安装包目前用 SignPath 测试证书签名,SmartScreen 会提示未知发布者;macOS 仅支持 Apple Silicon 且需 13 及以上,macOS 12 收不到更新;Copilot CLI 等部分 agent 需先运行 wmux setup-hooks 才能上报状态;默认安装不发送推送通知,需自行配置 relay。
wmux
openwong2kimMIT活跃维护面向 AI 编码代理的代理开发环境(ADE),用 git worktree 隔离多代理并行工作,并集成浏览器自动化,把编码之外的杂活交给代理自动完成。
The ADE for AI agents. Automate everything else. Do your true work.
winget install openwong2kim.wmuxREADME 未说明显存或 GPU 要求;这是 Electron 桌面应用,Windows 10/11 x64 与 Apple Silicon Mac(macOS 13 Ventura 及以上),Linux 为实验性构建。
在 Windows 和 macOS 上并排运行多个 AI CLI agent 的桌面工作台,按 hunk 挑选并采纳它们的改动
面向 AI 编码代理的代理开发环境(ADE),用 git worktree 隔离多代理并行工作,并集成浏览器自动化,把编码之外的杂活交给代理自动完成。
核心能力
- 每个任务独立 git worktree,一条提示拆成最多 8 个并行任务
- 跨任务勾选 diff 中的 hunk,一次性 git apply 到工作区
- 用自然语言给 bot 派活,自动起 Claude Code worker 跑测试
- 后台 daemon 保活会话,iPhone 上回答 agent 提问与审批
- 原生 ConPTY 支持 Windows 10/11,无需 WSL
容易踩的坑
- v4.15.0-beta.1pre-release2026-11-06 · 2026-11-06 00:39 UTC
查看更新说明
Added
-
Claude Code panes show the exact running / needs-you / done state Claude reports itself. Claude Code asks the terminal whether it supports the Program Status Protocol (OSC 7501), and wmux now answers. From then on Claude reports its own state: working, waiting on your approval, done, or stopped. The pane follows those reports, so it stays Running through a long silent think, shows Needs you as soon as a permission prompt opens, and settles when Claude says the turn is over. Stop, rewind and stall detection read the same reports. Before, all of this was guessed from the spinner in Claude's window title. That guess remains the fallback when the question cannot be answered, for example before wmux has recognised the agent or when Claude runs over ssh. (#2838)
-
Agents that drive other apps each get their own colour. On macOS, each agent now has its own coloured ring, name pill (
#w1-2 · Claude Code), pointer and typing caret, so several agents working at once can be told apart. Before, every agent shared one orange halo and one cursor. An agent waiting for another one's turn at the real mouse shows as waiting, and a bar at the top of the screen counts the agents and shows the stop keys. The same colour marks the agent's pane as a dot on its tab and sidebar row. -
Each agent's own marker on Windows too. On Windows, an agent that drives another app now shows the same coloured ring, name pill, pointer and typing caret as on macOS, so several agents working at once can be told apart. A waiting agent shows as waiting, and a bar at the top of the primary monitor counts the agents and shows the stop keys.
-
Pair two of your PCs over Tailscale without copying an invite. Remote › Connect a PC has a Tailscale tab, first when this PC is on a tailnet. On one PC, Make this PC discoverable lets your own Tailscale account's devices see its name and wmux version for 5 minutes. On the other, Find PCs lists it and Connect asks it. Both screens show the same 6-digit code, and the discoverable PC's card names the asking device as Tailscale identifies it (device, account, OS and tailnet address) next to Deny and Allow. After Allow, the asking PC confirms the codes match too, and only then do the two PCs pair as an invite would; the other PC sees no pane until you tick one. Before, pairing over a tailnet meant creating an invite on one PC and pasting it on the other. Opening the dialog only reads Tailscale's local status; nothing goes over the network until a button is pressed. (#3046, #3047)
-
A setting to let agent panes inherit your credentials. Settings > Git safety has a new switch, "Withhold credentials from agent panes", on by default. Turn it off and a pane that an agent opens gets environment variables named like a secret (
*_TOKEN,*_KEY, ...) the way a terminal you open yourself does. Commands, supervised panes, bots and fan-out tasks never get them, and their values are never saved to disk. (#3050) -
Terminal file links open in a wmux editor tab. Clicking a file path in a terminal (plain paths, wrapped paths and OSC 8
file:links) now opens it in a read-only editor or preview tab of that pane, at the line when the path carries one (src/a.ts:42:7), instead of handing it to the system app. The target line is scrolled into view and marked. A new Settings › Terminal option, "Open file links in", switches back to the system app. (#3057) -
WSL paths in terminal links. Paths printed inside a WSL shell, including
/home/...paths,file://links and relative paths, resolve to the matching\\wsl.localhost\<distro>location and open in the viewer. (#3057) -
Labs: draw terminals with wongtty, a Rust/WebAssembly terminal, and switch back at any time. Settings › Labs › "Rust terminal front end (wongtty)" rebuilds every open terminal with the other engine as soon as you flip it, and keeps what each one showed: s
-
- v4.14.0最新正式版2026-11-03 · 2026-11-03 08:27 UTC
Added
-
Company mode groundwork: companies and company tasks. A workspace can become a company: one of its panes is the coordinator and the others are its staff. The coordinator takes a request from anyone. A new task to a staff pane must come from inside the company, name that pane and carry a brief (goal, scope, acceptance, how to verify, what to report); a company task is canceled only by the pane that created it. (#2876)
-
Claude can send files to your phone. A new setting under Settings → Claude Code, off by default, lets Claude send files to the wmux phone app from panes started after you turn it on. Claude's own Remote Control may then not upload those files to claude.ai. (#2882)
-
Make a workspace a company. The workspace menu's Make company… sets a mission, the CEO pane and optional standing orders; Company settings… and Dissolve company follow. A company's sidebar row shows its mission instead of the git line, and its roster lists the CEO first, with each pane's label as its title. (#2886)
-
A company board. A company workspace's menu has Open board, which opens a Board tab beside the CEO's terminal. It lists what waits on you, every pane as a seat (the CEO first, with its role, its open jobs and its next one), the work handed to other workspaces, and a log of finished jobs. The jobs are the ones Fleet lists, and they come back after a restart. Work sent to fan-out workers is not shown yet. (#2888)
-
The company board and Fleet show work sent to other PCs. A task sent to a pane on another PC now appears on the sending company's board under Handed out, named by that pane's alias. It moves as the other PC works on it and lands in the log with its report, also when the other PC refuses it or the link between the PCs breaks. Fleet and the phone list it too, and Fleet's Jump goes to the pane that sent it. Before, such work showed nowhere. (#2891)
-
Make a company in one pick from a preset. The + menu now has a Company section with two presets: a CEO with a researcher and three developers, and a lead with a builder and a reviewer. The dialog lets you change the name, folder, mission, each seat's name, what it owns and its agent, and which seat is CEO. Make then creates the whole company at once: a pane for each seat, named and started with its agent. Every seat but the CEO works in its own worktree and branch of the folder, so the agents never edit the same checkout. With "Tell each agent its seat" on (the default), each agent's first turn tells it its seat, its worktree, who its CEO is and how work is handed out, so the CEO can start sending briefs right away. A name that is already taken gets a
-2suffix. Before, each of these steps was done by hand. (#2892) -
Balance layout. The prefix key
=and a command-palette entry give every column and row of the workspace an equal share again, however you had dragged the dividers. Seven side-by-side columns become one seventh of the window each, and a column split into rows divides its height evenly. You can also bind a key to it in Settings → Shortcuts. (#2895) -
A Linux PC added over SSH can run its terminals on the Rust engine. The wmux server that "Add PC over SSH" installs now includes the Rust terminal engine, on x64 and arm64. Before, the server could only use the Node engine. Node is used when the Rust engine cannot load. (#2903)
-
Several multiview groups. Ctrl+click from a workspace outside every group starts a new group instead of replacing the one you had; click any member to bring its grid back. Each grouped workspace shows its group number in the sidebar, and groups are kept across restarts. (#2906)
-
"Send now" works on a Codex pane. A message you send now from your phone goes into the running Codex turn, as it does on Claude. A message for the next turn still waits for the turn to end, and a message sent while Codex works
-
- v4.13.02026-10-30 · 2026-10-30 00:29 UTC
查看更新说明
Added
-
A schedule that keeps failing pauses itself. Before, a scheduled run that failed the same way every time kept firing until you noticed. Now, after three scheduled runs in a row fail for the same reason, wmux turns the schedule off and tells you why on the schedule's page. Fix the cause, then turn the schedule back on. Cancelled runs, skipped occurrences, runs that timed out waiting for your answer and Run now never count, and editing what the schedule runs starts the count over. The run that pauses the schedule shows one notification, not two. (Idea adopted, with attribution, from the MIT-licensed cobusgreyling/loop-engineering; no code was copied.)
-
Qwen Code gets the wmux MCP server. If you use Qwen Code, wmux now adds its MCP server to your existing
~/.qwen/settings.json, the same way it already does for Claude Code, Codex and Gemini CLI, so Qwen can drive panes, the browser and agent messaging without manual setup. wmux never creates that file; if Qwen Code is not set up, nothing is written. Qwen's hook events are also mapped for later status tracking, but the hooks are not installed yet. (#2824) -
Codex panes show the exact running / needs-you state Codex reports itself. Codex CLI writes its own status (working, waiting on you, idle) with the Program Status Protocol (OSC 7501), and wmux now reads it: a pane stays Running through a long, quiet reasoning stretch, shows Needs you the moment an approval box opens even when the question wraps on a narrow pane, and settles when Codex says the turn is over. Before, the status was guessed from the window title, output volume and lines on the screen, which read a quiet turn as idle and a repainted footer as finished. Those guesses remain the fallback for agents that do not report. (#2836)
-
Choose My Hermes or wmux's Hermes per bot. Add bot and the bot profile now offer My Hermes, which is your own Hermes (
~/.hermesor one of its profiles), next to Claude and wmux's managed Hermes. Before you pick a profile, wmux shows whether it could serve a bot: the version, a model, approvals, and no wmux MCP entry or messenger platforms. These checks are read-only, and wmux never writes to your Hermes. One bot can use a profile at a time, and wmux asks you in its own dialog before it binds one. My Hermes works on macOS and Linux only. -
Read and answer a Hermes Agent pane from your phone. Before, the phone's Chat view had nothing to show for a pane running Hermes Agent. Now, once you have sent Hermes its first message in the terminal, the Chat view shows the conversation, tool calls included, and you can send the next message from the phone while Hermes is waiting at its prompt. wmux reads Hermes' own session history without changing it, and only while Hermes is running. Sending is closed during a turn and while Hermes asks you something in the terminal. This works with Hermes' standard terminal interface, not with its
--tuiinterface, a profile started with-p, or two Hermes panes in the same folder. -
Bots run on My Hermes. A bot set to My Hermes now answers in its 1:1 chat with your own Hermes profile, using that profile's tools and approval settings as you configured them. wmux sends it only your own messages from that chat: nothing from other bots, guests or the rest of the room. Its only wmux tool is posting in that chat. Hermes's permission requests come to you as approval cards. Stopping the bot cancels its turn and never stops your Hermes gateway. Before every start wmux checks the profile again, and it never writes to it. Schedule actions and the Run button are not sent to My Hermes yet (routines you write are; see below); the chat says so instead. macOS and Linux only.
-
Routines for My Hermes. A bot on My Hermes can now run on a schedule, from routines you write for it yourse
-
- v4.12.02026-10-28 · 2026-10-28 01:17 UTC
查看更新说明
Added
-
An approved release is published. Before, a bot's approved request to publish a release was only recorded. Now wmux carries it out with your gh login after the Undo window. In a repository whose workflows run on a tag push, it pushes the tag at the commit the card showed, and that workflow builds and publishes the release. Elsewhere it makes the release as a draft and then publishes it. Before anything is written, wmux checks that the tag is still free and the commit is on the default branch with its checks green, and, in a project with a package.json, that the version matches the tag. An approval while the checks have not passed is refused, not held: the bot asks again once they pass. Only the card's own Approve button approves a release, on the desktop or the phone. Typed words, "Approve N pending" and "Always allow" never approve one.
-
Codex in the chat-only view. A new chat's composer has an Agent chip: pick Claude Code or Codex before the first message. A Codex chat starts on Codex's own default model and always asks before it runs a command or edits a file; its approvals come to the same cards, and to the phone, as Claude's. Moving the conversation to and from the terminal stays Claude-only. Needs Codex 0.162.1 or later. (#2731)
-
Amp, Droid, Pi, Cursor CLI and DeepSeek Harness are known agents. wmux now recognises them in a pane by their process, so a pane running one is labelled with its name. Once one of Amp, Droid, Pi or Cursor CLI is installed, the first-run "Agent ready" group shows its card too; an agent that is not installed gets no card there. Pi and Cursor CLI resume through their own session pickers. Fan-out lists all five as not yet verified.
-
GitHub Copilot CLI gets a setup card and resume. Once Copilot is installed, the first-run group shows its card with the same checks as the other agents, and a pane that ran Copilot can reopen its session picker (
copilot --resume). -
Custom agents. Settings › Roles & fan-out has a new Custom agents section for agent CLIs wmux does not know yet. Give one a name, a command (a program on PATH or an absolute path) and, if it needs them, arguments, a first prompt flag, a model flag and unattended flags. It can then be picked for a role or a fan-out preset row, and it launches as typed. wmux does not read its screen, so it has no status, approval cards or resume, and it is never given unattended or permission flags you did not type. An agent a role or preset still uses cannot be deleted; its row says what uses it.
-
Qwen Code panes show their own status. A pane running Qwen Code was labelled Gemini CLI, because Qwen draws Gemini's input row, and its working, idle and permission states were never read. wmux now recognises Qwen Code by its window title and banner, shows it working while a reply streams and ready once the turn ends, and marks the pane as needing you while a shell or file-write permission prompt waits. English UI; the idle state on Windows is not read yet. (#2740)
-
Pi is recognised on screen. A pane running Pi (
@earendil-works/pi-coding-agent) is now identified from Pi's own window title and labelled as Pi. When Pi asks whether to trust a project folder, the pane shows that it is waiting for you. Before, a Pi pane looked like a plain shell and that question went unnoticed. (#2745) -
Custom agents are named on their pane. A pane running one of your custom agents now shows that agent's name. wmux recognises it by its process: the Command's own name, or the process names you list in the new Process names field. It is a label only; the agent still gets no status, approval cards or resume. (#2751)
-
Self-host wmux for a team.
deploy/docker/now holds a container image for one person's headless wmux. It comes with a compose example that gives each person their own isolated instance behind Traefik, plus company sign-i
-
- v4.11.02026-10-26 · 2026-10-26 01:22 UTC
查看更新说明
Added
-
Pasting an invite says what comes next. After a PC joins another with its invite (Remote › Connect a PC › Paste an invite), the dialog now says that the other PC chooses which panes it shows this one, or shares one from a pane's menu. Before, it stopped at "Paired with …" and left the person to find out why there was nothing to link. (#2678)
-
Chat view asks once whether to show an agent as a chat. The first time Claude or Codex runs in a pane, a small card asks "Show this as a chat?" (Show / Keep terminal). The answer is remembered for each agent. Before, the chat view had to be found in Settings. Anyone who already set the chat view option is never asked, and Settings can still change it. (#2680)
-
Each chat view says which chat it is. A small label reads "Terminal-linked chat" or "Chat only", and hovering it explains the difference. Before, the two looked alike. (#2680)
-
A new agent pane from the phone can start in bypass or YOLO mode.
POST /api/sessions {agentLaunch}now accepts themodeandconfirmthatchat/launchtakes, under the same rules: the agent's own mode only, the transcript grant, thewmux web --allow-dangerous-launchceiling and the exact<agent>:<mode>confirm, with the same 403 and 428 refusals./api/configlists the allowed modes asagentLaunchModes. The mode applies to that start only: a recovered pane comes back in the default mode, and the desktop shows the same notice a dangerous chat launch raises. Before this, the mode could be chosen only when launching into an existing pane. -
wmux now says when an agent is signed out. When Claude Code or Codex loses its sign-in, wmux shows one notice for that agent and account, with a Sign in again button that opens the agent's own sign-in. The workspace's row reads "Signed out" until the account works again. This happens when a turn fails on sign-in or when an agent starts on a signed-out account. Before, a run in that state failed with a generic error or waited on the agent's sign-in screen. (#2686)
-
Continue a terminal Claude in chat. On macOS and Linux, a Claude Code conversation in a terminal pane can now move into the chat view and continue there under the same session id. Before, a conversation could only move from chat to the terminal. wmux first checks that Claude is idle: no turn running, nothing waiting for approval, and no dialog or draft on screen. A confirmation then lists the processes Claude started that stop with it. wmux stops Claude and makes sure it has exited before the chat resumes the conversation, so the two are never running it at the same time. If the move fails after Claude was stopped, the terminal's Resume reopens the conversation. A chat that was moved to the terminal can come back the same way. (#2688)
-
Drop a file or paste an image into another PC's pane. On a pane attached from another PC, a dropped file or a pasted image is uploaded to that PC and its path there is typed into the pane, ready to send. That PC must have Photo & file upload turned on; files other than JPEG and PNG need it to run this version too. When something stops the send (uploads off, a prompt waiting on the pane, a file over 10 MB, a full upload folder), a notice says why and nothing is typed. (#2689)
-
Continue a usage-limited conversation on another PC. The usage-limit card now lists the paired PCs that let this one start an agent there. Choosing one opens the "Start an agent…" dialog with a note about the work as the first prompt, replies going to the held pane, and a wait that ends before the limit resets (four hours at most). Quoted parts of the note are fenced and marked as reference only. The note never carries the transcript or local user and machine names: in quoted text the folder, home folders,
file:URLs and network paths are replaced, and its file lists leave out paths outside the
-
用户点评
登录用户的真实使用记录,可按版本和硬件筛选还没有人点评。第一个说出真实体验的人最有价值。
wmux
The ADE for AI agents.
Automate everything else. Do your true work.
Run fleets of AI agents — Claude Code, Codex, Gemini, or any CLI — side by side, native on Windows and macOS. Keep only the hunks you want from their work, and hand jobs to bots in plain words.
Download · Website · Docs · iOS app
Run tasks in parallel → answer the one that asks → review and adopt. Recorded on wmux 4.6.1 with real Claude Code on a sample repo; waits are cut and the rest is sped up.
wmux is a desktop app where your AI agents work side by side, each in its own pane, while a background daemon on your own machine keeps every session alive. What sets it apart:
- Keep only the hunks you want. Tick hunks across every task's diff and apply the selection to your working tree in one step. You review and commit; nothing lands on its own.
- Bots you hand jobs in chat. Name a bot and tell it what to do in plain words. It starts Claude Code workers on their own branches, runs the tests and reports back. Anything public, like merging a PR, waits for your approval.
- Native on Windows and macOS. MIT. ConPTY-native on Windows 10 and 11 with no WSL, and native on Apple Silicon Macs. Claude Code, Codex, Gemini, agy (Antigravity) and any other CLI agent run side by side in real PTYs.
- No agent launches another behind your back. When an agent asks wmux to start another agent with permissions bypassed, wmux asks you first. A request nobody answers is declined after 30 seconds, unless you turn on auto-approve.
Install
Windows — a package manager skips the SmartScreen prompt:
winget install openwong2kim.wmux # or: choco install wmux
Offline? Download Setup.exe. It is signed with a SignPath test certificate for now, so SmartScreen shows an unknown publisher (why?).
macOS (Apple Silicon, macOS 13 Ventura or later) — download the .dmg and drag wmux to Applications. It is Developer ID signed and notarized; on first launch the wmux CLI installs itself onto your PATH.
iPhone — wmux for iOS on the App Store (free). In wmux, open Remote on the rail, choose Share & pair, turn on HTTPS over Tailscale, and scan the QR code with the app.
Linux — experimental AppImage / .deb / .rpm builds are on the releases page.
Windows x64 and macOS arm64 update themselves: wmux checks for a release every 30 minutes and verifies it against a published SHA-256 before installing.
Features
Bots
Name a bot and tell it what to do in plain words. It plans the change, starts a Claude Code worker on its own branch, runs the tests and reports back. Anything public, like merging a PR, waits for your approval.
One prompt, N worktrees
Split one prompt into up to 8 tasks with Multi Task — compare approaches to the same problem, or run different jobs side by side. Each task gets its own git worktree on a fresh wtask/* branch with its own agent pane. See fan-out task environments for ports and prepared worktrees.
Review the diffs, tick the hunks you want across files, and adopt them as one all-or-nothing git apply — your tree takes the whole selection or stays untouched. Then close the task (the worktree is removed only after a clean check) or open a pull request.
Answer from your phone
When an agent stops to ask you something — a Claude Code question (single or multi-select, several questions, or an "Other" answer) or a permission prompt — it shows under Needs attention in Fleet on your iPhone. Answer it there and the pane on your desktop moves on. Terminals and agent output travel straight from the daemon on your machine to your phone. A default install does not send push notifications yet, so you see the question when you open the app. When push is configured, notifications pass through the project's relay as sealed envelopes it cannot read; only the lock-screen Live Activity carries a few counts and your computer's name in plain text. Details: the phone client contract.
Git page
Git on the rail shows a repo's issues and pull requests. A pull request lists its checks, and a failed GitHub Actions run shows the end of its log right there, with Rerun failed jobs. Read the diff, comment on a line, approve or request changes, and squash and merge — every action is tied to the commit you were looking at. To hand an issue or PR to an agent, drag its row onto the agent's pane or a workspace in the sidebar; the agent gets a short reference with the link, never the item's text. Signed out? Connect GitHub from the page itself; gh keeps the credential.
Fleet
Fleet (⌘⇧A on macOS, Ctrl+Shift+A on Windows and Linux) lists every agent across every workspace as one attention list: Needs you on top, then Ready to review, Running, and a folded Idle row. A row that needs you shows the agent's question; open it to reply, open the approval, or jump to the pane. Running rows say what the agent is doing (Running npm test), and finished rows say what it did last.
Two ways to browse
Your agents drive a browser through wmux's MCP tools — navigate, click, type, snapshot, screenshot, a stateful browser_repl, and browser_replay for recorded flows — and you watch every page they touch. Pick the backend in Settings → Browser.
Built-in browser panes. A browser pane opens as a split beside the agent, and each agent gets its own.
A dedicated Chrome over CDP. Agents drive a real Chrome, each in its own tab, with a persistent profile separate from your daily browser — sign in once and the logins stick. See browser backends for what CDP can and cannot do.
Claude Code and Codex, talking
Agents in different panes message each other through wmux, whichever CLI they run. Here Claude Code changes a function and asks the Codex pane next to it for a review with send_message; Codex replies the same way with a missing test case, and Claude adds it.
Survives quit, crash, and reboot
A standalone daemon owns every terminal, so quitting the app leaves your sessions running — processes and all.
After a crash or a reboot, a recovered pane offers Resume: it types the agent command back in, with the exact conversation when wmux knows which one the pane held. Panes declared in wmux.json with a restart policy are supervised and restarted automatically.
Usage limits and accounts
When Claude Code or Codex hits its usage limit, the pane pauses: its header and its Fleet row say when the limit resets, and wmux holds scheduled prompts and agent messages for that pane instead of typing them into a turn that cannot run. Turn on Resume at reset for a pane (or "Continue after a usage limit resets" in Settings, off by default) and it continues by itself when the window resets. With several of your own Claude or Codex subscriptions registered, Switch Claude accounts by quota and Switch Codex accounts by quota in Settings → Accounts (both off by default) start a new pane on the account with the most quota left when the workspace's own account is out of quota. Settings → Token usage shows each provider's usage windows.
More
| Area | What you get |
|---|---|
| Agents | Claude Code and Codex CLI get the full set: status, chat view, approvals from your phone and resume. OpenCode and OpenClaude report status through their hooks, and so do Kiro CLI and GitHub Copilot CLI after a one-time setup (wmux setup-hooks --agent copilot). agy's status is read from its screen. Gemini CLI, Aider and Grok start from the pickers, but their status detection is not verified yet. Any other CLI runs in a pane too. |
| MCP tools | Browser, terminal, pane, channel, A2A and fan-out tools register themselves; the full profile has all of them, the slimmer core and commander profiles leave out the browser tools — inventory. |
| CLI & API | Script the wmux CLI or the token-authenticated socket — connect to wmux, react to events. |
| Delegation | Hand work to an agent in another pane and know whether it arrived — delegate to agents. |
| Schedules | Queue an exact prompt for one agent session; it waits until the session is idle — prompt schedules. |
| Remote | wmux web serves your panes to a browser, read-only and loopback-only by default; attach another machine's workspaces — remote workspaces. |
| Browser flows | Record a web flow once and replay it — replay browser flows. |
| Workspaces | Per-workspace environment and startup command, e.g. for separate accounts — workspace profiles. |
| Recovery | Daemon restarts and WSL sessions — daemon restart, WSL recovery. |
| Performance | What runs while a pane is hidden, and wmux doctor — performance. |
| Look & language | Light and dark UI themes, terminal palettes, 23 locales — translations welcome. |
| Security | Token-authenticated IPC, PTY input sanitization, approval gates for cross-agent execution — security. |
| Key | Action | Key | Action |
|---|---|---|---|
Ctrl+D | Split right | Ctrl+Shift+D | Split down |
Ctrl+T / Ctrl+W | New / close tab | Ctrl+N | New workspace |
Ctrl+1~8 | Switch workspace | Ctrl+9 | Last workspace |
Ctrl+Shift+A | Fleet | Ctrl+Shift+L | Open browser |
Ctrl+K | Command palette | Ctrl+, | Settings |
Ctrl+F | Search | Ctrl+I | Notifications |
Ctrl+Shift+X | Vi copy mode | Ctrl+` | Floating pane |
Ctrl+B → key | Prefix mode | Ctrl+Shift+B | Toggle sidebar |
On macOS, app shortcuts use ⌘ instead of Ctrl (a few bindings, such as prefix mode, Ctrl+Shift+B and Ctrl+M, keep literal Ctrl), so Ctrl+C, Ctrl+D and friends pass through to the shell. Every shortcut can be changed in Settings.
- Is wmux a tmux port? No — tmux was the inspiration, not the base. wmux is a native app on Electron (ConPTY on Windows, forkpty on macOS) with tmux-style split panes, prefix keys and session persistence, plus agents, git worktrees and a browser. No WSL / Cygwin / MSYS2.
- Which Macs are supported? Apple Silicon (arm64) on macOS 13 (Ventura) or later. From 4.14 on, a Mac on macOS 12 is not offered updates and keeps the version it has. wmux 4.13 and earlier do not check, so on macOS 12 turn off automatic updates in wmux (or update macOS) before 4.14 arrives. The
.dmgis Developer ID signed, notarized and stapled. Intel builds aren't produced right now; open an issue if you need one. - Can I reach my panes without the iPhone app? Yes:
wmux webserves your live panes to any browser. It is read-only and loopback-only by default; input and network exposure are explicit opt-ins. Even read-only shows a pane's full scrollback to whoever can reach the port, so do not publish it to the open internet. See remote workspaces and the phone client contract. - Feels heavy, or a workspace switch is slow? See docs/performance.md.
- "Windows protected your PC" warning? The release pipeline signs
Setup.exethrough SignPath, but with a test certificate while the SignPath Foundation OSS certificate is pending — Windows does not trust it, so SmartScreen still reports an unknown publisher. Click More info → Run anyway, or install via winget / Chocolatey to skip the prompt. - Installing or updating by hand with Setup.exe? First shut wmux down completely: right-click the tray icon → Shut down wmux (close all sessions). Plain Quit keeps the session daemon running, and Setup.exe cannot replace a running wmux: it fails with "Failed to remove existing directory". If that already happened, wait a few seconds for wmux to exit, then run Setup.exe again. The in-app updater handles all of this for you.
- Installer blocked with no "Run anyway"? Smart App Control (SAC) on Windows 11 can block unsigned binaries outright. Check with
Get-MpComputerStatus | Select-Object SmartAppControlState. SAC uses cloud reputation, so blocks are often transient — retry later, use winget/choco, or build from source (#200).
PowerShell one-liner (downloads the prebuilt Setup.exe, verifies SHA-256, no build tools):
irm https://raw.githubusercontent.com/openwong2kim/wmux/main/install.ps1 | iex
Build from source
git clone https://github.com/openwong2kim/wmux.git
cd wmux
npm install
npm start # dev mode
npm run make # build installer
Requires Node 18+ and Python 3.x, plus a native toolchain: VS Build Tools (C++ workload) on Windows — WMUX_FROM_SOURCE=1 irm …/install.ps1 | iex auto-installs them — or the Xcode Command Line Tools on macOS (xcode-select --install).
Contributors
wmux is built in the open. Thanks to everyone who has shipped code, squashed bugs, and translated locales:
Community shout-outs to @snowyukitty, @matdac6, @margvez, @zer0ken, @AnandSundar, @cloim, @cheyras, @junbeom09, @rayss868, @dev-minggyu, and @alphabeen.
New here? Grab a good first issue, help translate a locale, or read CONTRIBUTING.md. PRs welcome. Built on xterm.js, node-pty, Electron, and Playwright.
wmux runs the agent CLIs you install and sign in to yourself. You are responsible for complying with your AI provider's Terms of Service.
License
The source code is MIT. The Mochi crew bot characters are not: they are all rights reserved, see ASSETS-LICENSE.md.
Keywords: ADE · agent development environment · AI agent automation · workspace multiplexer · AI coding agent workspace · agent fleet · multi-agent terminal · git worktree fan-out · Claude Code · Codex CLI · Gemini CLI · iOS approval app · MCP server · Chrome DevTools Protocol · browser automation · split terminal · Windows terminal multiplexer · macOS terminal multiplexer · ConPTY · xterm.js · Electron terminal · tmux for Windows