2026 OpenClaw MeshMac in der Praxis: Linear Webhook — minimale Schritte für geteilten Build-Status-Broadcast und Zusammenfassung zurück ins Issue
Drei typische Bruchstellen
- Signatur nach dem Parsen: JSON-Parser vor HMAC — jede Neuformatierung bricht
Linear-Signature. - Secret-Splitting auf Buildern: Jeder
mesh_node_idbesitzt Webhook-URL und Secret — Rotation und Compliance werden untragbar. - Retry-Stürme: Linear wiederholt Zustellungen; ohne Idempotenz starten parallele Builds und doppelte Chat-Nachrichten.
Entscheidungsmatrix: Webhook-Endpunkt (Auszug)
| Kriterium | Zentrales Gateway | Pro Builder-Knoten |
|---|---|---|
| Secret-Rotation | eine Datei, 0440 | N Konfigurationen |
| Rohbody für HMAC | kontrollierte Middleware-Reihenfolge | heterogen, fehleranfällig |
| Mehrknoten-Failover | LB drain ohne Linear-Änderung | DNS/Webhook je Ausfall |
| Audit-Trail | ein Logstrom | fragmentiert |
| Broadcast-Dedupe | zentraler Cache | Wettlauf zwischen Knoten |
Pflicht- und Optionalfelder im Gateway (Beispiel)
| Feld / Header | Pflicht | Hinweis Mesh |
|---|---|---|
Linear-Signature | ja | exakt laut Linear-Dokumentation |
| Rohbody-Buffer | ja | keine transparente Rekodierung |
issue_id / Team | empfohlen | für Summary-Backchannel |
idempotency_key | ja | Delivery-Id oder Hash |
mesh_node_id | nach Schedule | sichtbar im Broadcast |
Gateway-Installation und Health-Check
- Schritt 1 — Topologie festlegen: Nur der Gateway-Host terminiert TLS für
POST /hooks/linear. MeshMac-Builder senden keine direkten Antworten an Linear. Referenz: Load-Balance und Failover. - Schritt 2 — OpenClaw installieren und Root setzen: Variable
OPENCLAW_CONFIG_ROOTauf ein nur für den Dienstuser beschreibbares Verzeichnis zeigen; Onboarding abschließen wie in Multi-Node-Deploy beschrieben. - Schritt 3 — Health-Checks: Liveness prüft Prozess und Port; Readiness prüft Schreibzugriff auf Queue-Backend und Erreichbarkeit interner DNS. Dokumentieren Sie dieselben Variablen wie in CI, um Drift zu vermeiden.
- Schritt 4 — Geheimnis ablegen: Linear Signing Secret nach
/etc/openclaw/secrets.d/linear/webhook_hmac, Modus0440, Gruppeopenclaw-hooks— nie ins Repository.
Zitierfähig: Health-Endpoints sollten unter fünf Sekunden antworten und keine Benutzer-Secrets in JSON zurückgeben; so bleibt der Webhook-Pfad von Diagnose-URLs getrennt.
Linear-Signaturverifikation
- Schritt 5 — Rohbytes puffern: Middleware-Kette so ordnen, dass der Handler zuerst den unveränderten Body als Bytefolge erhält — kein pretty-print, kein zusätzliches
utf-8-Reencode vor der Prüfung. - Schritt 6 — HMAC berechnen: Secret aus Schritt 4 lesen; HMAC-SHA256 gemäß Linear-Dokumentation über genau diese Bytes; Zeitstempel-Header optional gegen Toleranzfenster prüfen, um Replay zu begrenzen.
- Schritt 7 — Früh ablehnen: Bei Mismatch HTTP 401 ohne Payload-Details loggen — nur Korrelation-ID; erst bei Erfolg JSON parsen und Geschäftslogik ausführen.
Zitierfähig: In strukturierten Logs nur Issue-IDs und Delivery-Ids, niemals das komplette Secret oder Roh-JSON mit personenbezogenen Feldern.
Mit gemeinsamen Build-Skripten verketten
- Schritt 8 — Ereignis normalisieren: Aus dem Webhook ein internes Task-Objekt mit
issue_id, Team, Actor, Transition, Branch-Hinweis undprovider_run_idbilden — unabhängig davon, welcher MeshMac-Knoten später ausführt. - Schritt 9 — Idempotenz: Schlüssel aus Linear-Delivery-Id oder Hash aus Issue plus Transition plus Minutenfenster; in die Queue schreiben wie in Task-Queue-HowTo; HTTP 200 erst nach durable enqueue.
- Schritt 10 — Gemeinsames Skript: Worker auf beliebigem Knoten ruft ein Shell- oder Makefile-Ziel auf — Artefakt-Pfade, Xcode-Selektor und Locks sind im Skript zentral;
mesh_node_idwird beim Start in die Umgebung geschrieben und in jede Statuszeile aufgenommen.
Zitierfähig: Halten Sie die Webhook-Handler-Latenz unter zweihundert Millisekunden für Ack-only; schwere Arbeit gehört in die Queue — Linear wartet nicht auf Ihren vollständigen Xcode-Build.
Fehler, Retries und Benachrichtigungen
- Schritt 11 — Outbound-Retries: Chat-Webhooks und ähnliche Ziele: 429 und 5xx mit exponentiellem Backoff, Jitter und Cap — typisch bis fünf Versuche; 400 nicht blind wiederholen. Muster wie bei Teams-Mehrknoten-Webhook.
- Schritt 12 — Summary zurück nach Linear: Mit scoped API-Key optional GraphQL-Kommentar: eine Zeile Status, Link zum Run,
mesh_node_id— keine vollständigen Logs. Dedupe überprovider_run_idplus Ziel-Kommentar-Hash im Gateway.
Zitierfähig: Trennen Sie Broadcast-Kanäle (breit, dedupliziert) von Linear-Kommentaren (schmal, auditierbar); dasselbe Ereignis darf beide Pfade auslösen, aber mit unterschiedlichen Templates.
FAQ
Warum schlägt die Signaturprüfung reproduzierbar fehl?
Häufig hat ein Framework den Body bereits als Objekt materialisiert. Lösung: Raw-Reader vor allen Parsern, oder dedizierte Reverse-Proxy-Location ohne Body-Filter.
Braucht Linear eine öffentliche IP auf jedem Mac?
Nein — nur das Gateway braucht eine stabile HTTPS-URL. Die MeshMac-Knoten arbeiten outbound über SSH oder Agent; das entspricht dem üblichen Bastion- oder Hub-Modell für geteilte Builder.
Wie skaliere ich auf mehr als drei Knoten?
Erhöhen Sie Worker-Parallelität in der Queue, nicht die Webhook-URL-Anzahl. Der Gateway-Consumer skaliert horizontal; Linear sieht weiterhin einen Endpunkt.
Kurzfassung
Ein Gateway, Rohbody-HMAC, durable Queue mit Idempotenz, gemeinsames Build-Skript auf beliebigem MeshMac-Knoten, bounded Outbound-Retries und optional Linear-Summary — das ist der kleinste wiederholbare Pfad für zuverlässigen Mehrknoten-Betrieb.
MeshMac-Kapazität einplanen — nur öffentliche Seiten
Für parallele Builds auf mehreren Apple-Silicon-Knoten vergleichen Sie Pakete und Preise auf der Preisseite — ohne Anmeldung. SSH-, VNC- und Gateway-Hinweise stehen im Hilfezentrum, ebenfalls frei lesbar. Überblick und Positionierung: Startseite und Blog. Wenn Ihr Team Linear-getriebene Builds dauerhaft auf MeshMac ausführen will, ist der nächste sinnvolle Schritt die Kapazitätswahl passend zu Queue-Tiefe und gleichzeitigen Entwicklern — buchen Sie, sobald die Architektur oben steht.