リモート OpenClaw(macOS ⇄ リモートホスト)
このフローでは、macOS アプリが別のホスト(デスクトップ/サーバー)で稼働している OpenClaw ゲートウェイの完全なリモートコントローラーとして動作します。これはアプリの SSH 経由のリモート接続(リモート実行)機能です。ヘルスチェック、Voice Wake 転送、Web Chat を含むすべての機能は、設定 → 一般 で構成された同一のリモート SSH 設定を再利用します。 アプリのリモートオーバーSSH (リモート実行) 機能です。 すべての機能 — ヘルスチェック、音声ウェイク転送、および Web チャット— Settings → General から同じリモートの SSH 構成を再利用します。 アプリのリモートオーバーSSH (リモート実行) 機能です。 すべての機能 — ヘルスチェック、音声ウェイク転送、および Web チャット— Settings → General から同じリモートの SSH 構成を再利用します。モード
- ローカル(この Mac): すべてがノートパソコン上で実行されます。SSH は使用しません。 SSHは参加していません。 SSHは参加していません。
- SSH 経由のリモート接続(デフォルト): OpenClaw のコマンドはリモートホスト上で実行されます。mac アプリは
-o BatchModeに加えて選択した ID/キーを用い、ローカルのポートフォワード付きで SSH 接続を開きます。 SSH 経由のリモート接続(デフォルト): OpenClaw のコマンドはリモートホスト上で実行されます。mac アプリは-o BatchModeに加えて選択した ID/キーを用い、ローカルのポートフォワード付きで SSH 接続を開きます。 Mac アプリは-o BatchModeと SSH 接続を開きます。加えて、選択したアイデンティティ/キーとローカルポートフォワードを使用します。 - リモートダイレクト(ws/wss): SSHトンネルはありません。 Mac アプリはゲートウェイ URL に直接接続します(例えば、Tailscale Serve またはパブリック HTTPS リバースプロキシ経由)。 Mac アプリはゲートウェイ URL に直接接続します(例えば、Tailscale Serve またはパブリック HTTPS リバースプロキシ経由)。
リモート転送方式
リモートモードは 2 種類の転送方式をサポートします。- SSH トンネル(デフォルト):
ssh -N -L ...を使用してゲートウェイのポートを localhost にフォワードします。トンネルが loopback であるため、ゲートウェイからはノードの IP が127.0.0.1として見えます。 SSH トンネル(デフォルト):ssh -N -L ...を使用してゲートウェイのポートを localhost にフォワードします。トンネルが loopback であるため、ゲートウェイからはノードの IP が127.0.0.1として見えます。 トンネルがループバックされているため、ゲートウェイはノードのIPを127.0.0.1として表示します。 - 直接接続(ws/wss): ゲートウェイ URL に直接接続します。ゲートウェイには実際のクライアント IP が表示されます。 直接接続(ws/wss): ゲートウェイ URL に直接接続します。ゲートウェイには実際のクライアント IP が表示されます。 ゲートウェイは実際のクライアントIPを見ます。
リモートホスト側の前提条件
- Node + pnpm をインストールし、OpenClaw CLI をビルド/インストールします(
pnpm install && pnpm build && pnpm link --global)。 - 非対話シェルでも
openclawが PATH 上にあることを確認します(必要に応じて/usr/local/binや/opt/homebrew/binにシンボリックリンクします)。 - SSHをキー認証で開きます。 LAN外の安定した到達性のためには、Tailscale IPをお勧めします。 LAN外の安定した到達性のためには、Tailscale IPをお勧めします。
macOS アプリのセットアップ
- 設定 → 一般 を開きます。
- OpenClaw の実行場所 で SSH 経由のリモート接続 を選択し、以下を設定します。
- 転送方式: SSH トンネル または 直接接続(ws/wss)。
- SSH 接続先:
user@host(任意で:port)。- ゲートウェイが同一 LAN 上にあり Bonjour をアドバタイズしている場合、検出された一覧から選択すると自動入力されます。
- Gateway URL(直接接続のみ):
wss://gateway.example.ts.net(ローカル/LAN の場合はws://...)。 - ID ファイル(高度な設定): 使用するキーへのパス。
- プロジェクトルート(高度な設定): コマンド実行に使用されるリモートのチェックアウトパス。
- CLI パス(高度な設定): 実行可能な
openclawエントリーポイント/バイナリへの任意のパス(アドバタイズされている場合は自動入力)。
- テストをクリックします。 テストをクリックします。 リモートをテスト をクリックします。成功すれば、リモートの
openclaw status --jsonが正しく実行できていることを示します。失敗する場合は PATH/CLI の問題が原因であることが多く、exit 127 は CLI がリモートで見つからないことを意味します。 失敗は通常PATH/CLIの問題を意味します。127出口はCLIがリモートで見つからないことを意味します。 失敗は通常PATH/CLIの問題を意味します。127出口はCLIがリモートで見つからないことを意味します。 - 以後、ヘルスチェックと Web Chat は自動的にこの SSH トンネル経由で実行されます。
ウェブチャット
- SSH トンネル: Web Chat はフォワードされた WebSocket 制御ポート(デフォルト 18789)経由でゲートウェイに接続します。
- 直接接続(ws/wss): Web Chat は設定されたゲートウェイ URL に直接接続します。
- WebChat 用の個別 HTTP サーバーはもはや存在しません。
権限
- リモートホストにはローカルと同じ TCC 承認(オートメーション、アクセシビリティ、画面収録、マイク、音声認識、通知)が必要です。一度そのマシンでオンボーディングを実行して付与してください。 そのマシンでオンボーディングを実行して、一度それらを許可します。
- ノードは
node.list/node.describeを通じて権限状態をアドバタイズし、エージェントが利用可能な機能を把握できるようにします。
セキュリティに関する注記
- リモートホストでは loopback バインドを優先し、SSH または Tailscale 経由で接続してください。
- ゲートウェイを非 loopback インターフェースにバインドする場合は、トークン/パスワード認証を必須にしてください。
- Security および Tailscale を参照してください。
WhatsApp ログインフロー(リモート)
openclaw channels login --verboseを リモートホスト上で 実行します。スマートフォンの WhatsApp で QR をスキャンしてください。openclaw channels login --verboseを リモートホスト上で 実行します。スマートフォンの WhatsApp で QR をスキャンしてください。 お使いの携帯電話のWhatsAppでQRをスキャンします。- 認証が失効した場合は、そのホストで再度ログインを実行します。ヘルスチェックでリンクの問題が表示されます。 健康チェックは問題を表面化させます。
トラブルシューティング
- exit 127 / not found:
openclawが非ログインシェルの PATH に含まれていません。/etc/paths、シェルの rc、または/usr/local/bin//opt/homebrew/binへのシンボリックリンクに追加してください。/etc/paths、シェルrc、またはシンボリックリンクを/usr/local/bin//opt/homebrew/binに追加します。/etc/paths、シェルrc、またはシンボリックリンクを/usr/local/bin//opt/homebrew/binに追加します。 - ヘルスプローブ失敗: SSH の到達性、PATH、Baileys がログイン済みであること(
openclaw status --json)を確認してください。 - Web Chat が停止する: リモートホストでゲートウェイが稼働していること、およびフォワードされたポートがゲートウェイの WS ポートと一致していることを確認してください。UI は正常な WS 接続を必要とします。
- Node IP shows 127.0.0.1: SSH トンネルで期待されます。 ゲートウェイに実際のクライアントIPを表示させたい場合は、Transport を Direct (ws/wss) に切り替えます。 ゲートウェイに実際のクライアントIPを表示させたい場合は、Transport を Direct (ws/wss) に切り替えます。
- Voice Wake: トリガーフレーズはリモートモードでは自動的に転送されます。個別のフォワーダーは不要です。
通知サウンド
openclaw および node.invoke を使ったスクリプトから、通知ごとにサウンドを選択します。例: