macOS companion app
Ciclo di vita del Gateway su macOS
L'app macOS gestisce il Gateway tramite launchd per impostazione predefinita e non avvia
il Gateway come processo figlio. Prima prova a collegarsi a un Gateway già in esecuzione
sulla porta configurata; se nessuno è raggiungibile, abilita il servizio launchd
tramite la CLI openclaw esterna (senza runtime incorporato). Questo offre
avvio automatico affidabile all'accesso e riavvio in caso di crash.
La modalità con processo figlio (Gateway avviato direttamente dall'app) non è in uso oggi. Se ti serve un accoppiamento più stretto con l'interfaccia utente, esegui manualmente il Gateway in un terminale.
Comportamento predefinito (launchd)
- L'app installa un LaunchAgent per utente con etichetta
ai.openclaw.gateway(oai.openclaw.<profile>quando si usa--profile/OPENCLAW_PROFILE; il formato legacycom.openclaw.*è supportato). - Quando la modalità locale è abilitata, l'app assicura che il LaunchAgent sia caricato e avvia il Gateway se necessario.
- I log vengono scritti nel percorso dei log del gateway launchd (visibile nelle Impostazioni di debug).
Comandi comuni:
launchctl kickstart -k gui/$UID/ai.openclaw.gateway
launchctl bootout gui/$UID/ai.openclaw.gateway
Sostituisci l'etichetta con ai.openclaw.<profile> quando esegui un profilo denominato.
Build di sviluppo non firmate
scripts/restart-mac.sh --no-sign serve per build locali rapide quando non hai
chiavi di firma. Per evitare che launchd punti a un binario relay non firmato:
- Scrive
~/.openclaw/disable-launchagent.
Le esecuzioni firmate di scripts/restart-mac.sh cancellano questa sostituzione se il marker è
presente. Per reimpostare manualmente:
rm ~/.openclaw/disable-launchagent
Modalità solo collegamento
Per forzare l'app macOS a non installare né gestire mai launchd, avviala con
--attach-only (o --no-launchd). Questo imposta ~/.openclaw/disable-launchagent,
quindi l'app si collega solo a un Gateway già in esecuzione. Puoi attivare lo stesso
comportamento nelle Impostazioni di debug.
Modalità remota
La modalità remota non avvia mai un Gateway locale. L'app usa un tunnel SSH verso l'host remoto e si connette tramite quel tunnel.
Perché preferiamo launchd
- Avvio automatico all'accesso.
- Semantica di riavvio/KeepAlive integrata.
- Log e supervisione prevedibili.
Se una vera modalità con processo figlio dovesse servire di nuovo, dovrebbe essere documentata come una modalità separata, esplicita e riservata allo sviluppo.