wmux(Windows Terminal Multiplexer)는 인공지능 코딩 에이전트 실행에 최적화된 Windows 전용 네이티브 터미널 멀티플렉서이다. WSL(Windows Subsystem for Linux)이나 Cygwin 없이도 tmux 스타일의 분할 창, 세션 지속성, 내장 브라우저 자동화, MCP(Model Context Protocol) 서버 기능을 제공한다. ConPTYElectron을 기반으로 구축되었으며, Claude Code, Codex CLI, Gemini CLI 등의 AI 코딩 에이전트와 함께 사용하도록 설계되었다.[1][2]

wmux
개발자 openwong2kim
언어 영어, 한국어, 일본어, 중국어
종류 터미널 멀티플렉서
라이선스 MIT
웹사이트 wmux.app

배경

Unix 계열 운영 체제에서는 tmuxGNU Screen 같은 터미널 멀티플렉서가 오래전부터 존재하여 개발자들이 하나의 터미널 창에서 여러 세션을 관리할 수 있었다. 그러나 Windows에는 이에 해당하는 네이티브 도구가 없었다. WSL(Windows Subsystem for Linux)을 통해 tmux를 실행하는 방법이 존재하지만, WSL 환경은 네이티브 Windows 프로세스와 완전히 통합되지 않으며 추가적인 설정 부담이 따른다.

2020년대 들어 대형 언어 모델(LLM) 기반 AI 코딩 에이전트(Claude Code, Codex CLI, Gemini CLI 등)가 급속히 보급되면서, Windows 환경에서 여러 AI 에이전트를 동시에 실행하고 서로 협력시키려는 수요가 생겨났다. wmux는 이 필요를 충족하기 위해 만들어진 도구로, 터미널 멀티플렉싱·브라우저 자동화·에이전트 간 통신을 단일 앱에서 제공한다.

개요

wmux는 흔히 "터미널을 위한 LSP"로 비유된다. 언어 서버 프로토콜이 편집기와 언어 분석 도구 사이의 표준 인터페이스를 제공하듯, wmux는 외부 AI 도구가 터미널 세션 위에서 워크플로 인텔리전스를 구축할 수 있는 중립 기반 플랫폼(neutral substrate)으로 기능한다.

핵심 설계 원칙은 다음과 같다.

  • WSL 불필요: ConPTY 기반으로 Windows 커널과 직접 통신하므로 WSL, Cygwin, MSYS2 없이 동작한다.
  • AI 퍼스트: MCP(Model Context Protocol) 서버가 내장되어 AI 에이전트가 터미널과 브라우저를 직접 제어한다.
  • 멀티 에이전트: 동일한 wmux 인스턴스 안에서 여러 AI 에이전트가 독립적으로 동작하고 A2A(Agent-to-Agent) 프로토콜로 서로 메시지를 주고받는다.
  • 세션 불변성: 앱 재시작·시스템 재부팅 후에도 터미널 세션과 스크롤백이 복원된다.

설치

wmux는 여러 방법으로 설치할 수 있으며, 설치 후 30초 안에 사용을 시작할 수 있다고 명시되어 있다.

방법 명령어 / 방법
winget (권장) winget install openwong2kim.wmux
Chocolatey choco install wmux
설치 파일 wmux Setup.exe 다운로드
PowerShell 원라이너 iex

PowerShell 원라이너 방식은 Python과 Visual Studio Build Tools가 없는 환경에서도 이를 자동으로 설치한다.

주요 기능

터미널 멀티플렉싱

wmux는 ConPTY 기반 네이티브 Windows 가상 터미널과 xterm.js + WebGL 하드웨어 가속 렌더링을 사용한다. Unicode 11 너비 테이블을 적용하여 CJK 문자 및 이모지의 커서 위치를 올바르게 처리하며, Claude Code나 Vim 같은 TUI 앱에서도 화면이 깨지지 않는다.

