コーディングエージェントのための tmux: 動かし続ける最小限
SSH シェルから直接エージェントを起動すると、そのエージェントは接続が続いている間しか生きません。tmux を使えば、接続しているかどうかにかかわらずエージェントはサーバー上で動き続け、ノートパソコンからでもスマホからでも、好きなときに再接続できます。tmux を深く知る必要はありません。10 個ほどのコマンドで足ります。
この記事は スマホで Mosh と SSH のどちらを使うか の姉妹編で、スマホから Claude Code を使う方法のガイドの一部でもあります。
生き残るセッション
いちばんよく使うコマンドです。
tmux new-session -A -s agents
-A フラグは、その名前のセッションがあればそれに入り、なければ作成するという意味です。そのため、いつも同じコマンドを実行できます。中では、ふつうのシェルと同じようにエージェントを起動します。
cd ~/code/my-app
claude
何も終了させずに抜けるには、Ctrl-b を押してから d でデタッチします。エージェントは動き続けます。戻るには次のようにします。
tmux attach -t agents
どんなセッションがあるか見るには:
tmux ls
ターミナルを閉じても、Wi-Fi が切れても、SSH が死んでも問題ありません。セッションはサーバーに残ります。それがすべてです。
ウィンドウ: エージェント 1 つにウィンドウ 1 つ
セッションにはウィンドウがあり、タブのようなものです。よくある状況は、ウィンドウ 2 で長いリファクタリングが走り、ウィンドウ 3 でテストが動き、ウィンドウ 1 であなたが何かを触っている、というものです。
tmux の中では、ショートカットはすべて Ctrl-b から始まります。
cで新しいウィンドウを作成します。,で現在のウィンドウの名前を変更します。nとpで次のウィンドウと前のウィンドウに移動します。0–9で番号を指定してウィンドウに移動します。wで一覧を開き、そこから選びます。
外から、またはスクリプトからウィンドウを作成して名前を付けることもできます。
tmux new-window -n claude -c ~/code/my-app
tmux new-window -n codex -c ~/code/my-app
tmux rename-window -t agents:2 refactor
ウィンドウすべてに名前を付けることは、見た目以上に大切です。スマホでは小さな一覧で「claude」「codex」「tests」と読むことになり、「bash」が 4 つ並んでいても役に立ちません。
ペイン
同じウィンドウで 2 つのものを同時に見たいときは、分割します。
Ctrl-b %でウィンドウを 2 つの列に分割します。Ctrl-b "で 2 つの行に分割します。Ctrl-b oで次のペインに移動します。Ctrl-b xで現在のペインを閉じます(先に確認されます)。
スマホの画面では、ペインよりもタスクごとにウィンドウを分けるほうがたいていは便利です。ノートパソコンではペインを使いましょう。
小さな ~/.tmux.conf
体験を大きく変える設定が 2 つあります。マウスのサポートと、履歴を増やすことです。デフォルトの履歴は約 2,000 行で、エージェントはそれをあっという間に使い切ります。
set -g mouse on
set -g history-limit 50000
set -g allow-rename off
mouse on にすると、指やホイールでスクロールでき、ペインはタップで選択できます。allow-rename off は、実行中のプログラムがウィンドウ名を勝手に変えるのを防ぎます。次のコマンドで再読み込みします。
tmux source-file ~/.tmux.conf
流れて見えなくなった内容をマウスなしで読むには、Ctrl-b [ でコピーモードに入り、矢印キーか PgUp で上に移動します。抜けるときは q です。Mosh にはなく、tmux にあるのがこの機能です。
複数のエージェントを同時に: git worktree
2 つのエージェントが同じディレクトリを編集すると、お互いを踏み荒らします。きれいな解決策は、エージェントごとに worktree を 1 つ用意することです。それぞれが自分のブランチで、自分のフォルダで作業しつつ、同じリポジトリを共有します。
cd ~/code/my-app
git worktree add ../my-app-auth -b feature/auth
git worktree add ../my-app-reports -b feature/reports
git worktree list
それから、それぞれに tmux のウィンドウを作ります。
tmux new-window -n auth -c ~/code/my-app-auth
tmux new-window -n reports -c ~/code/my-app-reports
ブランチがマージされて不要になったら:
git worktree remove ../my-app-auth
Wendo での使われ方
Wendo は、コーディングエージェントを見守るために作られた iOS と Android 向けの SSH クライアントで、tmux はその中心にあります。tmux との連携は Wendo Pro の機能です。
- 接続時に開く場所: tmux を選び、必要ならセッション名も指定します。Wendo は
tmux new-session -A -s wendo(または指定した名前)を実行するので、接続を開くたびに自分のセッションに戻れます。 - マシン には、各パソコンのセッション、ウィンドウ、ペインが表示されます。タップすると、その場で開きます。
- tmux では、ワークスペースのシートからウィンドウの切り替え、名前の変更、ペインやウィンドウの終了、セッションの作成ができます。新しいウィンドウでエージェント(Claude Code、Codex、OpenCode、Gemini CLI)を起動することも、新しいブランチで git の worktree を作って専用のウィンドウで開くこともできます。これは、先ほど手作業でやったことそのものです。
- Claude がマルチプレクサの中で動いていれば、受信トレイの通知から正確なペインへ移動できます。フックのインストールは通知と承認で説明しています。
ターミナルの設定には、tmux のグローバルオプション(タイトル、マウス、ステータスバー)を適用する項目があります。詳しくは tmux のドキュメントにまとまっています。接続が不安定な場合は、セッションのドキュメントで Mosh と ET を説明しています。
代替: zellij と herdr
別のマルチプレクサのほうが好みなら、Wendo は zellij(zellij attach -c wendo)と herdr(herdr または herdr --session <name>)にも対応しています。どちらもパソコンにインストールされている必要があります。考え方は同じで、エージェントはサーバー上にいて、あなたは出入りします。