
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.
Schritt 3 deines Agents generiert Tokens. Schritt 4 muss anfangen sie zu konsumieren, bevor Schritt 3 fertig ist. Pipe den Output des Modells direkt in einen Pfad; der nächste Prozess curlet denselben Pfad. Keine SSE-Plumbing, kein Broker, kein Callback-Gewürge — Bytes bewegen sich in Lichtgeschwindigkeit.
# stream tokens upwardai.generate([ stream: true]) | curl -T - \ /pipe/tokenskein Buffer · kein Broker · kein Re-Encode
# read at line speedcurl \ /pipe/tokens \ | jq -c .delta | apply()# no buffer between usDie meisten Streaming-Stacks brauchen einen SSE-Endpoint, eine Queue, einen Pub/Sub-Bus und einen Framework-Callback, um Tokens einen Meter weit zu bewegen. Die Pipe ersetzt all das: der Producer schreibt mit PUT auf einen Pfad, der Consumer liest mit GET vom selben Pfad. Bytes fließen direkt zwischen beiden — kein Zwischenspeicher auf dem Server.
curl -T - /pipe/tokenscurl /pipe/tokensServer-seitiger Storage: null. Bytes streamen vom Sender zum Empfänger, sobald beide verbinden, mit Backpressure pro Empfänger. Der Endpoint existiert nur, weil zwei curls ihn berührt haben.
# Step 3 — agent generates and pipes tokens upward.
ai.generate({ model, stream: true }) \
| jq -c '{delta: .text}' \
| curl -T - https://pipe.hoody.com/api/v1/pipe/run-42/tokens?n=3
# Step 4 — three readers GET the same path. The pipe fans out.
curl https://pipe.hoody.com/api/v1/pipe/run-42/tokens?n=3 | tee evaluator.log
curl https://pipe.hoody.com/api/v1/pipe/run-42/tokens?n=3 | jq -c .delta
curl https://pipe.hoody.com/api/v1/pipe/run-42/tokens?n=3 | websocketd --port=8080
# All four processes block until the n=3 readers connect, then bytes flow.PUT pusht die Bytes hoch, GET zieht sie runter. Der ?n-Parameter sagt, auf wie viele Leser zu warten ist; die Pipe blockiert, bis so viele verbinden, dann fan-outet sie gleichzeitig. Kein Client-SDK, kein Broker, keine SDK-Installation — nur HTTP.
Sobald der Producer pipet, kann alles, was HTTP spricht, abonnieren. Bis zu 256 Leser auf demselben Stream, von der Pipe fan-outet, mit Backpressure pro Empfänger. Keine Client-Library zu installieren, kein Relay zu provisionieren.
Ein EventSource- oder fetch-Reader trifft den Pipe-Pfad und bekommt denselben Byte-Stream, den der Agent produziert. Kein SSE-Framing auf deinem Server — die Pipe trägt die Bytes, die das Modell emittiert, roh.
Ein Evaluator-Prozess abonniert denselben Pfad. Er kann den Producer in dem Moment unterbrechen, in dem der Output abdriftet. Zwei Agents auf derselben Leitung, kein Orchestrator-Framework, das dazwischen vermittelt.
Ein Logging-Consumer liest, gzipt und schreibt auf Disk. Eine Debugger-UI liest parallel. Keiner weiß von den anderen — die Pipe gibt jedem Leser einfach dieselben Bytes.
Das LLM streamt. Die Pipe streamt. Der Leser streamt. Keine Schicht dazwischen.
Die Verdrahtung, zu der du greifst, wenn ein Prozess Tokens in Echtzeit an einen anderen streamen muss. Jede davon bringt ihr eigenes Framing, ihr eigenes SDK, ihre eigene Ops-Oberfläche mit. Die Pipe ist der Draht.
Hör auf, Streaming-Infrastruktur zwischen zwei Prozesse zu verdrahten, die schon HTTP sprechen. Öffne einen Pfad. Pipe rein. Lies raus.