個人開発者のnoteを読んでいたら、開発環境の章にこう書いてありました。
移動中にスマホから、さっきの実装のここを直して、と送っておくと帰宅した頃には終わっています。
該当のnoteの筆者はcmuxというmacOS用ターミナルと、cmux-remoteというスマホアプリを使っていました。
出先でPCがさわれないときもスマホで指示を出しておくと、家に着く頃には終わっている。
同じことをやりたくなったので調べました。
結果、cmuxではなくherdrという別のツールで環境を実現することにしました。
そこに至るまでに5つの選択肢を比較したので、備忘録として残します。
前提:2つのエージェントを1か所で見たい
私はClaude CodeとCodexの両方を使っています。
なので条件は「スマホから指示が出せること」+ 「2つを1つの画面で見られること」 でした。
選択肢1:cmux公式のiOSアプリ
まずnoteに書いてあった通りのものを調べました。
cmux本体はGPL-3.0で、無料です。macOS用のネイティブターミナルで、
縦タブ・ペイン分割・組み込みブラウザを持っています。ここまでは問題ありません。
問題はスマホ側でした。公式の料金ページを見ると、
iOSアプリはProプラン(月$50)以上に含まれる機能です。TestFlight配布のベータで、
無料プランには入っていません。
有料ということで、これは一旦保留にしました。
選択肢2:非公式のiOSアプリ
cmuxのスマホ接続を無料で実現するアプリが、App StoreとGitHubにいくつかあります。
- Cmux Remote(App Store・無料・MIT)
- Telecmux(App Store・無料・SSH鍵認証なのでTailscale不要)
- NewTurn2017/cmux-remote(GitHub・MIT・サイドロード必須)
どれも月額はかかりません。一番軽いのはTelecmuxで、SSH接続なのでVPNの設定も要りません。
ただし上記は、いずれも個人または小規模な開発者が作ったものでした。
選択肢3:VSCode Remote Tunnels
Microsoft公式で、無料です。Mac側で1つコマンドを打つと、https://vscode.dev/tunnel/<マシン名>/<フォルダ名> というURLが払い出されます。
code tunnel service install
スマホのブラウザでそのURLを開くと、VS Codeがそのまま出てきます。
ブラウザ内にターミナルもあるので、そこでclaudeでもcodexでも動かせます。
アプリのインストールは要りません。GitHubかMicrosoftのアカウントで認証し、
トンネル上にSSH接続を張ってAES-256で暗号化されます。
条件は満たしていますが、
スマホのブラウザでVS Codeを操作することになります。
タップ対象が小さく、ソフトキーボードとも相性が悪い。
そう思って、こちらも保留にしました。
選択肢4:各社純正の機能
Claude CodeにはRemote Controlという公式機能があります。
Mac側でclaude remote-control(または実行中のセッションで/remote-control)を打ち、
出てきたQRコードをスマホのClaudeアプリで読むと使用できます。
写真の添付もでき、タスクの完了時にプッシュ通知も来ます。
ですが、こちらはclaudeセッションにしかつながりません。
Codex側ですが、Codex CLIのドキュメント
にモバイルはありません。
Desktop app / ChatGPT web / IDE extension / Codex cloud
つまりスマホからつながる先はCodexのデスクトップアプリかクラウドであって、Codex CLIではないということになります。
純正で揃えようとすると、スマホにClaudeアプリとChatGPTアプリが並び、
Mac側もclaudeとCodexデスクトップアプリで別々になります。
「1か所で見たい」という最初の条件が、満たせないということになります。
選択肢5:herdr
これはエージェントと繋げるのではなくエージェントの下にあるターミナルと繋げる方法です。
- Apache-2.0のオープンソース
- ターミナルマルチプレクサ(tmuxやzellijの系譜)で、22種のエージェントを自動検出する。
Claude CodeもCodexもCursorもopencodeも同じ扱い - 各ペインを idle / working / blocked / done という状態として持っている
- macOS / Linux / Windows で動く
スマホ側は、herdr-webというプラグインをTailscale越しに開きます。
App Storeのアプリは入れず、ブラウザでURLを開くだけです。
UIのソースもMITで公開されています。
常駐の仕方もcmuxとは違います。
cmuxはGUIアプリなので、開いていないと止まります。
herdrはバックグラウンドのサーバーがターミナルを持つので、
画面を閉じてもネットが切れても動き続け、Macを再起動するとレイアウトごと復元されます。
私の場合は、ブラウザだけで済むことと、常駐することの2点でherdrにしました。
5つを並べた結果
| 月額 | Claude Code | Codex | スマホ側 | ソース | |
|---|---|---|---|---|---|
| cmux公式iOS | $50 | ○ | ○ | 専用アプリ | 本体のみ公開 |
| cmux+非公式アプリ | ¥0 | ○ | ○ | 専用アプリ | 一部クローズド |
| VSCode Tunnels | ¥0 | ○ | ○ | ブラウザ | 非公開 |
| 各社純正 | ¥0 | ○ | × | アプリ2つ | 非公開 |
| herdr+herdr-web | ¥0 | ○ | ○ | ブラウザ | 全部読める |
組んだ構成
構築は半日かからずに終わりました。
iPhone (Safari / ホーム画面に追加)
↓ Tailscale(自分のネットワーク内だけ)
Mac :17930 (HTTPS)
↓ tailscale serve
herdr-web :7930(127.0.0.1限定)
↓ socket API
herdrサーバー(常駐・ログイン時に自動起動)
↓
Claude Code / Codex
Claude CodeとCodexを並べた状態で、herdrが返したのがこれです。
w3:p1 agent="claude" status=idle ✳ Claude Code
w3:p2 agent="codex" status=idle LIFE
同じワークスペースに2つのエージェントが並び、それぞれ別のものとして
状態を持っています。これをTailscale越しのHTTPSでスマホから見ています。
はまった点
herdr-webはmacOSではそのままでは起動しませんでした。2回失敗しています。
setsid: command not found— 起動スクリプトがLinux前提で、macOSにないコマンドを呼んでいたnohup: node: No such file or directory— herdrをlaunchd経由で常駐させたため、
最小限のPATHしか持たず、nvm管理下のnodeを見つけられなかった
どちらも起動スクリプトを2箇所直して解決しました。
まとめ
月額はゼロ、スマホには何も入れず、エージェントが増えても設定を足さずに済む構成になりました。
当初意図していた通りの使い方ができるかはまだわかりませんが、構築した環境を実際に使ってみて、また何かあれば改良できたらなと思います。
詳しい構築の手順は下記の記事に記載しました。




コメント