macOS上のGatewayライフサイクル

macOSアプリはデフォルトでlaunchd経由でGatewayを管理し、Gatewayを子プロセスとして起動しません。まず設定済みポートで稼働中のGatewayへの接続を試み、到達できない場合は外部のopenclaw CLI(組み込みランタイムなし)を使ってlaunchdサービスを有効化します。これにより、ログイン時の自動起動とクラッシュ時の再起動が確実に行われます。

子プロセスモード(アプリが直接Gatewayを起動)は現在使用されていません。UIとの密結合が必要な場合は、ターミナルでGatewayを手動実行してください。

デフォルトの動作(launchd)

  • アプリはユーザーごとのLaunchAgentをインストールします。ラベル:ai.openclaw.gateway--profile/OPENCLAW_PROFILE使用時はai.openclaw.<profile>、レガシーのcom.openclaw.*もサポート)。
  • ローカルモードが有効な場合、アプリはLaunchAgentがロードされていることを確認し、必要に応じてGatewayを起動。
  • ログはlaunchdのGatewayログパスに書き込まれます(デバッグ設定で確認可能)。

よく使うコマンド:

launchctl kickstart -k gui/$UID/ai.openclaw.gateway
launchctl bootout gui/$UID/ai.openclaw.gateway

名前付きプロファイル実行時はラベルをai.openclaw.<profile>に置き換えてください。

未署名のdevビルド

scripts/restart-mac.sh --no-signは署名キーがない場合のローカルビルドの高速化用です。launchdが未署名のリレーバイナリを参照するのを防ぐため、以下を行います:

  • ~/.openclaw/disable-launchagentを書き込む。

署名ありのscripts/restart-mac.sh実行は、このマーカーが存在すればオーバーライドをクリアします。手動でリセットするには:

rm ~/.openclaw/disable-launchagent

アタッチ専用モード

macOSアプリがlaunchdのインストールや管理を一切行わないようにするには、--attach-only(または--no-launchd)で起動します。これにより~/.openclaw/disable-launchagentが設定され、アプリは既に稼働中のGatewayにのみ接続します。デバッグ設定で同じ動作を切り替えることもできます。

リモートモード

リモートモードではローカルGatewayを起動しません。アプリはリモートホストへのSSHトンネルを使用し、そのトンネル経由で接続します。

launchdを選ぶ理由

  • ログイン時に自動起動。
  • 組み込みのリスタート/KeepAliveセマンティクス。
  • 予測可能なログと監視。

子プロセスモードが再び必要になった場合は、明示的な開発専用モードとして別途ドキュメント化すべきです。