Public cible : ingénieurs qui font tourner une passerelle OpenClaw sur un Mac distant et veulent que les événements GitHub Check Suite déclenchent un scan de diff sur les fichiers de verrouillage (lockfiles), puis renvoient une synthèse lisible vers la CI, avec des jetons au moindre privilège. La référence officielle reste docs.openclaw.ai : on y retrouve les chemins du tableau de bord, les ports par défaut et les bonnes pratiques réseau. Enchaînez openclaw onboard puis openclaw doctor, et ne liez l’admin HTTP qu’à 127.0.0.1 : le TLS et l’exposition publique se font devant, via Caddy ou nginx. Pour des résumés multi-backends, voir routage multi-endpoints et résumé CI ; pour la surveillance launchd, LaunchAgent et healthcheck passerelle. Les pages aide, achat et blog MacPull sont consultables sans connexion.
  • Bruit webhook : les push inondent alors qu’un état terminal de check_suite sur branches protégées suffit.
  • Jeton trop large : le scope classique repo dépasse le besoin ; la lecture Contents + Metadata suffit souvent pour cloner en lecture et lire les lockfiles.
  • Répertoires partagés : un seul clone mutable produit des diffs incohérents et de fausses alertes lockfile.

① Passerelle : Node, docs.openclaw.ai, doctor, liaison loopback

Installez Node 22 LTS ou plus récent pour le compte qui exécute launchd. OpenClaw : script curl officiel ou npm install -g openclaw selon la politique interne. Passez openclaw onboard, puis openclaw doctor jusqu’à un rapport sans erreur bloquante.

Selon docs.openclaw.ai, attachez l’écoute administrative à 127.0.0.1, terminez le TLS sur le proxy inverse et ne forward que les chemins attendus pour les livraisons GitHub. Stockez les secrets dans ~/.config/openclaw/ (fichiers chmod 600), rechargez launchctl après changement, et alignez PATH / NODE_BINARY sur celui utilisé quand doctor était vert.

SignalIntérêtFiltre
check_suiteUne ligne Checks par suite terminéeaction == completed + liste blanche head_branch
workflow_runNoms de workflow, conclusion, artefactsIgnorer in_progress ; ne traiter que succès/échec terminal
repository_dispatchRéveiller un workflow fin après job Macevent_type typé ; vérifier HMAC sur relais maison

Règle loopback. GitHub appelle le nom d’hôte public ; le proxy parle en HTTP à 127.0.0.1 sur le Mac. OpenClaw n’ouvre pas un port d’administration sur le WAN. Complétez par pare-feu qui rejette les sondes inutiles.

Durcissement : sécurité passerelle sur Mac distant (jetons, proxy, surface d’attaque).

② Webhook dépôt, filtrage d’événements et jeton minimal

Paramètres → Webhooks : contenu application/json, secret long et stocké hors Git, cochez uniquement check_suite (ajoutez workflow_run si le payload doit porter le nom du workflow).

Côté récepteur : liste blanche X-GitHub-Event, vérification X-Hub-Signature-256 sur le corps brut, journalisation des X-GitHub-Delivery, corrélation check_suite.head_sha avec le commit testé. Rejetez les rejeux en mettant en cache l’ID de livraison quelques minutes.

1
Doctor propre. Après chaque upgrade Node ou macOS, relancer openclaw doctor sous l’utilisateur du service.
2
Passerelle en loopback. Tester la route de santé documentée en local avant d’ouvrir le proxy vers Internet.
3
Webhook + secret. Fichier secret 600 à côté des autres variables OpenClaw.
4
Filtre strict. Ignorer toute livraison dont l’action n’est pas terminale ou la branche hors liste protégée.
5
Preuve de bout en bout. Redélivrer un exemple depuis l’UI GitHub et confirmer des logs structurés côté Mac.
export HOOK_SECRET="$(tr -d '\n' < ~/.config/openclaw/github-hook.secret)"
# vérifier X-Hub-Signature-256 avec HOOK_SECRET, puis enfiler le travail avec un JOB_ID unique
# rejeter les rejeux : mettre en cache X-GitHub-Delivery brièvement

PAT fine-grained : sur le dépôt cible, accès Contents et Metadata en lecture seule. N’ajoutez Actions ou Workflows que si vous modifiez du YAML. Les PAT classiques repo simplifient mais violent le moindre privilège : préférez une durée courte et une rotation rapide après fuite.

③ Isolation des répertoires de travail et scan lockfile

Pour chaque livraison, créez un répertoire unique sous une racine de staging (ex. /var/lib/openclaw/check-jobs/$DELIVERY_ID) : git clone --depth 1 au SHA du payload, aucun arbre partagé mutable entre deux jobs.

Comparez package-lock.json, pnpm-lock.yaml, Gemfile.lock, Cargo.lock, gradle.lockfile à une capture de référence de la branche par défaut (ou récupérez les blobs via l’API avec le même PAT lecture seule). Produisez un markdown compact : fichiers touchés, nombre de lignes ajoutées/supprimées, avertissement si lock absent.

Sur un pool de Mac distants, supprimez toujours le workdir en fin de run, posez le parent en chmod 700 et surveillez l’espace disque. Sérialisez par dépôt si les limites de débit API ou l’I/O disque deviennent le goulot.

④ Rappel du résumé de build, retries et crochets OpenClaw

Canaux usuels : variable GITHUB_STEP_SUMMARY dans un job Actions aval, endpoint JSON entrant documenté pour votre version OpenClaw, ou repository_dispatch vers un workflow minimal qui ne fait qu’annoter la PR.

Politique réseau : trois tentatives, backoff 2 / 4 / 8 s, curl --max-time 25, journaliser le code HTTP et x-github-request-id. Évitez les boucles infinies sur erreurs 4xx corrigeables à la main.

⑤ FAQ — erreurs fréquentes

HTTP 401 depuis l’API GitHub

Jeton expiré, mauvais dépôt ou scope Contents manquant. Régénérer, mettre à jour le fichier env 600, launchctl kickstart ou recharger le plist, tester avec curl -H "Authorization: Bearer …" en tant qu’utilisateur du daemon.

HTTP 200 côté GitHub, silence côté handler

Le proxy a peut-être modifié le corps (buffering) ou retiré les en-têtes de signature. Comparez une livraison rejouée à un POST local identique ; vérifiez que le filtre JSON ne lève pas avant votre code métier.

openclaw doctor après upgrade macOS

Chemin Node du plist désynchronisé. Fixer NODE_BINARY absolu, réexécuter onboard si la doc le demande, puis doctor.

Diffs lockfile « qui dansent »

Concurrence sur le même clone ou baseline non figée. Un répertoire par Delivery et, si besoin, mutex par dépôt.

Ordre recommandé : doctor → passerelle loopback → webhook filtré → workdirs jetables → canal de synthèse avec retries bornés. Pour héberger cette chaîne sur un Mac cloud stable avec passerelle et automatisation supervisées, parcourez l’accueil, l’achat, les tarifs et le centre d’aide — tout cela reste accessible sans page nécessitant une session.

OpenClaw · GitHub Checks · Mac distant

Mac distant pour passerelle OpenClaw et automatisation GitHub

Hébergez la passerelle conforme à docs.openclaw.ai, les webhooks filtrés et les scans lockfile sur Apple Silicon géré — parcours public : aide, achat, articles blog.

Acheter un Mac distant Tarifs Centre d’aide
Apple Silicon
Passerelle loopback + TLS
Support 24/7