M
masaki.work

tmux をやめて cmux に乗り換えた — 半日で終わる移行と3つのハマりどころ(2026年3月)

cmux ghostty terminal claude-code workflow

この記事の全文をコピーして、AIに「この通りに設定をガイドして」と渡すと便利です

📊この記事の図解版があります。内容を視覚的にまとめたページで、全体像をサッと把握できます

図解を見る

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/cmuxGo のネットワークライブラリ(TCPポートで複数プロトコルを多重化)github.com/soheilhy/cmux
manaflow-ai/cmuxmacOS ネイティブのターミナルアプリ(AIコーディングエージェント向け)github.com/manaflow-ai/cmux

この記事で扱うのは後者だ。なお、Ghostty ベースの macOS ターミナルとしては Calyx もある。本記事では筆者が選んだ cmux に絞って書く。

Ghostty ベースの「次世代ターミナル」

cmux は Ghostty のコアライブラリ(libghostty — 端末エミュレーション、画面描画、PTY管理などを担当するライブラリ)をベースに、Swift + AppKit でネイティブ macOS アプリとして構築されている。つまり Ghostty の表示品質と互換性はそのまま、tmux が担っていた機能をネイティブに統合した アプリだ。

主な特徴:

機能tmux + Ghosttycmux
セッション管理tmux が担当cmux 内蔵(v0.61.0〜)
画面分割tmux が担当cmux ネイティブ
通知システムなし通知リング(入力待ちペインが青く光る)
ブラウザ自動化不可80+ のCLIコマンドで操作可能
Ghostty 設定引き継ぎそのまま使える
OSLinux / 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 + Ghosttycmux
ターミナルを閉じる(⌘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 NFIBM Plex MonoIBM Plex Sans JP筆者の常用フォント
UDEV Gothic 35NFJetBrains MonoBIZ UDゴシック2026/02 更新
HackGen35 Console NFHack源柔ゴシック2024/12 更新
Moralerspace NeonMonaspaceIBM Plex Sans JP2025/07 更新
FirgeFira Mono源真ゴシック2023/11
CicaHack+DejaVuRounded Mgen+2022/03(停滞)
PleckJPHackIBM Plex Sans JP2026/03 更新
Juisee NFJuliaMonoLINE Seed JP2024/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 が合う人

要件tmuxcmux
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 GitHubgithub.com/manaflow-ai/cmux
Claude Code × cmux 連携実例(Lawrence Chen)bounds.dev

関連:

リソースURL
Calyx vs cmux 比較dev.to
cmux 日本語ローカライゼーションzenn.dev
Ghostty 公式ドキュメントghostty.org