Public : équipes DevOps qui couplent SourceHut builds.sr.ht à un Mac Mini M4 loué pour préchauffer npm et contrôler le lockfile. Livrable : chaîne webhook → script → barrière lockfile → JSON OpenClaw → POST CI, extraits curl/npm sous Node 24, matrice concurrence. Liens : accueil, blog, aide ; voir LaunchDarkly × OpenClaw et bundle & shallow.
« Le webhook ne transporte qu'un signal court : tout le préchauffage, le lockfile et le JSON d'OpenClaw restent une discipline d'exécution sur le Mac loué. »

Trois frictions qui cassent l'intégration builds.sr.ht ↔ Mac distant si on les néglige

1
Signal webhook pauvre : sans SHA ni secret rotatif, impossible de corréler prefetch, lockfile et journaux OpenClaw.
2
Caches npm partagés : plusieurs tâches sr.ht écrivent dans le même ~/.npm et perturbent la fusion gateway status.
3
Node ignoré : OpenClaw 2026.5.x suppose Node 24 ; un doctor sous version antérieure masque des erreurs de config validate.

Node 24 et OpenClaw : scripts officiels curl et npm avant toute écoute webhook

Ancrez la majoration 24.x via l'archive nodejs.org, puis installez OpenClaw en global ; séparer runtime et CLI clarifie les audits multi-pools.

Option A — archive officielle (darwin arm64, exemple de version) :

VER="v24.5.0"
curl -fsSL "https://nodejs.org/dist/${VER}/node-${VER}-darwin-arm64.tar.xz" -o node.txz
tar -xJf node.txz
export PATH="$PWD/node-${VER}-darwin-arm64/bin:$PATH"
node -v   # attendu : v24.x.x

Option B — ligne npm documentée (après Node 24 actif) :

npm install -g openclaw@2026.5.x
command -v openclaw
openclaw --version

Contrôlez systématiquement node -v dans le même shell que le handler launchd ; un décalage mineur suffit à invalider la chaîne doctor → config validate → gateway status décrite plus bas.

Matrice décisionnelle : images builds.sr.ht concurrentes, politique de retry Git et garde-fous disque

Chaque ligne propose un compromis pour un hôte unique avant d'augmenter le parallélisme YAML.

Images / tâches concurrentes Politique Git fetch / clone Seuil disque (APFS) & action
1 tâche sr.ht sérialisée par Mac Backoff 2 / 4 / 8 s, trois essais maximum Alerte si df -h > 78 % sur volume de travail : stopper prefetch
2 tâches avec caches npm disjoints Retry + miroir interne documenté Seuil 85 % : purge ciblée npm cache par job
> 2 tâches partageant ~/.npm Interdit sans file d'attente externe Risque > 90 % : annuler et renvoyer synthèse « disque critique »

La troisième ligne interdit le partage naïf de ~/.npm ; voir aussi bundle & shallow.

Check-list opératoire : webhook builds.sr.ht → prefetch → fusion JSON → retour CI

Ordre strict pour livrer un JSON unique à la CI, même si le prefetch échoue partiellement.

  1. Déclarer dans builds.sr.ht une URL HTTPS, secret d'en-tête, logs redacted du SHA.
  2. Router le POST vers un script signé qui vérifie la charge locale.
  3. Cloner shallow validé, npm ci ou pnpm fetch, puis git diff --exit-code package-lock.json.
  4. Fusionner webhook + OpenClaw dans un JSON (bloc suivant).
  5. Poster avec curl -fsS -H "Content-Type: application/json" vers l'URL d'artefact documentée.
  6. Archiver le JSON horodaté sans jeton brut.

Chaîne d'acceptation OpenClaw : doctor, config validate et gateway status en série contrôlée

Après prefetch, exécutez les trois commandes dans l'ordre ; toute anomalie enrichit le JSON plutôt que masquer l'étape suivante.

openclaw doctor --json > /tmp/oc-doctor.json
openclaw config validate --json > /tmp/oc-validate.json
openclaw gateway status --json > /tmp/oc-gateway.json

jq -n \
  --slurpfile d /tmp/oc-doctor.json \
  --slurpfile v /tmp/oc-validate.json \
  --slurpfile g /tmp/oc-gateway.json \
  '{doctor:$d[0],validate:$v[0],gateway:$g[0],ts:now|todate}' \
  > /tmp/openclaw-gate.json

Porte d'acceptation prête à coller : adaptez chemins temporaires et source du SHA payload.

Repères chiffrés et contractuels pour cahier des charges ou revue sécurité

Repères ateliers MacPull

  • Trois retries Git en 2 / 4 / 8 s avant l'étiquette « réseau transitoire ».
  • Seuil 78 % sur le volume npm ; au-delà de 90 %, JSON bloquant « disque critique ».
  • Un JSON fusionné doctor + validate + gateway, horodaté ISO8601.

FAQ opérationnelle : jetons, TLS et conflit sur le port 18789

?
Où placer les jetons ? Utilisez des variables injectées par launchd, séparez le PAT SourceHut du bearer OpenClaw, et refusez tout echo dans les logs ; rotation trimestrielle recommandée.
?
TLS : terminaison complète sur reverse-proxy ; mTLS ou tunnel WireGuard vers le Mac.
?
Port 18789 occupé : lsof -nP -iTCP:18789, stopper smokes ou OPENCLAW_GATEWAY_PORT libre.
?
Sauter config validate ? Interdit si le JSON sert de preuve contractuelle.
?
POST final échoue : conserver le JSON, signaler HTTP distinct, ticket via aide avec SHA redacted.

Synthèse : ancrer Node 24, orchestrer le webhook, puis narrater la CI en JSON sobre

Ordre : secret sr.ht, handler launchd, prefetch, lockfile, triptyque OpenClaw, POST. Liens publics : accueil, blog, tarifs, achat, aide.

Poursuivre : accueil · blog · tarifs · achat · aide.

Mac Mini M4 pour relais OpenClaw et webhooks builds.sr.ht

Louez un nœud Apple Silicon proche de vos contributeurs, exposez SSH ou VNC conformément au centre d'aide, puis exécutez prefetch, validations OpenClaw et callbacks CI sans partager d'URL de console authentifiée.