Zielgruppe: Maintainer mit SourceHut builds.sr.ht und OpenClaw auf gemieteten Apple-Silicon-Macs. Nutzen: reproduzierbarer HTTP-Webhook, Dependency-Prefetch, Lockfile-Drift-Gate und eine zusammengeführte JSON-Zusammenfassung zurück in die Build-Oberfläche. Aufbau: Risiken, Installations- und Variablentabelle, Entscheidungsmatrix (sr.ht-Parallelität, Git-Retry, Platte), Abnahme-Kette doctor plus gateway status, sieben Schritte, Kennzahlen, FAQ, CTA. Verweise: Startseite, Blog, LaunchDarkly-Webhook-Muster, Gateway-Status-JSON-Gate, Hilfe.

Drei Risiken, wenn sr.ht-Webhooks direkt auf gemeinsame Runner feuern

Ohne klare Reihenfolge kollidieren git fetch, npm ci und ein optionaler openclaw gateway-Smoke-Test auf derselben NVMe. Die folgenden Punkte adressieren Auth, deterministische Locks und Kapazität.

  • 1
    Token-Leckage: PAT oder Webhook-Geheimnis landet in Shell-History oder Build-Logs, wenn set -x aktiv bleibt oder Antworten das Secret echoen.
  • 2
    Lockfile-Drift: parallele Jobs schreiben package-lock.json oder npm-shrinkwrap.json neu; ohne git diff --exit-code verschwindet die Reproduzierbarkeit.
  • 3
    Platten- und Port-Race: mehrere Prewarm-Läufe füllen node_modules und npm-Cache gleichzeitig; der Standard-Gateway-Port 18789 blockiert Smoke-Tests, falls ein Daemon bereits lauscht.

Node 24 installieren: offizielles curl-Paket und npm-Pfad für OpenClaw

OpenClaw setzt Node 24 voraus. Prüfen Sie nach der Installation mit node -p process.versions, dass major mindestens 24 ist. Paketmanager und globale CLI teilen dieselbe PATH-Reihenfolge wie Ihr launchd- oder CI-Profil.

Komponente Zweck auf Remote-Mac Beispiel / Hinweis
Node 24 (tarball) Reproduzierbare Binaries ohne Homebrew-Jitter Offizielle darwin-arm64-Distribution von nodejs.org
npm install -g openclaw CLI für doctor, gateway status, Hooks Private Scopes: NPM_TOKEN nur in Secret-Store
OPENCLAW_HOME Isolierung pro Mandant oder Job Eigenes Verzeichnis pro Webhook-Queue
OPENCLAW_GATEWAY_PORT Kollision mit 18789 vermeiden Smoke-Port nur kurzzeitig binden
NPM_CONFIG_CACHE NVMe-Prewarm ohne Cross-Job-Löschung Pro Pool ein Unterordner mit File-Lock

Offizielles macOS-arm64-Archiv (Version anpassen):

curl -fsSL -o /tmp/node24.tar.xz \ "https://nodejs.org/dist/v24.11.1/node-v24.11.1-darwin-arm64.tar.xz" tar -xJf /tmp/node24.tar.xz -C "/usr/local" --strip-components=1 node -p "process.versions"

Alternativ offizielles PKG (Installer):

curl -fsSL -o /tmp/node24.pkg \ "https://nodejs.org/dist/v24.11.1/node-v24.11.1.pkg" sudo installer -pkg /tmp/node24.pkg -target LocalSystem

OpenClaw global per npm (öffentliche Registry):

npm install -g openclaw@latest openclaw --version

Webhook-Endpunkt, TLS und builds.sr.ht-Authentifizierung

Terminieren Sie TLS am öffentlichen Reverse-Proxy mit vollständiger Kette und validieren Sie den gemeinsamen Geheimnis-Header vor jeder Log-Zeile mit Payload. Für Git-Lesezugriff bevorzugen Sie Deploy-Keys statt breiter PATs.

Aspekt Anforderung Prüfhinweis
TLS Öffentliches Zertifikat, OCSP-Stapling Kein self-signed Client-Zwang für sr.ht
Secret-Header Statisches Token oder HMAC laut sr.ht-Doku Byte-identischer Vergleich, Timing-safe
Quell-IP Allowlist sr.ht-Egress Fail-closed bei unbekannter IP
Body-Größe Limit <512 KiB typisch Keine Shell-Eval des JSON

Entscheidungsmatrix: sr.ht-Build-Parallelität, Git-Retry und Platten-Schwellen

Die Matrix verknüpft gleichzeitige builds.sr.ht-Aufträge auf einem physischen Mac mit Netz-Jitter und APFS-Freigabe. Messen Sie p95 der Hook-Latenz, bevor Sie Parallelität erhöhen.

Szenario sr.ht / Image-Parallelität Git-Fetch-Retry Platten-Schwelle (frei)
Ein Miet-Mac, geteilter npm-Cache max. 2 gleichzeitige Prewarm-Jobs Backoff 2 / 4 / 8 s, max. 4 Versuche Warnung < 18 GB, harter Stopp < 12 GB
Mono-Repo >2 GiB Objects 1 serialisierter Prefetch Shallow plus GIT_HTTP_LOW_SPEED_LIMIT Reserve 25 GB für Tarballs
Gateway-Smoke auf Loopback Prefetch und Smoke nicht parallel n. a. Temporäre Logs nach Upload löschen
Edge-Proxy mit 5xx Parallelität einfrieren Jitter ±20 %, dann Eskalation Kein Retry bei Drift-Fail

