macOS에서 AI 에이전트를 다중 실행할 때 사용하는 cmux처럼, Windows에서도 같은 환경이 필요한 순간이 있습니다. WSL 없이 네이티브 Windows 환경에서 Claude Code, Codex CLI, Gemini CLI를 한 화면에 나란히 두고 싶다면 wmux가 그 해답입니다.
Sources
wmux가 나온 이유
macOS에는 cmux가 있습니다. tmux 기반으로 여러 AI 에이전트를 하나의 화면에서 관리할 수 있는 터미널 멀티플렉서입니다. 그런데 Windows에는 tmux가 없습니다. WSL을 쓰지 않는 이상 동등한 환경을 구성할 방법이 없었습니다.
wmux는 이 공백을 메웁니다. Electron 41 + TypeScript로 작성된 네이티브 Windows 앱으로, 터미널 분할·브라우저 자동화·MCP 서버를 하나에 묶었습니다.
Claude Code가 왼쪽에서 백엔드를 작성하는 동안
Codex가 오른쪽에서 프런트엔드를 구성하고
Gemini CLI가 하단에서 테스트를 실행합니다
— 동시에, 한 화면에서
flowchart TD
A["wmux
Windows AI 에이전트 터미널"]
B1["Claude Code
백엔드 작업"]
B2["Codex CLI
프런트엔드 작업"]
B3["Gemini CLI
테스트 실행"]
C["ConPTY
네이티브 Windows 터미널"]
D["CDP 브라우저 자동화"]
E["MCP 서버 자동 등록"]
A --> B1
A --> B2
A --> B3
A --> C
A --> D
A --> E
classDef agent fill:#c5dcef,color:#333
classDef core fill:#fde8c0,color:#333
classDef feature fill:#c0ecd3,color:#333
class B1,B2,B3 agent
class A core
class C,D,E feature6가지 핵심 기능
1. AI 에이전트가 직접 브라우저를 제어
wmux에 내장된 브라우저는 Chrome DevTools Protocol(CDP)로 연결됩니다. Claude Code에서 “구글에서 검색해줘"라고 하면 실제로 브라우저가 열리고 검색이 실행됩니다.
사용자: "wmux를 구글에서 검색해줘"
Claude: browser_open → browser_snapshot
→ browser_fill(ref=13, "wmux")
→ browser_press_key("Enter")
→ 실제 구글 검색 완료
React controlled input, CJK 텍스트 입력도 정상 동작합니다.
flowchart TD
A["Claude Code 지시"]
B["MCP Server (stdio)"]
C["PlaywrightEngine
(CDP 연결)"]
D["wmux 내장 브라우저"]
E1["browser_open"]
E2["browser_navigate"]
E3["browser_snapshot"]
E4["browser_fill / browser_type"]
E5["browser_click"]
E6["browser_screenshot"]
E7["browser_evaluate"]
A --> B --> C --> D
C --> E1
C --> E2
C --> E3
C --> E4
C --> E5
C --> E6
C --> E7
classDef input fill:#fde8c0,color:#333
classDef engine fill:#c5dcef,color:#333
classDef tool fill:#c0ecd3,color:#333
class A input
class B,C engine
class D,E1,E2,E3,E4,E5,E6,E7 tool멀티 에이전트 환경에서는 모든 브라우저 툴이 surfaceId를 파라미터로 받습니다. Claude Code 세션마다 독립적인 브라우저 인스턴스를 제어할 수 있습니다.
2. 분할 터미널 (ConPTY 기반)
| 단축키 | 동작 |
|---|---|
Ctrl+D |
오른쪽으로 분할 |
Ctrl+Shift+D |
아래로 분할 |
Ctrl+T |
새 탭 |
Ctrl+N |
새 워크스페이스 |
Ctrl+1~9 |
워크스페이스 전환 |
Ctrl+click |
멀티뷰 추가 |
Ctrl+Shift+G |
멀티뷰 종료 |
xterm.js + WebGL 하드웨어 가속 렌더링을 사용합니다. 스크롤백 버퍼 999K 줄을 디스크에 저장하며, 앱을 재시작해도 터미널 내용이 유지됩니다.
flowchart TD
W["워크스페이스 (Ctrl+N)"]
P1["Pane 1
Claude Code"]
P2["Pane 2
Codex CLI"]
P3["Pane 3
Gemini CLI"]
T1["Tab A"]
T2["Tab B"]
B["Browser Panel
(Ctrl+Shift+L)"]
W --> P1
W --> P2
W --> P3
W --> B
P1 --> T1
P1 --> T2
classDef ws fill:#fde8c0,color:#333
classDef pane fill:#c5dcef,color:#333
classDef tab fill:#c0ecd3,color:#333
classDef browser fill:#e0c8ef,color:#333
class W ws
class P1,P2,P3 pane
class T1,T2 tab
class B browser3. 스마트 알림 — “끝났나요?” 물어볼 필요 없음
wmux는 AI 에이전트 작업이 완료되면 자동으로 알려줍니다. 패턴 매칭이 아니라 출력 처리량 기반 감지로 작동합니다.
- 작업 완료 → 데스크톱 알림 + 태스크바 플래시
- 비정상 종료 → 즉시 경고
git push --force,rm -rf,DROP TABLE→ 위험 명령어 경고
Claude Code, Cursor, Aider, Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI를 자동 감지합니다.
4. MCP 자동 등록
wmux를 시작하면 MCP 서버가 ~/.claude.json에 자동으로 등록됩니다. Claude Code를 열면 브라우저·터미널 제어 툴이 즉시 사용 가능합니다.
| MCP 툴 | 동작 |
|---|---|
browser_open |
브라우저 열기 |
browser_navigate |
URL 이동 |
browser_screenshot |
스크린샷 |
browser_snapshot |
페이지 구조 읽기 |
browser_click |
요소 클릭 |
browser_fill / browser_type |
폼 입력 |
browser_evaluate |
JS 실행 |
browser_press_key |
키 입력 |
terminal_read |
터미널 읽기 |
terminal_send |
명령 전송 |
workspace_list / surface_list / pane_list |
워크스페이스 관리 |
5. 세션 지속성
앱을 재시작하거나 재부팅해도 세션이 살아있습니다.
flowchart TD
A["wmux 종료"]
B["Daemon 프로세스
(백그라운드 유지)"]
C1["PTY 프로세스
계속 실행"]
C2["스크롤백 버퍼
디스크 저장"]
C3["작업 디렉토리
저장"]
D["wmux 재시작"]
E["세션 즉시 복구
스크롤백 + cwd 복원"]
F["재부팅 후에도 복구
(Windows 시작 프로그램 등록)"]
A --> B
B --> C1
B --> C2
B --> C3
D --> E
F --> E
classDef off fill:#ffc8c4,color:#333
classDef daemon fill:#fde8c0,color:#333
classDef data fill:#c5dcef,color:#333
classDef on fill:#c0ecd3,color:#333
class A off
class B daemon
class C1,C2,C3 data
class D,E,F on데몬 프로세스가 wmux 종료 후에도 PTY 프로세스를 유지합니다. 재접속 시 즉시 연결됩니다. 데드 세션은 24시간 TTL 후 자동 정리됩니다.
6. 보안
- Named Pipe IPC에 토큰 인증 적용
- SSRF 방어 — 사설 IP,
file://,javascript:스킴 차단 - PTY 입력 새니타이징 — 명령 인젝션 방지
- CDP 포트 랜덤화 — 고정 디버그 포트 없음
- 메모리 압력 감시 — 750MB에서 데드 세션 정리, 1GB에서 신규 세션 차단
- Electron Fuses — RunAsNode 비활성화, 쿠키 암호화 활성화
아키텍처
wmux는 세 개의 프로세스로 구성됩니다.
flowchart TD
subgraph "Electron Main Process"
M1["PTYManager
(ConPTY)"]
M2["PTYBridge
(데이터 포워딩 + ActivityMonitor)"]
M3["AgentDetector"]
M4["SessionManager"]
M5["ScrollbackPersistence"]
M6["PipeServer
(Named Pipe JSON-RPC)"]
M7["McpRegistrar
(~/.claude.json 자동 등록)"]
M8["WebviewCdpManager"]
M9["AutoUpdater"]
M10["ToastManager"]
end
subgraph "Renderer Process"
R1["PaneContainer
(재귀 분할 레이아웃)"]
R2["Terminal
(xterm.js + WebGL)"]
R3["BrowserPanel
(webview + Inspector + CDP)"]
R4["NotificationPanel"]
R5["SettingsPanel"]
R6["Multiview Grid"]
end
subgraph "Daemon Process"
D1["DaemonSessionManager
(ConPTY 라이프사이클)"]
D2["RingBuffer
(순환 스크롤백 버퍼)"]
D3["StateWriter
(세션 suspend/resume)"]
D4["ProcessMonitor"]
D5["Watchdog
(메모리 압력)"]
D6["DaemonPipeServer"]
end
subgraph "MCP Server"
P1["PlaywrightEngine
(CDP 연결)"]
P2["CDP RPC Fallback"]
P3["Named Pipe RPC Bridge"]
end
classDef main fill:#c5dcef,color:#333
classDef render fill:#fde8c0,color:#333
classDef daemon fill:#c0ecd3,color:#333
classDef mcp fill:#e0c8ef,color:#333
class M1,M2,M3,M4,M5,M6,M7,M8,M9,M10 main
class R1,R2,R3,R4,R5,R6 render
class D1,D2,D3,D4,D5,D6 daemon
class P1,P2,P3 mcp설치
인스톨러 다운로드:
GitHub Releases에서 wmux Setup.exe를 내려받아 실행합니다.
PowerShell 원라이너:
irm https://raw.githubusercontent.com/openwong2kim/wmux/main/install.ps1 | iex
Python 3.x, Visual Studio Build Tools(C++ 워크로드)가 없으면 스크립트가 자동으로 설치합니다.
cmux와 비교
flowchart TD
subgraph "macOS — cmux"
MC["cmux
tmux 기반 멀티플렉서"]
MC1["터미널 분할"]
MC2["AI 에이전트 관리"]
MC --> MC1
MC --> MC2
end
subgraph "Windows — wmux"
MW["wmux
Electron + ConPTY"]
MW1["터미널 분할
ConPTY 네이티브"]
MW2["AI 에이전트 관리"]
MW3["CDP 브라우저 자동화
(cmux에 없는 기능)"]
MW4["MCP 자동 등록
(cmux에 없는 기능)"]
MW5["세션 지속성
(재부팅 복구)"]
MW --> MW1
MW --> MW2
MW --> MW3
MW --> MW4
MW --> MW5
end
classDef mac fill:#fde8c0,color:#333
classDef win fill:#c5dcef,color:#333
classDef extra fill:#c0ecd3,color:#333
class MC,MC1,MC2 mac
class MW,MW1,MW2,MW5 win
class MW3,MW4 extrawmux는 cmux에서 영감을 받았지만, CDP 브라우저 자동화와 MCP 자동 등록은 wmux가 추가한 기능입니다.
핵심 요약
| 항목 | 내용 |
|---|---|
| 플랫폼 | Windows 10 / 11 |
| 기반 기술 | Electron 41 · TypeScript 95% · ConPTY |
| 터미널 | xterm.js + WebGL · 분할 · 999K 스크롤백 |
| 브라우저 자동화 | 내장 CDP · 클릭·입력·스크린샷·JS 실행 |
| MCP 통합 | 실행 시 ~/.claude.json 자동 등록 |
| 세션 지속성 | 앱 재시작·재부팅 후에도 세션 복구 |
| 보안 | 토큰 인증 · SSRF 방어 · 메모리 워치독 |
| 알림 | 작업 완료 알림 · 위험 명령어 경고 |
| 지원 에이전트 | Claude Code · Codex · Gemini · Aider · Cursor 등 |
| 라이선스 | MIT |
| 설치 | 인스톨러 또는 PowerShell 원라이너 |
결론
Windows에서 AI 에이전트 개발 환경을 구성할 때 터미널 분할, 브라우저 제어, MCP 연동을 따로 설정하는 번거로움이 있었습니다. wmux는 이 세 가지를 하나로 묶어 macOS의 cmux와 동등한, 혹은 그 이상의 환경을 Windows에서 제공합니다.
Claude Code를 Windows에서 본격적으로 쓰고 싶다면 wmux를 먼저 설치하고 시작하는 게 가장 빠른 출발점입니다.