Les équipes qui font tourner openclaw gateway en shell interactif puis passent à un job launchd résident et voient aussitôt token_missing_config ou un tableau de bord mort combattent en général des processus supervisés qui n ont jamais hérité des exportations tapées après SSH et non un secret effacé. Ce guide vise les développeurs qui placent OpenClaw Gateway sept jours sur vingt-quatre heures sur un Mac mini cloud dédié loué KVMNODE: il sépare sessions interactives et jobs launchd, propose une fourche pour token_missing_config, associe plist EnvironmentVariables à une source unique openclaw.json et ordonne launchctl kickstart avec notes de retour arrière. Liens croisés vers la checklist installation, upgrade et accès distant et l échelle de diagnostic pour éviter trois articles qui répètent la même soupe de commandes.
01

2026 Pourquoi le shell marche et launchd échoue: cinq mythes d environnement

Les sessions de connexion humaines chargent des chaînes de profils qui étendent PATH, HOME et tout export temporaire pendant le diagnostic. Les agents et démons lancés par launchd partent d un environnement minimal et ne source pas ~/.zshrc. Quand OpenClaw résout le token Gateway il combine fichiers de configuration variables d environnement et répertoires state tout écart sous supervision apparaît comme token_missing_config ou signature voisine pendant que le processus sort en secondes ou que les sondes restent rouges. Les hôtes cloud dédiés aident car vous pouvez figer l ensemble de variables réellement vues par la supervision et l attacher aux tickets plutôt qu à l historique d export d un portable.

Si vous traquez aussi split brain ou clés d auth renommées après upgrade lisez la section migration dans upgrade et accès distant. Si l ordre des commandes est flou revenez à l échelle de diagnostic. Cet article évite de répéter l échelle mot pour mot et n ajoute que des embranchements propres à launchd.

01

Croire que la plist hérite des exports du terminal:launchd n extrait pas automatiquement les variables de votre session SSH.

02

Ne stocker le token que dans des profils shell:peut marcher par intermittence pour des hybrides cron échoue de façon fiable pour des agents purs.

03

Mélanger domaine root et domaine utilisateur plist:l utilisateur Unix propriétaire de openclaw.json doit correspondre au UserName de la plist sinon les chemins bifurquent silencieusement.

04

Laisser ProgramArguments sur une vieille binaire après upgrade:ressemble à une panne token mais exécute la mauvaise build.

05

Blâmer le CPU sur un hôte M4 Pro distant:les échecs de lecture token corrèlent rarement de façon monotone avec les courbes CPU.

Après ces limites le choix de région relève du socle toujours allumé configuration persistante ici nous ne corrigeons que les lectures de configuration supervisées.

Le multiplexage SSH ajoute du bruit: les humains atteignent le tableau de bord via ports forwardés en session interactive tandis que le démon se lie à une autre vue loopback ou utilisateur donc vert côté humain rouge côté moniteurs. Documentez adresses d écoute modes bind et contrôles token sur une page runbook et marquez forwards temporaires contre topologie plist de production.

Si le même hôte exécute aussi CI self-hosted ou Archives lourdes les pics CPU et la rotation des logs peuvent noyer les lignes critiques dans la même fenêtre même quand les tokens sont sains. Réservez une fenêtre de logs plus calme ou baissez la verbosité des composants non liés pendant l incident.

Quand la finance demande d acheter un autre SKU cœur répondez d abord avec des preuves d environnement: joignez le diff env supervisé et l estampe de chemin plist au ticket pour montrer une dérive de supervision plutôt qu une famine de calcul.

02

Matrice: token dans variables plist contre openclaw.json seul et séparer split brain

Source unique signifie que les post-mortems peuvent dire en une phrase qui a lu quel chemin. Compromis pratique: secrets dans openclaw.json protégé par permissions la plist n injecte que des locateurs non secrets comme racine state ou nom de profil évitant la duplication de longs tokens. Quand CLI et daemon lisent des copies différentes les logs ressemblent à split brain comparez donc les estampes de chemin openclaw doctor avant réinstallation.

Stratégieadéquationrisquenote ops
openclaw.json seulnœud loué mono-utilisateurchmod lâche fuitecoupler avec utilisateur Unix dédié
plist EnvironmentVariables pour cheminsracine state à figerfautes de frappe échouent durproche des blocs env explicites systemd
token clair dupliqué des deux côtéstriage courtrotation oublie un côtéinterdit en état stable
signature logcause probableaction suivante
token_missing_config seulement sous launchdsupervision manque clés ou cheminslaunchctl print contre plist et UserName
estampes version CLI et daemon diffèrentsplit brainsuivre section réparation PATH de l échelle
interactif et sans surveillance échouent tous deuxconfig cassée ou clés renomméeschecklist migration token dans l article upgrade

Premier principe launchd: imprimez l environnement supervisé avant de débattre de la valeur du token.