Abnahme-Kette: openclaw doctor, gateway status und npm audit

Nach dem Prefetch führen Sie die folgende Reihenfolge aus, bevor Sie JSON an die CI zurückgeben. So trennen Sie Installationsfehler von Laufzeit- und Supply-Chain-Signalen.

  1. openclaw doctor — erwarteter Exit-Code 0; Ausgabe in Datei .ci/openclaw-doctor.log schreiben.
  2. openclaw gateway status --json — nur wenn kein Portkonflikt vorliegt; bei belegtem 18789 alternativ bestehenden Daemon abfragen oder Port überschreiben.
  3. npm audit --json — Ergebnisobjekt unter Schlüssel audit in die Merge-Datei legen.
  4. Alle drei JSON-Teile mit Zeitstempel, Commit-SHA aus dem Webhook-Payload und CORRELATION_ID zu ci-summary.json zusammenführen.

Vertiefung: Gateway-Status-JSON-Gate und WAN-Git-Matrix für Retry-Parameter.

Sieben Schritte: Webhook konfigurieren, Prefetch ausführen, Summary mergen, CI füttern

Jeder Schritt erhält dieselbe CORRELATION_ID, damit builds.sr.ht-Logs und Mac-Logs joinbar bleiben.

  1. builds.sr.ht: HTTPS-URL des Reverse-Proxy eintragen, gemeinsames Geheimnis als Header oder Signatur setzen, nur benötigte Ereignisse (z. B. Build gestartet) aktivieren.
  2. Listener: JSON-Payload validieren, Idempotenz-Key aus Task-ID cachen, bei Duplikat sofort 200 ohne erneutes npm ci.
  3. Repository: shallow git fetch mit Matrix-Backoff; Arbeitsverzeichnis pro Auftrag unter /var/lib/ci/srht/$TASK_ID.
  4. Prefetch: npm ci mit festem NPM_CONFIG_CACHE; optional npm pack für kritische Pakete vorab.
  5. Lockfile-Gate: git diff --exit-code package-lock.json nach npm ci; Abbruch bei Drift, kein automatisches npm install.
  6. Merge: doctor-Log, gateway status --json und npm audit --json zu ci-summary.json kombinieren.
  7. CI-Rückkanal: Artefakt-Upload per dokumentiertem API-Token oder signierte zweite HTTP-Anfrage an builds.sr.ht; Antwortredaction strikt einhalten.

Stabilität: Keine world-writable Cache-Verzeichnisse; umask 027 für Hook-Prozesse.

Drei Kennzahlen für Review, Budget und Runbook-Versionierung

Messgrößen
  • Hook-SLA: Zielbearbeitung unter 90 s p95; darüber Prefetch auslagern oder Queue begrenzen.
  • Cache-Key: SHA256 von package-lock.json plus Node-Minor plus OpenClaw-CLI-Version.
  • Parallelität: Mehr als 2 gleichzeitige sr.ht-Prewarms pro Mac mini M4 senken Trefferquote des npm-Caches messbar, wenn Git und npm dieselbe SSD belasten.

FAQ: Token, TLS und Port 18789

Welches Token gehört in den Webhook-Pfad?
Ein PAT nur mit den Rechten für Artefakt-Upload oder Task-Callback; rotieren und niemals in Klartext-Logs ausgeben. Für Git-Zugriff Deploy-Key bevorzugen.
Wie streng muss TLS zwischen sr.ht und dem Mac sein?
Vollständige Kette am Proxy, keine dauerhafte curl -k-Umgehung; Firmen-CA im System-Trust des Runners installieren.
Was tun bei EADDRINUSE auf Port 18789?
lsof -iTCP:18789 -sTCP:LISTEN; entweder bestehenden OpenClaw-Daemon nutzen oder OPENCLAW_GATEWAY_PORT für kurzen Smoke setzen.
Dürfen mehrere Hooks dieselbe npm-Cache-Instanz nutzen?
Nur mit Dateisperre und freier Platte oberhalb der Matrix-Schwelle; sonst dedizierte Cache-Pfade pro Queue.
Wann Prefetch abbrechen statt retry?
Bei Lockfile-Drift oder nicht übereinstimmendem Commit-SHA sofort fehlschlagen, damit die CI-Zusammenfassung kausal bleibt.

Fazit: deterministischer Prefetch plus maschinenlesbare Summaries

Node 24, globales OpenClaw, ein signierter builds.sr.ht-Webhook und ein klarer Lockfile-Gate bilden das Rückgrat. Die Matrix entscheidet über Parallelität, Git-Backoff und APFS-Reserve; doctor und gateway status liefern belastbare JSON-Signale für die Rückkopplung.

Nächste Schritte: Startseite, Blog, Preise, Pakete, Hilfe; verwandt: LaunchDarkly-Webhook, GitHub-Lockfile-Scan.

SourceHut builds.sr.ht & OpenClaw auf Remote-Mac 2026

Dedizierte Apple-Silicon-Runner für Webhook-Pipelines

Region wählen, SSH-Anleitung in der Hilfe nutzen, Pakete mit ausreichend NVMe für npm-Prewarm buchen.

Apple-Silicon-Remote-Macs
reproduzierbare Hook-Runbooks
Support bei Parallelitäts-Tuning