주요 터미널 기능으로는 수평·수직 창 분할(Ctrl+D / Ctrl+Shift+D), 워크스페이스별 여러 탭, Quake 스타일 플로팅 창(Ctrl+`), 999K 줄 스크롤백과 디스크 지속성, tmux 스타일 프리픽스 모드(Ctrl+B 후 단일 키 13종), 스마트 우클릭(선택 → 즉시 복사, 빈 영역 → 즉시 붙여넣기, 링크 → Open/Copy 메뉴), 스크롤 북마크(Ctrl+M 마크, Ctrl+Up/Down 이동), Vi 복사 모드(Ctrl+Shift+X), 정규식 검색(Ctrl+F), OSC 133 셸 통합(pwsh/bash 자동 주입)이 있다.

내장 브라우저 및 CDP 자동화

wmux는 Chrome DevTools Protocol(CDP)을 통해 제어되는 내장 브라우저 패널을 제공한다(Ctrl+Shift+L). 탐색 바, DevTools, 앞/뒤로 이동을 지원하며, Element Inspector를 통해 마우스 오버 시 요소를 하이라이트하고 클릭 시 LLM 친화적 컨텍스트를 복사할 수 있다.

CDP 자동화로 제공되는 작업은 클릭, 폼 입력, 텍스트 타이핑, 스크린샷 촬영, JavaScript 실행, 키 입력이다. React 제어 입력(controlled inputs)과 CJK(한국어·일본어·중국어) 텍스트도 올바르게 처리한다.

MCP 서버 자동 연동

wmux를 실행하면 MCP(Model Context Protocol) 서버가 ~/.claude.json에 자동으로 등록된다. Claude Code는 별도 설정 없이 wmux의 브라우저 및 터미널 기능을 사용할 수 있다.

카테고리 MCP 도구 설명
브라우저 제어 browser_open 브라우저 패널 열기
browser_navigate URL 이동
browser_screenshot 스크린샷 촬영
browser_snapshot 페이지 구조 읽기
browser_click 요소 클릭
browser_fill / browser_type 폼 입력
browser_evaluate JavaScript 실행
browser_press_key 키 입력
터미널 제어 terminal_read 터미널 내용 읽기
terminal_read_events OSC 133 기반 의미적 명령 읽기
terminal_send 명령 전송
워크스페이스 관리 workspace_list 워크스페이스 목록
surface_list 서피스 목록
pane_list 창 목록
A2A 통신 a2a_send / a2a_broadcast 에이전트 간 메시지 송수신
a2a_whoami 자신의 에이전트 ID 확인
a2a_task_send / a2a_task_query / a2a_task_cancel 태스크 위임 및 추적
컴퍼니 모드 company_a2a_send 에이전트 메시지 전송
company_a2a_inbox 수신함 조회
company_a2a_status 상태 조회

각 브라우저 도구는 surfaceId 파라미터를 받아, 여러 Claude Code 세션이 각자 독립된 브라우저를 제어할 수 있다.

멀티 에이전트 워크플로

wmux의 A2A(Agent-to-Agent) 프로토콜은 동일한 wmux 인스턴스 안에서 실행 중인 AI 에이전트들이 서로 메시지를 주고받고 태스크를 위임할 수 있도록 한다. 예를 들어 다음과 같은 분업이 가능하다.

  • 왼쪽 창: Claude Code가 백엔드 API를 작성
  • 오른쪽 창: Codex CLI가 프론트엔드 UI를 구축
  • 아래 창: Gemini CLI가 테스트를 실행하고 결과를 위쪽 에이전트에 A2A로 보고

컴퍼니 모드(Company Mode)는 이보다 구조화된 멀티 에이전트 조율 방식으로, 중앙 조율 에이전트가 작업을 하위 에이전트에게 분배하고 상태를 추적한다.

세션 지속성

wmux는 앱 재시작 및 시스템 재부팅 후에도 터미널 세션을 복원한다. 이를 위해 데몬(daemon) 프로세스가 백그라운드에서 PTY 프로세스를 유지한다.

  • 앱 재시작: 데몬이 PTY 프로세스를 살아 있게 유지하므로 wmux를 닫았다가 다시 열어도 세션이 즉시 재연결된다.
  • 재부팅: 스크롤백 버퍼와 작업 디렉터리가 저장되어 재부팅 후 복구된다. wmux는 Windows 로그인 시 자동 시작된다.
  • 자동 업데이트: GitHub Releases를 통해 업데이트를 자동으로 확인하며, 설정에서 켜고 끌 수 있다.

알림 및 에이전트 감지

wmux는 출력 처리량(throughput) 기반 활동 감지 방식으로 AI 에이전트의 작업 완료 여부를 판단한다. 패턴 매칭 방식이 아니므로 어떤 에이전트와도 호환된다. 자동으로 감지하는 에이전트는 Claude Code, Cursor, Aider, Codex CLI, Gemini CLI, OpenCode, GitHub Copilot CLI이다.

이벤트 발생 시 동작은 다음과 같다.

  • 작업 완료 → 데스크톱 알림(Windows 토스트) + 작업 표시줄 플래시
  • 비정상 종료 → 즉각 경고
  • 위험 명령(git push --force, rm -rf, DROP TABLE 등) → 위험 동작 경고

보안

wmux는 AI 에이전트가 시스템 자원에 접근하는 만큼 여러 보안 계층을 제공한다.

보안 항목 내용
IPC 인증 모든 Named Pipe에 토큰 인증 적용
SSRF 방지 사설 IP 대역, file://, javascript: 스킴 차단
명령 인젝션 방지 PTY 입력 살균(sanitization)
CDP 포트 보안 랜덤화된 포트 사용 (고정 디버그 포트 없음)
메모리 감시 750MB에서 죽은 세션 정리, 1GB에서 신규 세션 차단
Electron Fuses RunAsNode 비활성화, 쿠키 암호화 활성화

사용자 인터페이스

wmux의 UI는 다음 요소로 구성된다.

  • 워크스페이스 사이드바: 드래그 앤 드롭 재정렬, Ctrl+1~9 빠른 전환
  • 멀티뷰(Multiview): Ctrl+클릭으로 여러 워크스페이스를 동시에 표시
  • 레이아웃 템플릿: 현재 창 배치를 저장하고 커맨드 팔레트에서 복원
  • 커맨드 팔레트: Ctrl+K로 모든 기능에 빠르게 접근
  • 알림 패널: Ctrl+I로 에이전트 활동 이력 확인
  • 설정 패널: Ctrl+, 로 자동 업데이트, 워크스페이스 초기화 등 설정

다국어 지원 및 테마

영어, 한국어, 일본어, 중국어를 지원한다. 기본 제공 테마는 Catppuccin Mocha, Monochrome, Sandstone 세 가지이다.

키보드 단축키

단축키 동작
Ctrl+D 오른쪽으로 창 분할
Ctrl+Shift+D 아래로 창 분할
Ctrl+T 새 탭
Ctrl+W 탭 닫기
Ctrl+N 새 워크스페이스
Ctrl+1~9 워크스페이스 전환
Ctrl+클릭 멀티뷰에 추가
Ctrl+Shift+G 멀티뷰 종료
Ctrl+Shift+L 브라우저 패널 열기
Ctrl+B 후 키 tmux 스타일 프리픽스 모드 (13개 동작)
Ctrl+Shift+B 사이드바 토글
Ctrl+` 플로팅 창 토글 (Quake 스타일)
Ctrl+K 커맨드 팔레트
Ctrl+I 알림 패널
Ctrl+, 설정
Ctrl+F 터미널 검색 (정규식 토글 포함)
Ctrl+M 스크롤 북마크 추가
Ctrl+ / 이전/다음 북마크로 이동
Ctrl+Shift+X Vi 복사 모드
우클릭 (선택 시) 즉시 복사
우클릭 (빈 영역) 즉시 붙여넣기
우클릭 (링크) Open / Copy Link 메뉴
F12 브라우저 DevTools

아키텍처

wmux는 네 개의 주요 프로세스로 구성된다.

Electron 메인 프로세스

애플리케이션의 핵심 로직을 담당한다. PTYManager(ConPTY 기반 가상 터미널 관리), PTYBridge(데이터 전달 및 ActivityMonitor), AgentDetector(게이트 기반 에이전트 상태 추적), SessionManager(원자적 저장 및 .bak 복구), ScrollbackPersistence(터미널 버퍼 덤프/로드), PipeServer(Named Pipe JSON-RPC + 토큰 인증), McpRegistrar(~/.claude.json 자동 등록), WebviewCdpManager(CDP 프록시), DaemonClient(데몬 연결), AutoUpdater(GitHub Releases), ToastManager(OS 알림 + 작업 표시줄 플래시)로 구성된다.

렌더러 프로세스

React 19 + Zustand 기반 UI 레이어다. PaneContainer(재귀적 분할 레이아웃), Terminal(xterm.js + WebGL + 스크롤백 복원), BrowserPanel(webview + Inspector + CDP), NotificationPanel, SettingsPanel, Multiview 그리드로 구성된다.

데몬 프로세스

백그라운드에서 독립적으로 실행되어 앱 재시작 후에도 PTY 세션을 유지한다. DaemonSessionManager(ConPTY 라이프사이클), RingBuffer(순환 스크롤백 버퍼), StateWriter(세션 서스펜드/리줌), ProcessMonitor(외부 프로세스 감시), Watchdog(메모리 압력 에스컬레이션), DaemonPipeServer(Named Pipe RPC + 토큰 인증)로 구성된다.

MCP 서버

stdio 기반으로 실행되며 Claude Code와 wmux를 연결하는 브릿지 역할을 한다. PlaywrightEngine(CDP 연결, fast-fail), CDP RPC 폴백(스크린샷, evaluate, type, click), Claude Code ↔ wmux Named Pipe RPC 브릿지로 구성된다.

유사 소프트웨어 비교

소프트웨어 플랫폼 WSL 필요 AI 에이전트 지원 브라우저 자동화 MCP 서버 세션 지속성
wmux Windows 네이티브 불필요 전용 지원 내장 CDP 내장 자동 등록 앱 재시작 + 재부팅
tmux Unix/Linux/macOS - 없음 없음 없음 세션 유지
GNU Screen Unix/Linux/macOS - 없음 없음 없음 세션 유지
Windows 터미널 Windows 네이티브 불필요 없음 없음 없음 없음
tmux (WSL 경유) Windows + WSL 필요 없음 없음 없음 제한적

기술 스택

wmux는 다음 오픈 소스 프로젝트를 핵심 기반으로 사용한다.

구성 요소 기술 역할
터미널 렌더링 xterm.js + WebGL GPU 가속 터미널 출력
가상 터미널 node-pty / ConPTY Windows 네이티브 PTY
데스크톱 프레임워크 Electron 크로스-프로세스 앱 컨테이너
브라우저 자동화 Playwright CDP 엔진
UI 프레임워크 React 19 + Zustand 렌더러 UI 상태 관리
IPC Named Pipe JSON-RPC 프로세스 간 통신
업데이트 GitHub Releases 자동 업데이트 피드

개발

wmux는 MIT 라이선스로 공개된 오픈 소스 소프트웨어로, GitHub에서 소스 코드를 관리한다. 개발 환경은 Node.js 18 이상, Python 3.x(node-gyp 빌드용), C++ 워크로드가 포함된 Visual Studio Build Tools가 필요하다. install.ps1 스크립트는 Python과 VS Build Tools가 없을 경우 자동으로 설치한다.

개발 빌드는 다음 순서로 진행된다.

git clone https://github.com/openwong2kim/wmux.git
cd wmux
npm install
npm start          # 개발 모드
npm run make       # 설치 파일 빌드

wmux는 AI 코딩 에이전트의 상태 표시 목적으로만 에이전트를 감지하며, 어떠한 AI API도 호출하지 않고 에이전트 출력을 캡처하거나 에이전트 상호작용을 자동화하지 않는다. 사용자는 각 AI 제공자의 서비스 약관을 준수할 책임이 있다.

같이 보기

각주

외부 링크