macOS コンパニオンアプリ

リモートコントロール

このフローにより、macOSアプリは別のホスト(デスクトップ/サーバー)で実行されているOpenClawゲートウェイの完全なリモートコントロールとして機能します。これはアプリの Remote over SSH(リモート実行)機能です。すべての機能(ヘルスチェック、Voice Wake転送、Web Chat)は、設定 → 一般 からの同じリモートSSH構成を再利用します。

モード

  • ローカル(このMac): すべてがラップトップ上で実行されます。SSHは関与しません。
  • Remote over SSH(デフォルト): OpenClawコマンドはリモートホスト上で実行されます。macアプリは -o BatchMode と選択したID/キー、およびローカルポートフォワードを使用してSSH接続を開きます。
  • Remote direct (ws/wss): SSHトンネルはありません。macアプリはゲートウェイURLに直接接続します(例:Tailscale Serveまたは公開HTTPSリバースプロキシ経由)。

リモートトランスポート

リモートモードは2つのトランスポートをサポートします:

  • SSHトンネル(デフォルト): ssh -N -L ... を使用してゲートウェイポートをlocalhostに転送します。トンネルがループバックであるため、ゲートウェイはノードのIPを 127.0.0.1 として認識します。
  • ダイレクト (ws/wss): ゲートウェイURLに直接接続します。ゲートウェイは実際のクライアントIPを認識します。

リモートホストでの前提条件

  1. Node + pnpmをインストールし、OpenClaw CLIをビルド/インストールします(pnpm install && pnpm build && pnpm link --global)。
  2. 非対話型シェルで openclaw がPATH上にあることを確認します(必要に応じて /usr/local/bin または /opt/homebrew/bin にシンボリックリンクを作成)。
  3. キー認証でSSHを開きます。LAN外での安定した到達性には Tailscale IPを推奨します。

macOSアプリのセットアップ

  1. 設定 → 一般 を開きます。
  2. OpenClaw runs の下で、Remote over SSH を選択し、以下を設定します:
    • トランスポート: SSHトンネル または ダイレクト (ws/wss)
    • SSHターゲット: user@host(オプションで :port)。
      • ゲートウェイが同じLAN上にありBonjourをアドバタイズしている場合、検出されたリストから選択してこのフィールドを自動入力できます。
    • ゲートウェイURL(ダイレクトのみ): wss://gateway.example.ts.net(ローカル/LANの場合は ws://...)。
    • IDファイル(詳細設定): キーへのパス。
    • プロジェクトルート(詳細設定): コマンドに使用されるリモートチェックアウトパス。
    • CLIパス(詳細設定): 実行可能な openclaw エントリーポイント/バイナリへのオプションパス(アドバタイズ時に自動入力)。
  3. Test remote を押します。成功は、リモートの openclaw status --json が正しく実行されたことを示します。失敗は通常、PATH/CLIの問題を意味します;終了コード127は、リモートでCLIが見つからないことを意味します。
  4. ヘルスチェックとWeb Chatは、このSSHトンネルを介して自動的に実行されるようになります。

Web Chat

  • SSHトンネル: Web Chatは、転送されたWebSocket制御ポート(デフォルト18789)を介してゲートウェイに接続します。
  • ダイレクト (ws/wss): Web Chatは設定されたゲートウェイURLに直接接続します。
  • 別個のWebChat HTTPサーバーはもうありません。

権限

  • リモートホストには、ローカルと同じTCC承認(自動化、アクセシビリティ、画面収録、マイク、音声認識、通知)が必要です。そのマシンでオンボーディングを実行して一度付与します。
  • ノードは、エージェントが利用可能なものを知るために、node.list / node.describe を介して権限状態をアドバタイズします。

セキュリティに関する注意

  • リモートホストではループバックバインドを優先し、SSHまたはTailscale経由で接続します。
  • SSHトンネリングは厳格なホストキーチェックを使用します;ホストキーが ~/.ssh/known_hosts に存在するように最初に信頼します。
  • ゲートウェイを非ループバックインターフェースにバインドする場合は、トークン/パスワード認証を要求してください。
  • セキュリティ および Tailscale を参照してください。

WhatsAppログインフロー(リモート)

  • リモートホスト上で openclaw channels login --verbose実行します。携帯電話のWhatsAppでQRコードをスキャンします。
  • 認証が期限切れになった場合は、そのホスト上でログインを再実行します。ヘルスチェックはリンクの問題を表面化させます。

トラブルシューティング

  • 終了コード127 / 見つかりません: 非ログインシェル用のPATHに openclaw がありません。/etc/paths、シェルのrcファイルに追加するか、/usr/local/bin//opt/homebrew/bin にシンボリックリンクを作成してください。
  • ヘルスプローブ失敗: SSHの到達性、PATH、およびBaileysがログインしているか(openclaw status --json)を確認してください。
  • Web Chatが固まる: ゲートウェイがリモートホスト上で実行されており、転送ポートがゲートウェイWSポートと一致していることを確認してください;UIは正常なWS接続を必要とします。
  • ノードIPが127.0.0.1と表示される: SSHトンネルでは予期された動作です。ゲートウェイに実際のクライアントIPを認識させたい場合は、トランスポートを**ダイレクト (ws/wss)**に切り替えてください。
  • Voice Wake: トリガーフレーズはリモートモードで自動的に転送されます;別個のフォワーダーは必要ありません。

通知サウンド

スクリプトから openclawnode.invoke を使用して、通知ごとにサウンドを選択します。例:

openclaw nodes notify --node <id> --title "Ping" --body "Remote gateway ready" --sound Glass

アプリにはもはやグローバルな「デフォルトサウンド」トグルはありません;呼び出し側はリクエストごとにサウンド(またはなし)を選択します。

macOS 権限macOS 署名