tmux をやめて cmux に乗り換えた — 半日で終わる移行と3つのハマりどころ(2026年3月)
📊この記事の図解版があります。内容を視覚的にまとめたページで、全体像をサッと把握できます
図解を見るtmux をやめて cmux に乗り換えた — 半日で終わる移行と3つのハマりどころ(2026年3月)
対象環境: macOS(Apple Silicon)+ cmux 0.62.2 最終更新: 2026-03-16 想定読者: ターミナルの基本操作を知っていて、AIコーディングのワークフロー最適化に興味がある人 注意: cmux は v0.x 台であり、今後のアップデートで仕様が変わる可能性がある
はじめに
3週間前、tmux の導入ガイドを書いた。Ghostty × tmux で Claude Code を複数同時に使いこなす方法を、初心者向けに丁寧に解説した記事だ。
その筆者が、3週間後に tmux を捨てた。
乗り換え先は cmux(シーマックス)。Ghostty のコアライブラリをベースにした、AIコーディングエージェント向けのターミナルアプリだ。移行の動機、実際の手順、ハマりどころ、そしてワークフローがどう変わったかを記録する。
なお、tmux が不要になったわけではない。リモートサーバー運用では引き続き tmux が最適解だ。この記事は「ローカルの Mac で Claude Code を使う場面」に限った話だと思って読んでほしい。
この記事で得られること:
- tmux から cmux への移行手順(3ステップ、作業自体は30分)
- tmux と cmux の判断基準(どちらを使うべきか)
- ハマりどころ3選と回避策
なぜ tmux をやめたのか
tmux は素晴らしいツールだ。セッション永続化、画面分割、スクリプト自動化。2007年の登場以来、約20年にわたって磨かれた信頼性がある。
しかし、Claude Code を4〜5プロセス同時に走らせるワークフローでは、3つの不満が出てきた。
「どのペインが入力待ちか」がわからない
Claude Code は思考中も入力待ちもターミナル上では同じように見える。tmux で6ペインに分割していると、「どこが自分の操作を待っているのか」を目視で探す時間が発生する。
ブラウザ確認をCLIから自動化できない
「このページをブラウザで開いて、スクリーンショットを撮って、内容を確認して」——Claude Code にやらせたい作業だが、tmux にはブラウザ操作の機能がない。
Ghostty との橋渡し設定が多い
tmux を快適に使うには、Ghostty のキーバインドを tmux コマンドに変換する設定(Cmd+D → \x01| のような16進エスケープシーケンス)が十数行必要だった。これは tmux の問題ではなく構造的な制約だが、管理コストがゼロではなかった。
cmux とは何か
2つの「cmux」に注意
「cmux」で検索すると、2つの異なるプロジェクトがヒットする。
| プロジェクト | 内容 | GitHub |
|---|---|---|
| soheilhy/cmux | Go のネットワークライブラリ(TCPポートで複数プロトコルを多重化) | github.com/soheilhy/cmux |
| manaflow-ai/cmux | macOS ネイティブのターミナルアプリ(AIコーディングエージェント向け) | github.com/manaflow-ai/cmux |
この記事で扱うのは後者だ。なお、Ghostty ベースの macOS ターミナルとしては Calyx もある。本記事では筆者が選んだ cmux に絞って書く。
Ghostty ベースの「次世代ターミナル」
cmux は Ghostty のコアライブラリ(libghostty — 端末エミュレーション、画面描画、PTY管理などを担当するライブラリ)をベースに、Swift + AppKit でネイティブ macOS アプリとして構築されている。つまり Ghostty の表示品質と互換性はそのまま、tmux が担っていた機能をネイティブに統合した アプリだ。
主な特徴:
| 機能 | tmux + Ghostty | cmux |
|---|---|---|
| セッション管理 | tmux が担当 | cmux 内蔵(v0.61.0〜) |
| 画面分割 | tmux が担当 | cmux ネイティブ |
| 通知システム | なし | 通知リング(入力待ちペインが青く光る) |
| ブラウザ自動化 | 不可 | 80+ のCLIコマンドで操作可能 |
| Ghostty 設定引き継ぎ | — | そのまま使える |
| OS | Linux / macOS / SSH先 | macOS 専用 |
cmux の設計思想は「部品を提供し、組み合わせはユーザーに任せる」。AIエージェントのワークフローは人によって異なるため、柔軟さを重視した設計だ。
インストール
brew install --cask cmux
移行でやったこと
1. Ghostty 設定のクリーンアップ
tmux 連携のために追加していたキーバインド(十数行)を全て除去した。
除去したもの:
TMUX_TMPDIR環境変数macos-option-as-alt(tmux で Alt キーとして使うための設定)Cmd+D/W/Shift+Dの tmux 向けリマップ(\x01|等の16進エスケープ)Cmd+[/]のペイン切り替えCtrl+=のペイン均等化
残したもの:
- フォント設定(PlemolJP Console NF)
- リガチャ無効化
- Claude Code 用キーバインド(
Shift+Enter,Cmd+Left/Right) - クリップボード設定
- スクロールバック制限
cmux は Ghostty の設定をそのまま引き継ぐので、tmux 固有の設定を消すだけで移行が完了する。
2. cmux CLI の PATH 設定
cmux のブラウザ自動化機能を Claude Code から使うには、CLI ツールに PATH を通す必要がある。
sudo ln -sf "/Applications/cmux.app/Contents/Resources/bin/cmux" /usr/local/bin/cmux
cmux --version
# cmux 0.62.2 (77) [6c203b514]
3. CLAUDE.md にブラウザ連携を記述
Claude Code は cmux browser コマンドの存在を知らない。CLAUDE.md に使い方を書いておくと、Claude Code が自発的にブラウザ確認を行えるようになる。
# cmux 内かどうかの判定
if command -v cmux &>/dev/null && [ -n "$CMUX_WORKSPACE_ID" ]; then
cmux browser open http://localhost:3000
cmux browser snapshot --interactive --compact
cmux browser screenshot --out /tmp/preview.png
fi
ポイントは $CMUX_WORKSPACE_ID 環境変数での判定だ。cmux 外で実行されている場合はブラウザコマンドを呼ばないようにガードしている。
ハマりどころ 3選
1. 設定ファイルが2箇所ある
cmux(Ghostty ベース)は設定ファイルを 2つのパス から読み込む。
| 優先度 | パス |
|---|---|
| 1(最優先) | ~/.config/ghostty/config |
| 2 | ~/Library/Application Support/com.mitchellh.ghostty/config |
片方だけ編集して「設定が反映されない」と悩んだ。特にフォント設定は両方に影響するため、常に同期させるか、優先度1のファイルだけ使うルールを決める必要がある。
2. ⌘Q でプロセスが止まる
tmux の最大の強みは「ターミナルを閉じてもセッションが生き残る」ことだった。cmux はこの点が異なる(v0.62.2 時点の挙動)。
| 操作 | tmux + Ghostty | cmux |
|---|---|---|
| ターミナルを閉じる(⌘Q) | tmux サーバーが生存。tmux a で復帰 | プロセスが停止する |
| セッション情報 | tmux-resurrect が保存・復元 | cmux が自動復元(v0.61.0〜) |
具体的にはこうなる。3つのペインで Claude Code を走らせている状態で ⌘Q を押すと、3つの Claude Code プロセスは全て終了する。次に cmux を起動すると、ペインのレイアウトと作業ディレクトリは復元されるが、Claude Code は起動していない。手動で claude --resume する必要がある。
tmux なら、Ghostty を閉じても tmux サーバーが裏で動き続けるので、tmux a だけで Claude Code がそのまま動いている状態に戻れた。
これは cmux に移行する際の最大の判断ポイントだ。リモートサーバーで SSH 切断後もプロセスを維持したいなら、tmux 一択になる。
3. フォント8種を試して元に戻った
3つ目は cmux 固有の問題ではないが、移行を機に調査した内容を記録しておく。
cmux 導入を機に、ターミナルフォントも見直そうとした。日本語 + Nerd Fonts が1ファイルで完結する等幅フォントを8種類調査し、3種類を実際にインストールして試した。
| フォント | 欧文ベース | 日本語 | メンテ状況 |
|---|---|---|---|
| PlemolJP Console NF | IBM Plex Mono | IBM Plex Sans JP | 筆者の常用フォント |
| UDEV Gothic 35NF | JetBrains Mono | BIZ UDゴシック | 2026/02 更新 |
| HackGen35 Console NF | Hack | 源柔ゴシック | 2024/12 更新 |
| Moralerspace Neon | Monaspace | IBM Plex Sans JP | 2025/07 更新 |
| Firge | Fira Mono | 源真ゴシック | 2023/11 |
| Cica | Hack+DejaVu | Rounded Mgen+ | 2022/03(停滞) |
| PleckJP | Hack | IBM Plex Sans JP | 2026/03 更新 |
| Juisee NF | JuliaMono | LINE Seed JP | 2024/06 |
結果: PlemolJP Console NF(元のフォント)に戻った。フォント選びは好みの問題で、「これが正解」はない。ただ、上の表は日本語対応の等幅フォントを探している人には参考になるだろう。
ちなみに、cmux のWelcome画面で ⌘ 記号が重なって見える問題を調査した結果、⌘(U+2318)は Unicode 仕様上すべてのフォントで半角幅として収録されており、フォント変更では解決しないことがわかった。cmux 固有のレイアウト問題だ。
移行後のワークフロー
通知リング
cmux の一番のキラー機能。Claude Code が入力待ちになると、そのペインの周囲に 青い光輪 が表示される。
6ペイン同時運行でも「どこが待っているか」が一瞬でわかる。tmux 時代に目視で探していた時間がゼロになった。
ブラウザ自動化
cmux browser コマンドで、CLI からブラウザを操作できる。
cmux browser open http://localhost:3000 # ページを開く
cmux browser snapshot --interactive # 構造をテキスト取得
cmux browser screenshot --out /tmp/ss.png # スクリーンショット保存
cmux browser errors list # コンソールエラー確認
Claude Code の CLAUDE.md にこれらを記述しておくと、「ブラウザで表示確認して」と指示するだけで自動的に実行してくれる。
セッション永続化
cmux v0.61.0 以降、セッション永続化が内蔵された。tmux-resurrect + tmux-continuum のプラグインセットアップが不要になり、設定の管理コストが下がった。
ただし前述の通り、「プロセスが裏で生き続ける」tmux モデルとは異なる。cmux は「⌘Q で閉じても、次回起動時にウィンドウ構成が復元される」という動作だ。
tmux が合う人・cmux が合う人
| 要件 | tmux | cmux |
|---|---|---|
| Linux / リモートサーバー | ◎(唯一の選択肢) | ✕(macOS 専用) |
| SSH 切断後のプロセス維持 | ◎(サーバーが裏で生存) | ✕(⌘Q でプロセス停止) |
| 枯れた安定性 | ◎(約20年の実績) | △(v0.x 台、開発活発) |
| AIエージェントの並行実行 | ○ | ◎(通知リング) |
| ブラウザ自動化 | ✕ | ◎(80+ コマンド) |
| 設定の簡潔さ | △(tmux.conf + Ghostty 橋渡し) | ◎(Ghostty 設定のみ) |
| ライセンス | ISC(寛容) | AGPL-3.0(コピーレフト) |
筆者の判断基準:
- Mac mini をリモートサーバーとして使う場面では引き続き tmux を使う
- ローカルの MacBook で Claude Code を使う場面では cmux に移行した
- 「どちらか一方」ではなく、用途で使い分けるのが現実的だ
まとめ
tmux から cmux への移行は、「tmux が悪い」からではなく「AIコーディングの作業パターンに cmux の方がフィットした」から だ。
移行の3ステップ(Ghostty設定の整理、CLI PATH設定、CLAUDE.md追記)は30分もかからなかった。ハマりどころの調査と解決を含めても半日以内で完了した。
ただし、cmux は macOS 専用で、⌘Q 時のプロセス維持が tmux と異なる。リモートサーバー運用やクロスプラットフォームが必要なら、tmux は引き続き最適解だ。
関連記事
| 記事 | 内容 |
|---|---|
| MS9 新メンバー環境構築ガイド【必須編】 | cmux を含む開発環境の構築手順 |
参考リンク
cmux:
| リソース | URL |
|---|---|
| cmux 公式サイト | cmux.dev |
| cmux 公式ドキュメント | cmux.dev/docs |
| cmux GitHub | github.com/manaflow-ai/cmux |
| Claude Code × cmux 連携実例(Lawrence Chen) | bounds.dev |
関連:
| リソース | URL |
|---|---|
| Calyx vs cmux 比較 | dev.to |
| cmux 日本語ローカライゼーション | zenn.dev |
| Ghostty 公式ドキュメント | ghostty.org |