Claude Code の長いタスクは、ノート PC が開いたままか、Wi-Fi がつながったままかに左右されるようではいけません。ノート PC で Claude Code を動かせば、ふたを閉じたとたんに止まります。SSH でつないだサーバーで動かせば、接続が切れたとたんに止まります。ふさわしいのは、プライベートな PWA(progressive web app)という形です。アプリのようにインストールでき、自分だけが開ける Web ページのことです。エージェントは、電源を入れたままの自分のマシンで働きます。持ち歩くデバイスはどれも、そこをのぞく窓になります。
ノート PC では、ふたを閉じられない
誰でも最初はここから始めます。ターミナルを開き、プロジェクトのフォルダで claude を実行します。
そのうち、タスクには 20 分かかるのに、もう出かけなければならない日が来ます。ふたを閉じればノート PC はスリープし、エージェントも一緒に眠ります。1 時間後に開くと、タスクは離れたときのままで、あの 20 分がそっくり残っています。
ノート PC は、スリープしないように設定できます。ただしその場合は、エージェントの作業が終わるまで、電源と Wi-Fi につないだまま、その場から動かせません。出かけるなら、置いていくことになります。
SSH では、Wi-Fi が切れてはいけない
そこで、エージェントを眠らないマシンに移します。部屋の隅のデスクトップ PC か、Mac mini か、借りたサーバーです。SSH で入り、そこで claude を実行します。
これで、ふたを閉じてもマシンは止まりません。ただし、接続のほうは切れます。そしてエージェントが生きていられるのは、接続が続いているあいだだけです。Wi-Fi が少しのあいだ途切れても、ノート PC がスリープしても、別のネットワークに移っても、SSH セッションは切れます。Claude Code もそれと一緒に、作業の途中で打ち切られます。claude --resume で会話は戻りますが、そのあいだに進んでいたはずの作業は戻りません。
これを直してくれるのが tmux です。tmux は、誰もアタッチしていなくても、サーバー上のターミナルを生かしておきます。だからエージェントは作業を続け、あとでまたアタッチできます。ただし、次のような雑用も一緒についてきます。
- 毎回、まず tmux を起動します。長引くのは決まって、tmux なしで始めたタスクです。
- どのセッションにどの会話があるかを覚えておき、接続が切れるたびに、正しいセッションにアタッチし直します。
- 様子を見るのに使いたいデバイスすべてに、ターミナルアプリと SSH 鍵を入れます。tmux のコマンドはどれも Ctrl-B で始まり、スマートフォンではそれをタッチキーボードで打つことになります。
- 終わったかどうかは、ときどきのぞいて確かめます。何も知らせてくれないからです。
どれも難しくはありません。ただの段取りです。それが毎日ついて回ります。
PWA なら、どちらも問題にならない
2 つの教訓を合わせてみましょう。エージェントがいるべき場所は、電源が入ったままのマシンです。手に持つものは、そこをのぞく窓にとどめるべきです。いつ消えてもかまわず、戻ってきたときには何も失われていない窓です。
Web ページは、そういう窓です。ブラウザはどのデバイスにもすでに入っているので、ターミナルアプリを用意する必要も、SSH 鍵をコピーする必要もありません。ページは、接続が切れても自分でつなぎ直せます。さらに、PWA としてインストールしたページには、アイコンと専用のウィンドウ、それに通知がつくので、エージェントの作業が終わったら知らせてくれます。
exe はこの考え方で作られています。自前のマシンが配信する、ブラウザの中のデスクトップで、Claude Code はそこに開くウィンドウのひとつです。
- 会話はひとつひとつがマシン上のセッションです。タブを閉じても、ふたを閉じても、Wi-Fi が切れても、エージェントは作業を続けます。
- セッションは縦 1 列に並びます。明滅する緑の点はまだ作業中のセッション、黒い点は返事を待っているセッションです。接続が切れたウィンドウは、自分でつなぎ直します。
- どのデバイスからも同じ会話が開きます。ノート PC で始めたタスクを、スマートフォンからのぞけます。
- 終わったらスマートフォンが知らせます。通知をオンにしておけば「Claude Code finished」と届き、タップするとその会話が開きます。
ウィンドウの裏で動いているのは、やはり tmux です。各セッションは tmux のセッションで、起動も、名前付けも、アタッチも exe が代わりにやってくれます。tmux がしていることは変わっていません。段取りが、自分の手からアプリに移ったのです。
開けるのは自分だけ
Claude Code をのぞく窓は、自分のマシンのシェルそのものです。その向こうには、自分のコードと、サインイン済みのアカウントがあります。インターネットに公開されたページにするわけにはいきません。
exe はそこを Tailscale に頼っています。Tailscale は自分のデバイス同士をつなぐプライベートネットワークで、どこにいてもマシンに届きます。exe が待ち受けるのは、そのネットワーク内でのマシンのアドレスです。だからデスクトップは、ノート PC からも、タブレットからも、スマートフォンからも開けます。それ以外のどこからも開けません。そのうえに API トークン、つまりデスクトップのパスワードが加わります。
自前のマシンで
残るはマシンです。理想は、家に置ける小さなマシン、NVIDIA DGX Spark か Mac mini です。どちらも静かで、棚に置いても場所を取らず、昼も夜も動かしたままにできます。家にあっても、Tailscale ならルーターのポートを開けずに届きます。
このマシンの仕事は、ターミナルを生かしておくことだけではありません。エージェントが走らせるビルドもテストも、そこで動きます。exe がサンドボックスとしてエージェントに与える仮想マシンも、自分で動かすモデルもそうです。それにはコアとメモリと GPU が要ります。DGX Spark には 20 コアがあり、GPU はそのコアと 128 GB のメモリを共有します。
同じものをクラウドで借りることもできます。けれども、これだけのメモリを持つ GPU は時間単位で課金されます。しかもこのマシンは、タスクの合間に止めておけません。エージェントがそこに住んでいるからです。1 年間動かし続ければ、借りる費用は本体の価格を上回ります。自前のマシンなら、支払いは一度きりです。
試してみる
必要なのは、電源を入れたままにしておける Linux マシンか Mac です。そこに tmux を入れ、Claude Code をインストールして、サインインまで済ませておきます。Tailscale は、そのマシンと、様子を見るのに使うデバイスすべてに入れます。
curl -fsSL https://exe.v2core.com/install.sh | sh
- インストーラーが exe の待ち受けアドレスを尋ねてきたら、Tailscale のアドレスを選びます。インストーラーは API トークンを提案し、デスクトップのアドレスと一緒に表示します。
- Tailscale Serve で、デスクトップの手前に HTTPS を置きます。Tailscale Serve なら、デスクトップはプライベートネットワークの外に出ません。アプリとしてのインストールにも、通知にも、HTTPS が必要です。
- スマートフォンでデスクトップを開き、求められたらトークンを貼り付けて、インストールします。iPhone では「ホーム画面に追加」です。
- 通知をオンにします。
続きは Getting Started(はじめに)に、ソースは github.com/livid/exe にあります。
あとは Claude Code を開いて、何か長い仕事を任せ、ふたを閉じてください。