macOS companion app
Жизненный цикл Gateway в macOS
Приложение macOS по умолчанию управляет Gateway через launchd и не
запускает Gateway как дочерний процесс. Сначала оно пытается подключиться к
уже запущенному Gateway на настроенном порте; если подключиться не удаётся, оно
включает службу launchd через внешний CLI openclaw (без встроенной
среды выполнения). Это обеспечивает надёжный автоматический запуск при входе в систему и перезапуск после сбоев.
Режим дочернего процесса (Gateway запускается непосредственно приложением) сейчас не используется. Если требуется более тесная интеграция с пользовательским интерфейсом, запустите Gateway вручную в терминале.
Поведение по умолчанию (launchd)
- Приложение устанавливает пользовательский LaunchAgent с меткой
ai.openclaw.gateway(илиai.openclaw.<profile>при использовании--profile/OPENCLAW_PROFILE). - Когда включён локальный режим, приложение обеспечивает загрузку LaunchAgent и при необходимости запускает Gateway.
- Журналы записываются по пути журнала Gateway службы launchd (его можно посмотреть в настройках отладки).
Часто используемые команды:
launchctl kickstart -k gui/$UID/ai.openclaw.gatewaylaunchctl bootout gui/$UID/ai.openclaw.gatewayПри использовании именованного профиля замените метку на ai.openclaw.<profile>.
Неподписанные сборки для разработки
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.
- Предсказуемое ведение журналов и управление процессом.
Если настоящий режим дочернего процесса когда-либо снова понадобится, его следует документировать как отдельный явный режим только для разработки.