openclaw.json, passerelle 127.0.0.1 + jeton, launchd et préflight avant pull planifié : matrice d’entrée, six étapes, tableau d’erreurs, workspace minimal, exemple script. Approfondissez avec « OpenClaw : ClawHub et pré-tirage CI », la liste du blog et l’accueil MacPull.
Freins typiques sur Mac CI : Node instable, MCP mal câblé et passerelle trop visible
- 1
Node « flottant » : viser Node 20 LTS (minimum 18+ pour les ponts MCP Node) ; sinon
npxet les globaux divergent entre jobs. - 2
MCP mal câblé : passerelle arrêtée, mauvais utilisateur CI, ou variables
OPENCLAW_URL/OPENCLAW_GATEWAY_TOKENabsentes pouropenclaw-mcp. - 3
0.0.0.0 sans garde-fou : exposer la passerelle sur toutes les interfaces sans proxy/TLS/jeton fort ; préférer
127.0.0.1et tunnel SSH si besoin.
Matrice d’entrée : nous retenons le npm global pour le pont MCP (et le script officiel en variante)
Voie retenue : npm install -g openclaw-mcp (ou paquet interne équivalent), pratique sur runners Node et auditable via npm ls -g. Alternative : script officiel curl … | bash si vous devez coller à l’amont sans npm ; figez URL et hash. Le tableau tranche sans cumuler les deux sur un même hôte.
| Entrée | Quand la privilégier sur Mac CI | Point d’attention |
|---|---|---|
| npm global (retenu ici) | Pipelines Node déjà normalisés, besoin de npm ls -g auditable et de mises à jour semver ciblées | Pinner Node 20 via nvm/fnm dans le plist ou le job |
| Script officiel curl | Alignement strict sur la doc amont, peu de dépendance npm interne | Vérifier checksum, non-interactivité (-y) et journaux launchd |
| Docker sidecar | Multi-versions ou isolation forte (hors périmètre détaillé ici) | Volume vers le workspace et UID cohérent avec le runner |
Checklist HowTo en six temps (Node, npm MCP, openclaw.json, passerelle, launchd, préflight)
1 — Node 20 LTS (nvm/fnm) : node -v / npm -v en tête de job.
2 — Pont MCP : npm install -g openclaw-mcp ; vérifier sous npm root -g.
3 — openclaw.json : compétences ClawHub + serveurs MCP ; fichier dans le workspace versionné.
4 — Passerelle : 127.0.0.1 et port fixe (souvent 18789 côté intégrations documentées) ; jeton long hors Git (chmod 600, secret CI), OPENCLAW_GATEWAY_TOKEN.
5 — launchd : LaunchAgent utilisateur, RunAtLoad, KeepAlive, chemins absolus, logs stdout/stderr ; launchctl bootstrap gui/$UID.
6 — Préflight : openclaw doctor ou status, puis warm-up ; git pull seulement si succès.
- Pas de
0.0.0.0nu : proxy TLS, ACL ou tunnel. -
127.0.0.1+ jeton ; rotation si fuite.
Pour un runbook ou un audit, consignez quatre lignes : sortie de node -v, résultat de npm ls -g openclaw-mcp, chemin du plist launchd et commande exacte du préflight. Ajoutez une capture ou une note montrant que la passerelle est restreinte à 127.0.0.1 ; cela évite de refaire toute l’inspection lors d’un contrôle sécurité ou d’un transfert d’équipe.
Exemple : préflight puis pull planifié (LaunchAgent + script)
Un LaunchAgent calendarisé exécute scripts/preflight.sh avant git pull et le pré-tirage lourd, afin qu’une passerelle morte stoppe la chaîne tôt.
Planifiez avec StartCalendarInterval et journaux sous ~/Library/Logs. Accès machine : centre d’aide MacPull (SSH/VNC).
Tableau d’erreurs fréquentes et workspace minimal reproductible
| Symptôme ou message | Piste de cause | Action correctrice |
|---|---|---|
ECONNREFUSED vers la passerelle | Service arrêté ou mauvais port | Contrôler launchd, logs plist, OPENCLAW_URL, test curl localhost |
401 / auth invalide | Jeton absent ou rotation non propagée | Aligner secret CI et fichier local chmod 600 ; éviter le jeton dans l’historique shell |
| Engine Node incompatible | Runner sous Node 16 ou global hors PATH | Node 20 LTS via nvm dans le même shell que le job ; vérifier which node |
| MCP stdout bruité | Logs mélangés au JSON-RPC | Rediriger le debug vers fichier ; conserver stdout strict pour le client MCP |
Arborescence type ; les chemins du plist doivent exister avant launchctl bootstrap. Versionnez openclaw.json et les scripts sur le dépôt principal, jamais le fichier de jeton ni .env.openclaw.
Synthèse : industrialiser la chaîne sans sacrifier la surface d’attaque
Résumé : Node 20 LTS, pont MCP en npm global, openclaw.json structuré, passerelle 127.0.0.1 + jeton, launchd, préflight avant pull. Pour un nœud Mac dédié sans CAPEX, ouvrez achat, comparez les tarifs, puis la liste du blog (retry, Docker, réseau).
Louez un Mac Mini M4 pour votre chaîne MCP
Déployez launchd, OpenClaw et préflight sur un nœud dédié : consultez les offres puis finalisez sur la page d’achat.