
Sechzig Container auf einem Server
Eine Bare-Metal-Box führt Dutzende bis Hunderte von Hoody-Containern aus. KSM und BTRFS-Dedup machen die Marginalkosten nahezu null.
Es ist 14 Uhr. Der Vorfall von 7 Uhr morgens wird im Post-Mortem aufgearbeitet. Sechs Engineers wollen die exakte Log-Sequenz durchgehen, die der diensthabende SRE damals gesehen hat. Du streamst den Snapshot über eine einzige Hoody-Pipe-URL mit ?n=8. Alle sehen die Kaskade im selben Moment auf ihrem eigenen Terminal abfeuern – keine Screenshots, kein asynchrones Scrollen, keine Zoom-Aufzeichnung.
Nimm die Logdatei der Vorfallszeit von heute Morgen aus deinem hoody-files-Snapshot. Streame sie durch einen Hoody-Pipe-Pfad mit ?n=8. Acht Engineers holen denselben Pfad per curl ab. Die Pipe wartet, bis alle verbunden sind, dann wandern die Bytes einmal mit dem Tempo durch, das du gesetzt hast – jeder Reader sieht dieselbe Zeile im selben Moment.
# The 7am incident is captured in incident-2026-05-04.log
# (snapshotted from /var/log/app at 07:25 by the on-call SRE).
# Replay it through a pipe path with ?n=8 — the server waits
# until eight readers connect, then the bytes move through once.
# pv -L 50k rate-limits the replay to a readable 50KB/s.
cat incident-2026-05-04.log \
| pv -L 50k \
| curl -T - \
"https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"
# [INFO] Waiting for 8 receiver(s) to connect...
# [INFO] Streaming to 8 receiver(s) at 50.0 KB/s# Each engineer in the post-mortem call runs the same line.
# They block until everyone has joined, then the cascade scrolls
# past their terminal at the exact rate the SRE saw at 07:23.
curl "https://prod-pipe.containers.hoody.com/api/v1/pipe/replay?n=8"
# 07:23:14 INFO POST /v1/checkout u_28f
# 07:23:15 WARN stripe latency 2.4s
# 07:23:16 ERR 500 stripe timeout
# 07:23:17 ··· auto-rollback armed
# ...the whole cascade, in order, on every terminal at once.Zwei Bausteine der dokumentierten Pipe-API: PUT /api/v1/pipe/[path] auf der Sender-Seite, GET /api/v1/pipe/[path] auf jedem Reader, beide mit demselben n als Schlüssel. Der Server reicht den Content-Type des Senders weiter, hält die Verbindung bis zu einer 5-Minuten-TTL offen, während er auf Reader wartet, und wendet Backpressure an, wenn ein einzelner Reader langsam ist. Das Replay-Tempo bestimmt allein der Sender – pv, dd oder ein Rate-Limiter deiner Wahl.
Ein scrollender Stream verändert das Gespräch. Die Leute hören auf zu streiten, was passiert ist, und fangen an, zu beobachten, was passiert ist. Drei Eigenschaften der Pipe machen das möglich.
n=N ist in der Pipe-API dokumentiert: Jeder Reader, der mit demselben n in denselben Pfad einsteigt, bekommt eine identische Fan-Out-Kopie. Acht Engineers sehen alle dieselbe Zeile im selben Augenblick vorbeiscrollen – niemand ist voraus, niemand kneift die Augen vor dem Screenshare zusammen.
Echte Prod-Logs scrollen schneller, als Menschen sie aufnehmen können. pv -L 50k drosselt das Replay auf ein lesbares Tempo; die Pipe trägt das Tempo, das der Sender wählt. Du kannst das Post-Mortem pausieren, indem du den Sender mit ctrl-Z anhältst, und mit fg wieder starten – das Terminal jedes Readers pausiert mit dir.
Die Pipe speichert null Bytes. Wenn cat fertig ist oder der SRE den Sender mit ctrl-C beendet, schließt sich der Pfad – kein übrig gebliebener Endpoint im Internet, kein Transkript, das verwaltet werden muss. Lass es aus dem Snapshot noch einmal laufen, für alle, die zu spät zum Call kamen.
Vier Schläge vom Vorfallszeit-Log bis zur gemeinsamen Post-Mortem-Wiedergabe. Nichts hier ist eigene Infrastruktur – der Snapshot lebt in hoody-files, das Replay reitet auf einer einzigen Pipe-URL.
Der diensthabende SRE kopiert /var/log/app um 07:25 in einen hoody-files-Bucket. Die Datei ist die Single Source of Truth für alles, was im Kaskaden-Fenster passiert ist.
Der Lead schreibt eine Hoody-Pipe-URL mit ?n=8 (sechs Engineers + zwei Plätze für Nachzügler) und postet sie in den Post-Mortem-Channel. Receiver können zuerst verbinden – die Pipe hält den Slot bis zu 5 Minuten.
Der SRE leitet den Snapshot durch pv -L 50k in die URL. Der Server wartet, bis acht curls verbunden sind, dann fließen die Bytes einmal im Gleichschritt durch – die Kaskade feuert auf sechs Terminals im selben Augenblick ab.
Der Director kommt spät dazu. Lass dieselbe Zeile noch einmal laufen. Die Pipe ist ein Pfad, kein Ort – nichts zu suchen, nichts zurückzuspulen, nichts auf dem Server gespeichert. Einfach noch einmal Play drücken.
Aus der dokumentierten Pipe-API-Spezifikation. Limits und Verhalten, die aus einer einzigen URL ein Post-Mortem-Theater machen.
Dokumentiertes Limit für n. Deinem Post-Mortem-Call gehen die Plätze nicht aus – die Pipe skaliert auf eine ganze Org.
Die Pipe streamt direkt von Ende zu Ende. Das Replay hinterlässt keine Spur auf dem Server, sobald der Sender die Verbindung trennt.
Receiver können sich vor dem Sender verbinden; die Pipe hält den Slot bis zu 5 Minuten für Nachzügler offen.
Quelle: Hoody Pipe API – dokumentierte Limits für /api/v1/pipe/[path], n-Parameter (1–256) und TTL für nicht etablierte Pipes.
Das Post-Mortem ist kein Dokument. Es ist ein Stream, den alle gemeinsam anschauen.
Die Tools und Rituale, die du gerade aufrufst, um ein Team durch eine Vorfalls-Timeline zu führen. Jedes davon speichert etwas, kostet pro Sitz oder verliert das Timing. Die Pipe ist eine URL mit gemeinsamem Playhead.
Die Kaskade feuert auf sechs Terminals zugleich. Das Gespräch verändert sich. Die Leute hören auf zu streiten, was passiert ist, und fangen an, zu beobachten, was passiert ist.