Show HN: Wmux – A workspace multiplexer for AI agents
Wmux is a workspace multiplexer that lets you run multiple AI coding agents (Claude Code, Codex, Gemini) in parallel within a single window. It features git worktree integration, agent-to-agent communication, built-in browser control, and survives crashes and reboots. The tool is natively available on Windows and macOS.
Notifications You must be signed in to change notification settings
Fork 49
Star 275
BranchesTags
Open more actions menu
Folders and files
NameName
Last commit message
Last commit date
Latest commit
History
960 Commits
960 Commits
.claude-plugin
.claude-plugin
.github
.github
assets
assets
bench
bench
build
build
chocolatey
chocolatey
core
core
designs
designs
docs
docs
examples
examples
integrations
integrations
plans
plans
relay
relay
rig
rig
scripts
scripts
src
src
.eslintrc.json
.eslintrc.json
.gitignore
.gitignore
ARCHITECTURE.md
ARCHITECTURE.md
CHANGELOG.md
CHANGELOG.md
CLAUDE.md
CLAUDE.md
CONTRIBUTING.md
CONTRIBUTING.md
DESIGN.md
DESIGN.md
LICENSE
LICENSE
README.md
README.md
THIRD_PARTY_NOTICES
THIRD_PARTY_NOTICES
TODOS.md
TODOS.md
decisions.md
decisions.md
forge.config.ts
forge.config.ts
forge.env.d.ts
forge.env.d.ts
handoff.md
handoff.md
index.html
index.html
install.ps1
install.ps1
package-lock.json
package-lock.json
package.json
package.json
postcss.config.js
postcss.config.js
progress.md
progress.md
tailwind.config.js
tailwind.config.js
tsconfig.cli.json
tsconfig.cli.json
tsconfig.daemon.json
tsconfig.daemon.json
tsconfig.harness.json
tsconfig.harness.json
tsconfig.json
tsconfig.json
tsconfig.mcp.json
tsconfig.mcp.json
tsconfig.rig.json
tsconfig.rig.json
vite.main.config.ts
vite.main.config.ts
vite.preload.config.ts
vite.preload.config.ts
vite.renderer.config.ts
vite.renderer.config.ts
vitest.config.ts
vitest.config.ts
vitest.harness.config.ts
vitest.harness.config.ts
vitest.rig.config.ts
vitest.rig.config.ts
vitest.runtime.config.ts
vitest.runtime.config.ts
Repository files navigation
The workspace multiplexer for AI coding agents.
Run fleets of Claude Code, Codex & Gemini in parallel — each agent in its own pane, or fan one prompt out into N isolated git worktrees you review hunk by hunk. Native on Windows & macOS, with approval gates, agent-to-agent channels, and a real browser your agents drive. Walk away — after a crash or full OS reboot, they come back mid-conversation.
What's a workspace multiplexer? tmux splits a terminal. wmux multiplexes whole workspaces — terminals, agents, git worktrees, a browser, and the channels they coordinate over — all owned by a daemon that keeps them running across quits, crashes, and full reboots. One window. One fleet. Windows & macOS.
📸 See it in action
A fleet in one window. Two Claude Code agents, an OpenAI Codex pane, and a test run — split into a grid, each pane its own PTY, with the roster and the orchestrator in the side dock.
Orchestrate real agents, not just chat. The orchestrator picks an idle pane, hands it the task, and relays the answer back — while the Git dock and the diff stay open next to it.
Git in the dock. Pull requests, worktrees, and a live diff for the repo behind your active pane — create a worktree, open it as a workspace, or one-click a PR.
Workspace diff. "Show Git Diff" opens every staged, unstaged, and untracked change against HEAD — read-only, no IDE creep. Non-git panes get a polite toast.
Ask about a hunk. From any diff hunk, ask the orchestrator with the repo, file, and code fenced into the message — question and evidence together.
One-click loops. Point the orchestrator at an objective — with optional per-iteration steps from your .claude skills and a done-when checklist — and it keeps working, event-woken by your agents and surviving restarts. It tells you up front what it may and may not do.
Channels. Slack-style rooms your agents read, post, and get @-mentioned into — durable, server-verified sender, survives reboot.
Survives reboot. After a quit, crash, or full OS reboot, a recovered pane offers a one-click Resume — straight back to the exact agent conversation, with the shell that was running still running.
⚡ Install in 30 seconds
Windows — use a package manager (avoids the SmartScreen warning):
winget install openwong2kim.wmux
or choco install wmux · download Setup.exe for offline install — the installer is signed with a SignPath test certificate for now, so SmartScreen still shows an unknown publisher; winget/choco skip the prompt (why?)
macOS (Apple Silicon)
Download the .dmg — Developer ID signed, notarized and stapled, so it opens without a Gatekeeper detour — and drag wmux to Applications. On first launch the wmux CLI installs itself onto your PATH.
Both platforms update themselves in place: wmux checks for a new release every 30 minutes and verifies the download against a published SHA-256 before installing (Windows x64 and macOS arm64).
Linux — experimental AppImage / .deb / .rpm builds are on the releases page.
Prefer a tour first? wmux.app walks through the same features with screenshots.
🤔 Why wmux?
🧵 One prompt → N agents → merge the best Fan out a prompt into up to 8 tasks, each in an isolated git worktree with its own agent pane and a private mission channel. Review each task's diff side by side, adopt hunks all-or-nothing, then close it or open a PR in one click — leftovers land in a cleanup list, never as mystery folders.
🌿 Git & GitHub live in the dock A Git tab shows the worktrees of the repo behind your active pane — create, open as a workspace, or remove — plus its pull requests and comments (GitHub via gh, GitLab via glab, including self-hosted). A read-only workspace diff is one palette command away, and from any hunk you can ask the orchestrator with the code attached. No alt-tabbing to the browser to see if review feedback landed.
🪟 Many agents, one window Split panes + workspaces. Claude on the left, Codex on the right, Gemini running tests below — simultaneously.
🤝 Agents coordinate, not just coexist Agent-to-agent messaging + task delegation, plus channels — Slack-style rooms several agents read, post, and get @-mentioned into. An execute approval gate stops any agent running code in your workspace without your OK. This is the multi-agent moat.
🌐 Agents drive a real browser Built-in Chrome over CDP. Say "search Google for this" and your agent actually clicks, types, and screenshots. Works with React inputs and CJK text.
🧭 Fleet View cockpit Ctrl+Shift+A — every agent across every workspace in an always-on side panel (other panes stay live), blocked ones floated to the top with a live activity line. Clear every stuck approval from one inbox; click any card to jump straight there.
🔔 Knows when an agent finishes Desktop notification + taskbar flash on completion. Flags rm -rf, git push --force, DROP TABLE for your approval.
💾 Survives quit, crash & reboot A tmux-style daemon owns every PTY. Reopen and your sessions are still running — processes and all. A pane declared in wmux.json is supervised like an init system — auto-restarted across crashes and reboots (the app relaunches at login), resuming the exact Claude conversation it was on.
🤖 Zero-config MCP Launch wmux and Claude Code just works — 84 tools (browser, terminal, panes, channels, A2A) register themselves, scoped to the workspace that called them.
✨ Highlights
🧵 Task fan-out & harvest — one prompt → N worktree-isolated tasks (idempotent, per-task compensation) · side-by-side diff with hunk adoption (all-or-nothing git apply) · close / one-click PR / cleanup list · mission channels record every decision
🌿 Git surface — a Git tab in the dock: worktrees (create / open-as-workspace / remove, no force-delete) + pull requests & comments for the active repo (GitHub via gh, GitLab via glab, self-hosted included) · read-only workspace diff from the palette · ask the orchestrator about a hunk with the code attached
🔁 One-click loops — put the orchestrator on an objective with optional per-iteration steps (a /-picker autocompletes your .claude skills), a done-when checklist, and a cadence; it keeps working across restarts, event-woken by your agents, and stopping fails closed to report-only
🤝 A2A multi-agent — agents message + delegate tasks by pane, gated by a per-pane execute approval, with a pollable task inbox + symmetric reply
💬 Channels — Slack-style rooms agents read, post, and get @-mentioned into · server-verified sender · durable per-agent inbox · wmux channel CLI · operators can self-join private agent rooms (audited)
🤖 Agent supervision — declare a pane in wmux.json (trust-gated) and the daemon keeps it alive: restart policy, backoff, reboot survival
🖥️ Native PTY (ConPTY on Windows, forkpty on macOS) + xterm.js WebGL rendering · 999K-line scrollback · Unicode 11 (correct CJK / emoji)
⌨️ Tmux-style prefix (Ctrl+B + key, 13 actions) · floating pane (Ctrl+`) · scroll bookmarks
🔀 Multiview — several workspaces side by side · layout templates · drag-to-reorder sidebar
🧩 Plugin host — sandboxed iframe plugins with an explicit permission model
🛡️ Token-authed IPC, SSRF guard, PTY input sanitization, randomized CDP port, Electron Fuses
📱 wmux web — your live panes in a phone browser (PWA-installable), read-only and loopback-only by default; input and network exposure are explicit, warned-about opt-ins
⬆️ In-app auto-update on Windows and macOS (arm64) — checked every 30 minutes, SHA-256 verified against a published manifest before it installs
🎨 10 UI themes (Amber by default · Catppuccin · Nightowl · Monochrome · Void · Hinomaru · Taegeuk · Stars & Stripes · Red Dynasty · Custom) and 10 terminal palettes, light ones included · 🌏 23 locales scaffolded — English & 한국어 complete, 日本語 / 中文 in progress — translations welcome
💡 Tip: point Claude Code at the MCP tools (browser_open, terminal_read, pane_list, a2a_task_send, channel_post) or script the wmux CLI (wmux send / read-screen / list-panes / wmux channel post) to orchestrate panes programmatically.
⌨️ Keyboard shortcuts
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~9 Switch workspace Ctrl+click Add to multiview
Ctrl+Shift+A Fleet View Ctrl+Shift+L Open browser
Ctrl+B → key Prefix mode (13 actions) Ctrl+` Floating pane
Ctrl+K Command palette Ctrl+I Notifications
Ctrl+F Search (regex) Ctrl+M Scroll bookmark
Ctrl+Shift+X Vi copy mode Ctrl+, Settings
Right-click Smart copy / paste / link menu F12 Browser DevTools
On macOS, app shortcuts live on ⌘ instead of Ctrl (so Ctrl+C, Ctrl+D, and friends pass through to the shell as you'd expect).
📦 Full feature list
Terminal — xterm.js + WebGL, native PTY (ConPTY on Windows, forkpty on macOS), Unicode 11 width tables, split panes, tabs, floating pane, smart right-click (selection→copy / empty→paste / link menu), scroll bookmarks, Vi copy mode, regex search, 999K scrollback with disk persistence, shell integration (OSC 133) for semantic command boundaries (Constrained Language Mode safe).
Keybindings — Tmux-style prefix mode (Ctrl+B, 13 default actions), fully customizable, reset-to-defaults.
Workspaces — drag-and-drop sidebar, Ctrl+1~9 quick switch, multiview, layout templates, full session persistence (layout / tabs / cwd / scrollback), Fleet View cockpit.
Browser + CDP — built-in panel (Ctrl+Shift+L), nav bar / DevTools / back-forward, element Inspector (hover-highlight, click-to-copy LLM context), full automation: click / fill / type / screenshot / JS eval / key press.
Notifications — output-throughput activity detection (not pattern matching, works with any agent), native OS toasts + taskbar flash (Windows) / Dock & menu-bar tray (macOS), process-exit alerts, notification panel (Ctrl+I), Web Audio cues.
Agent detection — Claude Code, Codex CLI, Gemini CLI, Aider, OpenCode, GitHub Copilot CLI.
[truncated for AI cost control]