多くのチームはローカル Macで OpenClaw のデモまでは通しますが、本番では別の論点に直面します。Gateway を 7×24 でデータセンター級の裸金属に載せたい一方、Canvas・画面収録・カメラ・system.run はTCC 権限のあるローカル Macに残す必要がある、という二重要件です。2026 年の公式 macOS ドキュメントはこれを Remote モードと呼び、遠隔側は Gateway のみ、ローカルは node host を起動し、制御面は SSH トンネルまたは Tailscale 経由で既定の 18789 に接続します。本稿では再現可能な双機トポロジ、Local と Remote の対照表、六段の接入手順、現象別の排障表をまとめ、機種とノードは CALMVPS 料金ページを参照してください。
読み終えると次の三つに答えられます。① 自社の段階では Local 単機を維持すべきか Remote 双機へ移行すべきか。② Gateway をどの CALMVPS リージョンに置き、ローカル App を Remote に切り替えて node host を起動する手順は何か。③ トンネル不通、18789 の競合、Gateway 上で node IP が 127.0.0.1 のままのとき、最初に打つコマンドはどれか。
01 双機トポロジが解く三つの痛み
「一台の Mac に全部載せる」構成は検証環境では滑らかですが、本番に入ると次の三つが同時に顕在化しやすくなります。
- 算力と権限の結合:Gateway の長時間接続、Cron、複数チャネルのセッションが CPU とユニファイドメモリを食い、同じマシンで画面収録と自動化を回すと 16GB 機は夜間バッチでスワップし、TCC ダイアログが無人運用を中断します。
- 出口の不安定さ:家庭回線やオフィス NAT は WebSocket 長接続に不向きで、Channel オフラインが「モデル障害」と誤認され、調査の起点が最初からずれます。
- 運用境界の曖昧さ:スリープ、macOS アップデート、Spotlight、launchd 常駐が重なり、Gateway 障害なのか OS がプロセスを止めたのか切り分けにくくなります。
Remote 双機トポロジは役割を分離します。遠隔のベアメタル Mac(CALMVPS の香港・日本・韓国・シンガポール・米東西など)が Gateway、チャネル、スケジュールを担い、ローカル Macは UI と TCC を持つ Node として node host 経由で Canvas、Camera、Screen、system.run を遠隔 Gateway に公開します。制御面は引き続き 18789 ですが、macOS App が SSH 制御トンネルを維持するため、ポート転送スクリプトを手書きし続ける必要はありません。
選定の短い指針です。「Gateway はクラウド、Node はローカル、制御面は 18789 のみ」。トポロジを一枚の図に固定してから、M4 階層と契約期間を決めると会議が短く終わります。
02 Local 単機と Remote 双機の判断表
すべてのチームが即座に双機へ移る必要はありません。下表は「Local を維持」と「Remote へ切り替え」の境界をレビュー会で一度に揃えるためのものです。
| 観点 | Local(Gateway 同一台) | Remote(Gateway は CALMVPS 裸金属) |
|---|---|---|
| 向く段階 | 個人検証、単一チャネル Bot | 7×24 チャネル、複数 Agent、跨時区 Cron |
| ローカル Mac の役割 | Gateway と Node が一体 | Node のみ(TCC、Canvas、system.run) |
| 遠隔 Mac の役割 | なし | Gateway、launchd 常駐、ログ永続化 |
| 制御面 | 127.0.0.1:18789 直結 | SSH -L または Tailscale MagicDNS + App トンネル |
| 典型リスク | 睡眠・更新による中断、メモリ競合 | トンネル劣化、バージョン不一致、Token 非同期 |
| 推奨契約 | 自前デバイスで足りる | Gateway ノードは月次・四半期、ローカル増設不要 |
マルチリージョンの Hub-and-Spoke(Gateway を利用者密集区、Worker を次密集区)を組む場合も、Remote 双機が前提になります。リージョン選定の詳細は OpenClaw リモート Mac ノード選定を参照し、本稿は「遠隔 Gateway 一台 + ローカル Node 一台」の最小本番構成に焦点を当てます。
03 CALMVPS 裸金属への Gateway 配置
遠隔ノードは利用者とチャネル出口に最も近い CALMVPS リージョンを選びます。Gateway は loopback のみで待ち受け、制御面は SSH または Tailscale で露出し、Web UI を公網に直結しないのが安全です。インストールは OpenClaw 公式スクリプトを基準にしてください(発版後はリンクを再確認してください)。
https://openclaw.ai/install.sh
macOS プラットフォーム(Local/Remote、launchd ラベル ai.openclaw.gateway)の説明:
https://docs.openclaw.ai/platforms/macos
curl -fsSL https://openclaw.ai/install.sh | bash
openclaw onboard --install-daemon
openclaw gateway status
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
Gateway WS 既定 18789、127.0.0.1 バインド推奨
- Node ランタイム:Gateway は Node ランタイムを前提とします。裸金属では主バージョンを固定し、launchd と対話シェルで別バージョンを混在させないでください。
- 状態ディレクトリ:
OPENCLAW_STATE_DIRを iCloud 同期パスに置かず、~/.openclawを推奨します。openclaw doctorの警告と揃えてください。 - ディスク余裕:ログ、Cron 履歴、Memory の永続化は継続的に増えます。本番 Gateway では OpenClaw 専用に 80GB 以上を確保し、必要に応じて 1TB/2TB 階層または並列ノードでキューを分割してください。
04 ローカル Remote と SSH/Tailscale 六段
ローカル Mac に OpenClaw.app を入れ、TCC 権限を完了したうえで、次の六段で Remote に切り替えます(挙動は公式 macOS ドキュメント準拠、バージョンアップ後はドキュメントを優先してください)。
- 遠隔 Gateway の健全性:CALMVPS ノードで
openclaw gateway statusを実行し、18789 が loopback で応答することを確認します。 - SSH 鍵認証:App の制御トンネルは BatchMode です。運用アカウントに鍵ログインを設定し、対話パスワードでトンネルが半起動する状態を避けます。
- Tailscale(任意):tailnet 内なら MagicDNS ホスト名で Gateway を指すほうが、tailnet IP の変更に強いです。
- App で Remote 選択:遠隔ホストを入力すると、App は
ssh -N -L 18789:127.0.0.1:18789形の制御トンネルを再利用または再構築し、ローカルで Gateway 子プロセスは起動しません。 - node host の起動:Remote では App が node host を立ち上げ、遠隔 Gateway が Canvas、Camera、Screen、
system.runを呼べるようにします(Exec approvals は App 内ポリシーに従います)。 - CLI で突合:ローカルリポジトリ
apps/macosでswift run openclaw-mac connect --jsonとdiscover --timeout 3000 --jsonを実行し、App と同じ発見・握手経路で「トンネル問題」か「Gateway 設定問題」かを切り分けます。
macOS リモートアクセス(Direct ws/wss と実クライアント IP 報告):
https://docs.openclaw.ai/platforms/mac/remote
ssh -N -L 18789:127.0.0.1:18789 user@your-calmvps-node
curl -fsS http://127.0.0.1:18789/healthz
loopback 経由では node IP が 127.0.0.1 表示になる場合あり。実 IP が必要なら Direct ws/wss
05 18789 排障と技術パラメータ
双機構成では「接続できない」の多くはモデル供給元ではなく、制御トンネルとバージョン整合に集中します。引用しやすい固定値と現象別の対処を表にまとめます。
- 既定 Gateway WebSocket ポート:
18789。制御トンネルのローカル側も同番号を維持し、App は健全なトンネルを再利用します。 - LaunchAgent ラベル:
ai.openclaw.gateway(OPENCLAW_PROFILE利用時はai.openclaw.<profile>)。再起動はlaunchctl kickstart -k gui/$UID/ai.openclaw.gatewayです。 - Exec approvals:ローカル
system.run方針は~/.openclaw/exec-approvals.jsonにあり、遠隔 Gateway 設定とは分離されています。ノード移行時にバックアップを忘れないでください。
| 現象 | 優先確認 | 第一対応 |
|---|---|---|
| App が Gateway 到達不可 | SSH トンネル存続、18789 の占有 | App トンネル再起動、遠隔で lsof -i :18789 |
| healthz OK だが Channel オフライン | Gateway と CLI/App のバージョン | 両端 openclaw --version 揃え後 Gateway 再起動 |
| node IP が常に 127.0.0.1 | SSH トンネル経由か | 想定内。実 IP が必要なら Direct ws/wss(remote 文書参照) |
| Canvas/カメラ無応答 | node host 稼働、TCC 付与 | Remote で node host 確認、権限チェックリストを再実行 |
| Tailscale 発見失敗 | MagicDNS、ホスト名変更 | MagicDNS 名で再設定、tailnet IP の直書きを避ける |
実務例として、ある iOS チームは Gateway と Discord/Telegram チャネルを CALMVPS シンガポールの M4 24GB 月次ノードに置き、ローカル MBP は Node として screen.record と Xcode 補助スクリプトのみを担当しました。ピーク時は並列リソースで週次 Worker を追加し、Gateway は据え置きのままチャネルセッションを維持しています。ローカル単機で全負荷を背負うより、夜間アラートが明らかに減った、との報告があります。
06 M4 階層・ストレージ・契約の一覧
双機ではリソースを役割単位で割り当てます。整机一台のスペックで決めないことがコスト最適化の要点です。
- 遠隔 Gateway(CALMVPS):複数チャネルと Cron なら M4 24GB から。Hub やローカルモデル併用は M4 Pro。ディスクは 1TB で検証、2TB で本番が無難です。
- ローカル Node Mac:TCC と UI ツールが中心で、16GB で足りることが多いです。ボトルネックは権限と回線品質に寄ります。
- 並列リソース:一括バックフィルや並列ビルドは日次・週次の Worker に逃がし、Hub 階層を上げない方が総額で有利なことが多いです。
- 契約の組み合わせ:Gateway は月次・四半期で算力を固定し、スパイクは日次・週次の並列で吸収する混合が、単一の高配備長期契約より安く収まるケースが多いです。
Gateway を個人ノートや家庭 NAS に置くと、長接続のジッター、睡眠、Token の混在監査が弱い、という弱点が残ります。純粋な Linux VPS だけでは macOS TCC と Apple ツールチェーンがなく、Remote 双機の「ローカル Node」は代替できません。安定した 18789 制御面、リージョン横断の裸金属、再現可能な排障が必要なチームには、CALMVPS のマルチリージョン ベアメタル Macが Gateway 宿主として適しています。Apple Silicon 専有、24×7 稼働、約 120 秒の提供開始、突発負荷は並列ノードで吸収できます。ノード一覧と料金は CALMVPS 料金ページでご確認ください。