AIコーディングエージェント向けのネイティブWindowsターミナル — WSLなし
wmux は、Claude Code、Codex CLI、Gemini CLI を並べて実行するための、ネイティブWindows用ターミナル・マルチプレクサです。分割ペイン、MCP の自動登録、フル CDP オートメーション対応の内蔵ブラウザ、そして再起動をまたいで生き残るセッション永続化を備えています。MIT。
winget install openwong2kim.wmux
GitHub: https://github.com/openwong2kim/wmux
問題
Windows 上で複数のAIコーディングエージェントを並列実行しようとしても、選択肢は厳しいです:
- WSL + tmux:ネイティブのクリップボード、タスクバー、ファイルパスが壊れます。
- 複数のターミナルウィンドウ:共有レイアウトなし、永続化なし。
- VSCode ターミナル:本物のマルチプレクサではありません。
cmux は macOS にはあります。でも Windows 用は何もありませんでした。そこで私は wmux を作りました。
できること
分割ペイン、ConPTY ネイティブ
Ctrl+D で右に分割、Ctrl+Shift+D で下に分割します。裏側は純粋な ConPTY — Windows Terminal の背後にあるのと同じ疑似端末(pseudo-terminal)API です。xterm.js + WebGL による描画。999K 行のスクロールバックをディスクに永続化します。
Tmux 風のプレフィックスモード(Ctrl+B の後にアクションキー)も組み込み済み — 13 個のデフォルトアクションで、すべて再バインド可能です。
エージェントが“本物のブラウザ”を操作できる
wmux には、Chrome DevTools Protocol 経由で接続された内蔵ブラウザパネルが付属しています。Claude Code がペイン内で動作していると、MCP サーバーが ~/.claude.json に自動登録します。次のように言えます:
「wmux を Google で検索して、上位の結果のスクリーンショットを撮って」
…そして Claude は実際にやります:
browser_open
→ browser_navigate("https://google.com")
→ browser_fill(ref=13, "wmux")
→ browser_press_key("Enter")
→ browser_screenshot()
React の制御入力(value= だけでなく CDP のキーストローク)や、CJK テキストでも動作します。puppeteer.launch() のような定型文は不要 — ブラウザは最初から用意されています。
再起動をまたいで生き残るセッション永続化
別のデーモンが PTY を所有します。アプリを閉じても — デーモンが生かし続けます。再度開けば — セッションは再接続され、スクロールバックもそのままです。再起動すれば — wmux が自動起動し、原子的な .bak ローテーションの保存を通じて状態を復元します。
出力スループットによるエージェント監視
長時間動いているエージェントがいつ終わったのか分かりません。wmux は特定の文字列ではなく、出力のスループットを監視します。エージェントがうるさかったあとに黙ると、タスクバーのフラッシュ + Windows のトースト通知が出ます。どんなエージェントでも動作します。
また、危険なコマンドを実行前にフラグ付けします:git push --force、rm -rf、DROP TABLE。
セキュリティ
- すべての IPC に対するトークン認証済みの名前付きパイプ
- ブラウザの navigate に対する SSRF ガード —
127.0.0.1、file://、javascript:をブロック - PTY 入力のサニタイズ
- セッションごとに CDP ポートをランダム化
- メモリウォッチドッグが 750MB で死んだセッションを回収
- Electron Fuses:RunAsNode を off、Cookie の暗号化を on
インストール
winget install openwong2kim.wmux
# または
choco install wmux
任意のペインで Claude Code を開く — MCP は自動的に登録されます。書くための設定はありません。
GitHub: https://github.com/openwong2kim/wmux(v2.9.1、MIT)
フィードバックとスター歓迎です。
返却形式: {"translated": "翻訳されたHTML"}



