Жизненный цикл Gateway (шлюза) на macOS¶
Приложение для macOS по умолчанию управляет Gateway (шлюзом) через launchd и не запускает
Gateway как дочерний процесс. Сначала оно пытается подключиться к уже запущенному
Gateway на настроенном порту; если доступного экземпляра нет, приложение включает сервис launchd
через внешний CLI openclaw (без встроенного runtime). Это обеспечивает надёжный автозапуск
при входе в систему и перезапуск при сбоях.
Режим дочернего процесса (когда Gateway запускается непосредственно приложением) в настоящее время не используется. Если требуется более тесная связка с UI, запускайте Gateway вручную в терминале.
Поведение по умолчанию (launchd)¶
- Приложение устанавливает LaunchAgent для пользователя с меткой
bot.molt.gateway(илиbot.molt.<profile>при использовании--profile/OPENCLAW_PROFILE; поддерживается устаревшийcom.openclaw.*). - Когда включён локальный режим, приложение гарантирует, что LaunchAgent загружен, и при необходимости запускает Gateway.
- Логи записываются по пути логов gateway для launchd (видно в Debug Settings).
Часто используемые команды:
launchctl kickstart -k gui/$UID/bot.molt.gateway
launchctl bootout gui/$UID/bot.molt.gateway
Замените метку на bot.molt.<profile> при запуске именованного профиля.
Неподписанные dev‑сборки¶
scripts/restart-mac.sh --no-sign предназначен для быстрых локальных сборок, когда у вас нет
ключей подписи. Чтобы предотвратить указание launchd на неподписанный бинарник relay, он:
- Выполняет запись
~/.openclaw/disable-launchagent.
Подписанные запуски scripts/restart-mac.sh очищают это переопределение, если маркер
присутствует. Для ручного сброса:
rm ~/.openclaw/disable-launchagent
Режим только подключения¶
Чтобы принудительно заставить приложение для macOS никогда не устанавливать и не управлять launchd, запускайте его с
--attach-only (или --no-launchd). Это устанавливает ~/.openclaw/disable-launchagent,
поэтому приложение только подключается к уже запущенному Gateway. Аналогичное
поведение можно переключить в Debug Settings.
Удалённый режим¶
Удалённый режим никогда не запускает локальный Gateway. Приложение использует SSH‑туннель к удалённому хосту и подключается через этот туннель.
Почему мы предпочитаем launchd¶
- Автозапуск при входе в систему.
- Встроенная семантика перезапуска/KeepAlive.
- Предсказуемые логи и надзор.
Если когда‑нибудь снова понадобится настоящий режим дочернего процесса, его следует задокументировать как отдельный, явный режим только для разработки.