Sur un nœud Mac CI distant, la chaîne OpenClaw + MCP exige runtime figé, secrets hors dépôt et aucune exposition réseau inutile. Ce HowTo 2026 couvre Node, installation npm globale du pont MCP, 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 npx et les globaux divergent entre jobs.

  • 2

    MCP mal câblé : passerelle arrêtée, mauvais utilisateur CI, ou variables OPENCLAW_URL / OPENCLAW_GATEWAY_TOKEN absentes pour openclaw-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.1 et 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éesPinner Node 20 via nvm/fnm dans le plist ou le job
Script officiel curlAlignement strict sur la doc amont, peu de dépendance npm interneVérifier checksum, non-interactivité (-y) et journaux launchd
Docker sidecarMulti-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.

Règles réseau à ne pas négocier
  • Pas de 0.0.0.0 nu : 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.

#!/usr/bin/env bash set -euo pipefail export OPENCLAW_URL="${OPENCLAW_URL:-http://127.0.0.1:18789}" test -n "${OPENCLAW_GATEWAY_TOKEN:-}" || { echo "token manquant"; exit 1; } openclaw doctor || openclaw status # puis seulement : git -C "$REPO_ROOT" pull --ff-only

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 passerelleService arrêté ou mauvais portContrôler launchd, logs plist, OPENCLAW_URL, test curl localhost
401 / auth invalideJeton absent ou rotation non propagéeAligner secret CI et fichier local chmod 600 ; éviter le jeton dans l’historique shell
Engine Node incompatibleRunner sous Node 16 ou global hors PATHNode 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-RPCRediriger 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.

openclaw-ci-mac/ ├── openclaw.json ├── .env.openclaw # non versionné ; OPENCLAW_GATEWAY_TOKEN ├── scripts/ │ ├── preflight.sh │ └── scheduled-pull.sh └── launchd/ └── com.macpull.openclaw-gateway.plist

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).

Mac CI & OpenClaw 2026

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.

Acheter maintenant Voir les tarifs Accueil Blog
Livraison rapide
Annulation à tout moment
Support 24/7