Couplez les sondes sans surveillance en alignant les clés shell des sondes avec les clés plist pour que les scripts de minuit restent verts pendant que launchd ne rougit que lorsque c est justifié.

Quand gateway.mode remote se mélange à des résidents locaux ajoutez une seconde table env client contre env plist serveur car les clients distants lisent d autres chemins token que les démons cloud coller les deux logs dans un ticket sans rôles et vous classerez des trous côté client comme trous serveur.

Des audits semestriels devraient repérer des plists pointant encore vers d anciens répertoires home après départ de prestataires une telle dérive casse rarement les builds mais peut faire réapparaître des boucles token après redémarrage silencieux.

03

plist EnvironmentVariables et launchctl: repro minimale et squelette XML

Avant de toucher aux plists de production planifiez un LaunchAgent jetable qui exécute /bin/sh -lc 'env | sort' pour capturer le jeu de clés supervisé réel puis remplacez par de vrais arguments openclaw gateway. Sur nœuds loués le vide habituel est PATH sans Homebrew ou préfixe npm global donnant succès doctor et échec démon. Gelez un PATH minimal dans le ticket plutôt que d hériter de dizaines de préfixes laptop.

XML
<key>EnvironmentVariables</key>
<dict>
  <key>PATH</key>
  <string>/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin</string>
  <key>OPENCLAW_STATE_DIR</key>
  <string>/Users/ocagent/.openclaw</string>
</dict>

Note:gardez les vrais secrets dans openclaw.json sous gateway.auth via les outils supportés l extrait ne montre que des locateurs.

Après modifications utilisez launchctl bootout puis bootstrap ou l équivalent domaine kickstart -k pour que d anciens processus ne gardent pas de vieux caches env. Si Gateway lit encore un vieux token suspectez un second doublon plist dans le même domaine utilisateur et dédupliquez avec launchctl list | grep -i openclaw.

Pour Node géré par nvm ou fnm épinglez des chemins absolus node et openclaw dans la plist plutôt que ce que which résout en shell sinon de petites bumps d image produisent décalage doctor OK daemon KO.

Si vous avez créé un utilisateur système dédié pour Gateway alignez WorkingDirectory et HOME implicite sur ce home pour que les chemins relatifs ne se résolvent pas vers des dossiers temporaires vides qui rebondissent en signatures token manquant.

04

Six étapes de la démo shell à une résidence launchd auditable

01

Geler la repro:capturez env | sort pour succès interactif et supervision en échec plus texte openclaw gateway status.

02

Comparer launchctl print:confirmez Label ProgramArguments UserName WorkingDirectory.

03

Unifier la source unique:réécrivez openclaw.json avec outillage supporté retirez les secrets dupliqués de la plist.

04

Remplir EnvironmentVariables:au minimum PATH et racine state clés binaires node explicites si besoin.

05

kickstart et deux cents premières lignes de log:recoupez avec doctor dans l article échelle.

06

Runbook plus ligne de changement:notez région et SKU proche versus lointain M4 Pro alignez champs d achat sur la page commander.

05

Faits citables: domaine plist appariement logs budget faux positifs M4 Pro

A

Domaine agent contre daemon:le propriétaire filesystem de openclaw.json doit correspondre à l identité plist sinon lectures et écritures divergent.

B

token manquant sur la même trame qu une sortie instantanée:suspectez l environnement avant quota API amont.

C

Région lointaine M4 Pro:une concurrence de sondes légèrement plus haute ne doit pas masquer de mauvais chemins token intégrez des seuils dans les scripts.

Avertissement:coller des tokens dans le chat ou des notes partagées est un risque supply chain préférez un coffre ou des fichiers restreints.

Garder les tokens seulement dans l historique shell ou des exports temporaires démo bien mais rend les post-mortems sept sur vingt-quatre irréproducibles. Aligner plist avec une openclaw.json protégée unique sur nœuds cloud Apple Silicon dédiés transforme Gateway en composant de production auditable. Pour les équipes qui ont besoin de tableaux de bord stables et chemins de sondes à travers Singapour US Est ou autres régions la location Mac mini cloud KVMNODE est en général le meilleur ajustement: isolation bare metal géographie transparente paliers de configuration fenêtres de location élastiques champs lisibles finance pour ensembles d environnement supervisés. Poursuivez avec tarifs et centre d aide pour SKU et connectivité.

Après mise en production ajoutez horodatage du dernier kickstart réussi label plist estampe version OpenClaw à côté de CMDB ou tags coût pour que la finance sache si le nœud porte encore le rôle Gateway au lieu de deviner depuis le hostname.

Si vous prévoyez plusieurs Gateways expérimentaux sur un même hôte loué donnez à chaque instance son répertoire state et sa plage de ports et whitelistez au pare-feu pour que des collisions de ports accidentelles ne soient pas lues comme fautes token.