macOS companion app
Ciclo de vida do Gateway no macOS
O app para macOS gerencia o Gateway via launchd por padrão e não
inicia o Gateway como um processo filho. Primeiro, ele tenta se conectar a um
Gateway já em execução na porta configurada; se nenhum estiver acessível, ele
habilita o serviço launchd por meio da CLI externa openclaw (sem runtime
incorporado). Isso proporciona inicialização automática confiável ao iniciar
uma sessão e reinicialização em caso de falhas.
O modo de processo filho (Gateway iniciado diretamente pelo app) não está em uso atualmente. Se precisar de uma integração mais estreita com a interface, execute o Gateway manualmente em um terminal.
Comportamento padrão (launchd)
- O app instala um LaunchAgent por usuário, identificado como
ai.openclaw.gateway(ouai.openclaw.<profile>ao usar--profile/OPENCLAW_PROFILE). - Quando o modo Local está habilitado, o app garante que o LaunchAgent esteja carregado e inicia o Gateway, se necessário.
- Os logs são gravados no caminho de log do Gateway do launchd (visível em Debug Settings).
Comandos comuns:
launchctl kickstart -k gui/$UID/ai.openclaw.gatewaylaunchctl bootout gui/$UID/ai.openclaw.gatewaySubstitua o identificador por ai.openclaw.<profile> ao executar um perfil nomeado.
Builds de desenvolvimento não assinadas
scripts/restart-mac.sh --no-sign é usado para builds locais rápidas sem chaves de
assinatura. Para impedir que o launchd aponte para um binário de retransmissão não assinado, ele grava
~/.openclaw/disable-launchagent.
Execuções assinadas de scripts/restart-mac.sh removem essa substituição se o marcador estiver
presente. Para redefinir manualmente:
rm ~/.openclaw/disable-launchagentModo somente conexão
Para impedir que o app para macOS instale ou gerencie o launchd, inicie-o com
--attach-only (ou --no-launchd). Isso define
~/.openclaw/disable-launchagent, fazendo com que o app apenas se conecte a um Gateway já em
execução. Alterne o mesmo comportamento em Debug Settings.
Modo remoto
O modo remoto nunca inicia um Gateway local. O app usa um túnel SSH para o host remoto e se conecta por esse túnel.
Por que preferimos o launchd
- Inicialização automática ao iniciar uma sessão.
- Semântica integrada de reinicialização/KeepAlive.
- Logs e supervisão previsíveis.
Se um verdadeiro modo de processo filho voltar a ser necessário, ele deverá ser documentado como um modo separado, explícito e exclusivo para desenvolvimento.