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
pushinondent alors qu’un état terminal decheck_suitesur branches protégées suffit. - Jeton trop large : le scope classique
repodé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.
| Signal | Intérêt | Filtre |
|---|---|---|
check_suite | Une ligne Checks par suite terminée | action == completed + liste blanche head_branch |
workflow_run | Noms de workflow, conclusion, artefacts | Ignorer in_progress ; ne traiter que succès/échec terminal |
repository_dispatch | Réveiller un workflow fin après job Mac | event_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.
openclaw doctor sous l’utilisateur du service.600 à côté des autres variables OpenClaw.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
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.
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.
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.
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.