2026-04-15 OpenClaw : variables d’environnement & secrets sur Mac cloud loué sans tête (launchd)
La passerelle OpenClaw empile la configuration : environnement du processus, .env projet, ~/.openclaw/.env, blocs JSON dans ~/.openclaw/openclaw.json. L’ordre surprend les équipes qui n’ont testé qu’en shell interactif. Sur un Apple Silicon loué accessible uniquement en SSH, l’absence de variable se traduit par des échecs d’auth LLM cryptiques, pas par une belle TUI. Ce guide 2026-04-15 cartographie la vraie précédence, les trous launchd, une matrice de stockage, une rotation en six étapes, et relie sondes de santé, reverse proxy et journalisation structurée pour garder des passerelles reproductibles à Hong Kong, Tokyo, Séoul, Singapour ou aux États-Unis.
Ne confondez pas la pile documentaire avec la réalité : launchctl injecte souvent des variables avant que le CLI ne lise les fichiers locaux ; les clés dupliquées donnent « ça marche dans tmux mais pas après reboot ». Centralisez les secrets dans un lieu auditable, utilisez ${VAR} côté JSON, et logguez la taille effective de l’environnement (souvent < 32 Ko) pour détecter un printenv accidentel dans la CI.
Comment OpenClaw résout l’environnement (modèle 2026)
En LaunchAgent, l’arbre commence par launchd. Les variables définies uniquement dans .zprofile n’apparaissent pas sans import shell contrôlé. Les bascules non sensibles (OPENCLAW_LOG_LEVEL=info) peuvent vivre dans le plist, mais évitez d’y coller des jetons longue durée lisibles par plusieurs comptes. Un wrapper qui extrait des secrets éphémères du Trousseau puis exec le binaire est plus sûr.
« Echo en terminal » n’implique pas « visible par la passerelle ». Les hôtes loués injectent parfois proxy/CA au niveau plateforme ; une couche .env OpenClaw ne gagne pas toujours en dernier. Listez des noms de clés masqués depuis votre wrapper CI et gardez un audit diff après chaque modification de plist. Une page « quelle région utilise quel matériel d’identité » réduit les erreurs de passation.
Trous sur Mac loués sans interface
- Pas de fenêtre de login —
.zprofileseul ne nourrit pas les LaunchAgents. - Confusion UID GUI/SSH — lancer
openclaw gatewaysous un autre utilisateur que le propriétaire de~/.openclawdonne une config vide. - Éparpillement des secrets — copier
.envdans/tmppour déboguer crée des fichiers lisibles par tous ;chmod 600puis suppression. - Dérive multi-région — une clé valide US East héritée par une passerelle JP peut violer la résidence des données.
Matrice de stockage (un primaire)
| Mécanisme | Forces | Risques |
|---|---|---|
~/.openclaw/.env (0600) |
Itération rapide, sauvegardes simples | Visible pour root et imaging disque |
EnvironmentVariables launchd |
Explicite pour démons, survit au reboot | Plist dans ~/Library/LaunchAgents non world-writable |
| Trousseau + wrapper | Meilleure histoire d’audit | Déverrouillage headless plus délicat |
Patron launchd pour builders loués
Alignez le plist sur l’UID qui exécute le CI SSH. Gardez les secrets hors ligne ou sous OPENCLAW_STATE_DIR=/Volumes/secure/openclaw-$REGION pour ne pas partager le home avec les caches Xcode. Utilisez VNC seulement pour confirmation visuelle réglementaire ; sinon SSH + journaux openclaw doctor suffisent.
#!/bin/bash
set -euo pipefail
export OPENCLAW_STATE_DIR="/Volumes/secure/openclaw-sg"
exec /usr/local/bin/openclaw gateway run
Rotation en six étapes sans couper les webhooks
- Geler l’ingress — pause nginx ≤ 90 s (article reverse proxy).
- Nouvelle clé — mettre à jour le fournisseur d’abord ; chevauchement 15 min avec l’ancienne.
- Swap atomique —
.env.new, fsync,mv,chmod 600. - launchctl kickstart -k gui/$UID/pcx.openclaw.gateway — exit 0 dans syslog.
- Vérifier —
openclaw doctor+ sonde 127.0.0.1:18789 (sondes). - Réactiver nginx — des 200 sous 120 s ; rollback si erreurs > 5 %.
.env dans les dépôts applicatifs — même privés — car les équipes iOS les miroitent souvent vers des CI externes.
Mac multi-locataires : limites OPENCLAW_STATE_DIR
Deux squads sur un Mac mini M4 : séparez /Volumes/secure/openclaw-teamA et ...-teamB, avec labels launchd et groupes unix distincts pour les ACL. Encodez la région (HK, etc.) dans le chemin pour limiter le routage transfrontalier erroné. Si des archives Xcode nocturnes tournent sur la même machine, placez l’état hors des préfixes nettoyés par la CI et excluez /Volumes/secure du janitor.
FAQ : secrets OpenClaw sur Mac cloud
| Question | Réponse | Lien |
|---|---|---|
| Garder l’import shell en prod ? | Désactivez s’il tire des centaines de variables ; préférez des clés plist explicites. | aide |
| Prouver qui a changé une clé ? | Checksums plist versionnés + syslog vers SIEM. | logs |
| Réutiliser le même .env partout ? | Techniquement oui, opérationnellement non — segmentez pour réduire le blast radius. | tarifs |
Pont vers observabilité & capacité
Les secrets ne suffisent pas : une fois l’environnement stable, branchez sondes et pipelines de logs pour voir les régressions avant les clients. Relisez les sondes, puis dimensionnez via tarifs si la profondeur de file dépasse 40 messages pendant plus de 10 minutes. L’index du blog liste le reste de la série OpenClaw.
En bref : traitez l’environnement OpenClaw comme des secrets Kubernetes de production — explicites, moindre privilège, rotation répétée — et vos passerelles Apple Silicon se comporteront pareil à Tokyo et en Virginie.
Déployez OpenClaw sur passerelles M4 dédiées
SSH d’abord · HK · JP · KR · SG · US