Soixante conteneurs sur un seul serveur
Une seule machine bare-metal fait tourner des dizaines à des centaines de conteneurs Hoody. La déduplication KSM et BTRFS rend le coût marginal quasi nul.
L'étape 3 de votre agent génère des tokens. L'étape 4 doit commencer à les consommer avant que l'étape 3 finisse. Pipe la sortie du modèle direct dans un chemin ; le processus suivant curl le même chemin. Pas de plomberie SSE, pas de broker, pas de jonglerie de callbacks — les bytes circulent à pleine vitesse.
# streame les tokens vers le hautai.generate([ stream: true]) | curl -T - \ /pipe/tokenspas de buffer · pas de broker · pas de ré-encodage
# lit à pleine vitessecurl \ /pipe/tokens \ | jq -c .delta | apply()# pas de buffer entre nousLa plupart des stacks de streaming demandent un endpoint SSE, une queue, un bus pub/sub et un callback de framework pour bouger les tokens d'un mètre. Le pipe remplace tout ça : le producer écrit sur un chemin avec PUT, le consumer lit du même chemin avec GET. Les bytes circulent directement entre les deux — aucun stockage intermédiaire sur le serveur.
curl -T - /pipe/tokenscurl /pipe/tokensStockage côté serveur : zéro. Les bytes streament du sender au receiver dès que les deux se connectent, avec backpressure gérée par receiver. L'endpoint existe seulement parce que deux curls l'ont touché.
# 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 pousse les bytes vers le haut, GET les tire vers le bas. Le paramètre ?n dit combien de lecteurs attendre ; le pipe bloque jusqu'à ce que ce nombre se connecte, puis fan-out simultanément. Pas de SDK client, pas de broker, pas d'install SDK — uniquement HTTP.
Une fois que le producer pipe, tout ce qui parle HTTP peut s'abonner. Jusqu'à 256 lecteurs sur le même stream, fan-outés par le pipe avec backpressure gérée par receiver. Aucune librairie client à installer, aucun relay à provisionner.
Un EventSource ou un fetch reader tape le chemin pipe et reçoit le même stream de bytes que l'agent produit. Pas de framing SSE sur votre serveur — le pipe transporte les bytes que le modèle émet, bruts.
Un processus évaluateur s'abonne au même chemin. Il peut interrompre le producer dès que la sortie dérive. Deux agents sur le même fil, sans framework d'orchestrator entre les deux.
Un consumer de logging lit, gzip et écrit sur disque. Une UI debugger lit en parallèle. Aucun ne sait que les autres existent — le pipe rend simplement les mêmes bytes à chaque lecteur.
Le LLM streame. Le pipe streame. Le lecteur streame. Aucune couche intermédiaire.
Le câblage que vous attrapez quand un processus doit streamer des tokens à un autre en temps réel. Chacun embarque son propre framing, son propre SDK, sa propre surface d'ops. Le pipe est le fil.
Arrêtez de câbler de l'infra de streaming entre deux processus qui parlent déjà HTTP. Ouvrez un chemin. Pipez dedans. Lisez dehors.