macOS上のGatewayライフサイクル
macOS appはデフォルトで launchd経由でGatewayを管理し、Gatewayを子プロセスとして起動しません。まず、設定されたポート上ですでに実行中のGatewayへの接続を試みます。到達可能なものがなければ、外部のopenclaw CLI経由でlaunchd serviceを有効化します(埋め込みランタイムは使いません)。これにより、ログイン時の確実な自動起動と、クラッシュ時の再起動が実現されます。
子プロセスモード(appがGatewayを直接起動する方式)は、現在は使われていません。
UIとのより密な結合が必要な場合は、terminalでGatewayを手動実行してください。
デフォルトの挙動(launchd)
- appは、ユーザーごとのLaunchAgent
ai.openclaw.gatewayをインストールします (--profile/OPENCLAW_PROFILE使用時はai.openclaw.<profile>。legacyなcom.openclaw.*もサポートされます)。 - Local modeが有効な場合、appはLaunchAgentがロードされていることを確認し、 必要に応じてGatewayを起動します。
- ログはlaunchdのgateway log pathに書き込まれます(Debug Settingsで確認できます)。
ai.openclaw.<profile> に置き換えてください。
署名なしの開発ビルド
scripts/restart-mac.sh --no-sign は、署名キーがないときの高速なローカルビルド用です。launchdが署名なしのrelay binaryを指さないように、次を行います。
~/.openclaw/disable-launchagentを書き込む
scripts/restart-mac.sh を実行すると、このマーカーが存在する場合はこの上書きを解除します。手動でリセットするには:
接続専用モード
macOS appが launchdを一切インストールも管理もしない ようにするには、--attach-only(または --no-launchd)を付けて起動してください。これにより ~/.openclaw/disable-launchagent が設定され、appはすでに実行中のGatewayに接続するだけになります。同じ挙動はDebug Settingsでも切り替えられます。
Remote mode
Remote modeでは、ローカルGatewayは決して起動しません。appは remote hostへのSSH tunnelを使い、そのtunnel経由で接続します。launchdを優先する理由
- ログイン時の自動起動。
- 組み込みの再起動/KeepAliveセマンティクス。
- 予測しやすいログと監督。