macOS上のGatewayライフサイクル
macOSアプリはデフォルトでlaunchd経由でGatewayを管理し、Gatewayを子プロセスとして生成しません。最初に設定されたポートで既に実行中のGatewayに接続を試み、到達できない場合は、外部openclaw CLI経由でlaunchdサービスを有効化します(埋め込みランタイムなし)。これにより、ログイン時の信頼性の高い自動起動とクラッシュ時の再起動が可能になります。
子プロセスモード(アプリが直接Gatewayを生成)は今日では使用されていません。 UIとのより密な結合が必要な場合は、ターミナルで手動でGatewayを実行してください。
デフォルト動作(launchd)
- アプリはbot.molt.gatewayというラベルのユーザー毎のLaunchAgentをインストールします (--profile/OPENCLAW_PROFILEを使用する場合はbot.molt.<profile>; レガシーのcom.openclaw.*はサポートされています)。
- ローカルモードが有効な場合、アプリはLaunchAgentがロードされていることを確認し、必要に応じてGatewayを起動します。
- ログはlaunchd Gatewayログパスに書き込まれます(Debug Settingsで確認可能)。
一般的なコマンド:
launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway
名前付きプロファイルを実行する場合は、ラベルをbot.molt.<profile>に置き換えてください。
署名なしdev builds
scripts/restart-mac.sh --no-signは、署名キーを持っていない場合の高速ローカルビルド用です。launchdが署名なしのrelayバイナリを指すのを防ぐために:
- ~/.openclaw/disable-launchagentを書き込みます。
scripts/restart-mac.shの署名付き実行は、マーカーが存在する場合にこのオーバーライドをクリアします。手動でリセットするには:
rm ~/.openclaw/disable-launchagent
Attach-onlyモード
macOSアプリにlaunchdをインストールまたは管理させないように強制するには、--attach-only(または--no-launchd)で起動します。これにより~/.openclaw/disable-launchagentが設定され、アプリは既に実行中のGatewayにのみ接続します。Debug Settingsで同じ動作を切り替えることができます。
リモートモード
リモートモードはローカルGatewayを起動しません。アプリはリモートホストへのSSHトンネルを使用し、そのトンネル経由で接続します。
なぜlaunchdを優先するのか
- ログイン時の自動起動。
- 組み込みの再起動/KeepAliveセマンティクス。
- 予測可能なログと監督。
真の子プロセスモードが再び必要になった場合は、別の明示的なdev専用モードとして文書化する必要があります。