Les équipes distantes louent des Mac mini M4 pour des passerelles OpenClaw et voient encore « ça marche dans ma session SSH » diverger de ce que launchd lit au démarrage à froid. Cette matrice du 2026-05-11 empile chaque surface réelle—LaunchAgent EnvironmentVariables, import optionnel OPENCLAW_LOAD_SHELL_ENV, .env du dépôt, dotfiles utilisateur—puis prescrit des rituels de reload pour que les rotations d’identifiants ne ressuscitent pas silencieusement d’anciennes URL fournisseur après un déploiement nocturne.
À lire avec secrets Keychain contre env en clair, installation LaunchAgent et répertoires d’état, et guide backoff 429 sur tool-invoke quand les reloads coïncident avec des pics d’automatisation.
Pourquoi « le même plist » pointe vers un autre hôte API après la pause déjeuner
Les shells héritent du PATH Homebrew, des hooks direnv et de surcharges transitoires OPENAI_BASE_URL qui n’atteignent pas les enfants LaunchAgent sans codification plist. Les opérateurs exportent en SSH, redémarrent à la main et déclarent la victoire—alors le prochain cold boot de launchd ressuscite l’ordre cassé exactement 72 heures plus tard lors d’une maintenance autoscalée.
- Précédence fantôme : les couches basses masquent les doublons en majuscules sans avertissement.
- Roulette shell : l’import shell de connexion lie l’uptime à la dernière édition de
~/.zprofile. - Myth du hot reload : toucher du JSON ne garantit pas le rechargement à chaud—beaucoup de déploiements attendent encore un redémarrage explicite.
Règle d’or : une surface autoritaire par famille de secrets critiques—blocs env injectés par plist ou dotenv géré à côté des templates d’infra, jamais les deux en compétition silencieuse.
Matrice A — Source × force de surcharge typique × risque sans tête × atténuation
| Source | Force de surcharge | Risque sans tête | Atténuation |
|---|---|---|---|
LaunchAgent EnvironmentVariables |
Maximale lorsque WorkingDirectory épouse la racine runtime. | Faible—survit déconnexion/redémarrage sans session GUI. | Somme de contrôle plist en Git ; reload via recettes launchctl bootstrap. |
OPENCLAW_LOAD_SHELL_ENV=1 |
Moyenne—hérite de l’ergonomie développeur interactive. | Élevée—dépend de shells de connexion qui peuvent ne jamais s’exécuter sur nœuds loués. | Filtrer par profils staging ; plafonner OPENCLAW_SHELL_ENV_TIMEOUT_MS à 15000 ms sauf latence WAN. |
.env local sous WorkingDirectory |
Moyenne—bon pour parité CI. | Moyenne—mauvais cwd ⇒ omission silencieuse. | Assertions cwd dans les smokes et garde-fous symlink. |
~/.openclaw/.env utilisateur |
Plus basse sauf si utilisateur LaunchAgent = compte automation. | Moyenne—multi-utilisateurs sur Mac mini. | Comptes de service dédiés documentés dans pools staging vs production. |
Matrice B — Symptôme observable × fiction réconfortante × correction
| Symptôme | Fiction réconfortante | Correction |
|---|---|---|
| Passerelle voit encore l’endpoint OpenAI legacy après édit | « Cache navigateur. » | Comparer env effective plist vs import shell ; redémarrer après suppression des doublons OPENAI_BASE_URL. |
| Démarrage bloque ~15 s puis réussit | « JVM froide. » | Ajuster timeout shell ou désactiver l’import—mesurer contre budget 15000 ms par défaut. |
| Jetons tournés mais passerelle frappe encore un quota révoqué | « Lag d’automatisation. » | Vérifier reload plist—notamment via synchronisation jetons LaunchAgent—pas simple export SSH. |
Checklist reload — type de changement × validateur
| Type de changement | Qui valide |
|---|---|
| Hotfix URL fournisseur LLM | Ingénieur plateforme relance status gateway + invite synthétique sous 5 minutes ; sécurité si listes d’autorisation egress touchées. |
| Rotation clés Anthropic partagées entre voies | Propriétaire automation vérifie diff plist par voie—pas de copie aveugle staging→prod. |
| Bascule flag import shell | SRE capture snapshots launchctl print avant/après pour audits. |
Réglages numériques partagés finance / SRE
- Plafond import shell : conserver 15000 ms par défaut ; exception 22000 ms seulement si traces RTT WAN le justifient—documenter par région.
- Fenêtre d’observation reload : surveiller deltas de taux d’erreur 10 minutes après changement avant montée en charge.
- SLA parité secrets : clés rotées sur chaque label LaunchAgent sous 25 minutes ou escalade commandant incident.
Huit étapes de déploiement (miroir JSON-LD)
- Inventorier plist, dotenv, import shell, blocs JSON env.
- Publier la documentation de précédence avec exemples de conflits.
- Épingler EnvironmentVariables LaunchAgent pour clés prod.
- Choisir la politique d’import shell adaptée aux locations sans tête.
- Régler les timeouts selon budgets de démarrage mesurés.
- Définir les rituels de reload incluant attentes de redémarrage.
- Vérifier l’env effective après chaque vague de déploiement.
- Audit trimestriel drift plist vs gabarits dorés.
Après avoir figé la précédence env du gateway, routez le trafic Anthropic via notre guide proxy OpenClaw Headroom —60–92 % de tokens en moins sur audits nocturnes tool-heavy, runbook 8 étapes, 5 FAQ.
FAQ
Le hot reload JSON remplace-t-il les édits plist ?
Prendre la sémantique documentée du fournisseur comme référence—en cas de doute, redémarrages contrôlés en fenêtre de maintenance plutôt que supposer des watchers.
Lien avec la rédaction observabilité ?
Après empilement des couches env, filtrer les secrets dupliqués avant logs centralisés avec les filtres observabilité.
Les locations Mac mini M4 associent l’efficacité Apple Silicon à une enveloppe thermique prévisible pour garder des horloges gateway stables. macOS natif intègre LaunchAgent, Keychain et chaîne outillage sans shim conteneur Linux ; NodeMac SSH et VNC optionnel permettent de confronter shell interactif et réalité launchd. Couvrir Hong Kong, Japon, Corée, Singapour, États-Unis rend les répétitions de reload honnêtes sur la latence—associez une doc de précédence explicite pour que les passerelles OpenClaw héritent exactement ce que l’automatisation vise, pas ce qui restait dans un buffer terminal.