
Sesenta contenedores en un servidor
Un servidor bare-metal ejecuta decenas a cientos de contenedores Hoody. KSM y dedup BTRFS hacen que el costo marginal sea casi cero.
El paso 3 de tu agente genera tokens. El paso 4 necesita empezar a consumirlos antes de que el paso 3 termine. Canaliza la salida del modelo directo a una ruta; el siguiente proceso hace curl a la misma ruta. Sin plomería SSE, sin broker, sin pelearte con callbacks — los bytes se mueven a velocidad de línea.
# stream tokens upwardai.generate([ stream: true]) | curl -T - \ /pipe/tokenssin buffer · sin broker · sin re-encode
# read at line speedcurl \ /pipe/tokens \ | jq -c .delta | apply()# no buffer between usLa mayoría de stacks de streaming necesitan un endpoint SSE, una cola, un bus pub/sub y un callback de framework para mover tokens cuatro pasos. El pipe los reemplaza todos: el productor escribe a una ruta con PUT, el consumidor lee de la misma ruta con GET. Los bytes fluyen directos entre los dos — sin almacenamiento intermedio en el servidor.
curl -T - /pipe/tokenscurl /pipe/tokensAlmacenamiento del lado del servidor: cero. Los bytes fluyen del emisor al receptor en cuanto ambos conectan, con backpressure manejado por receptor. El endpoint existe solo porque dos curls lo tocaron.
# 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 empuja los bytes hacia arriba, GET los tira hacia abajo. El parámetro ?n dice cuántos lectores esperar; el pipe se bloquea hasta que esos se conectan, luego hace fan-out simultáneo. Sin SDK de cliente, sin broker, sin instalación de SDK — solo HTTP.
Una vez que el productor está canalizando, cualquier cosa que hable HTTP puede suscribirse. Hasta 256 lectores en el mismo stream, repartidos por el pipe con backpressure manejado por receptor. Sin librería de cliente que instalar, sin relé que aprovisionar.
Un EventSource o un lector con fetch ataca la ruta del pipe y obtiene el mismo flujo de bytes que está produciendo el agente. Sin framing SSE en tu servidor — el pipe transporta los bytes que el modelo emite, en crudo.
Un proceso evaluador se suscribe a la misma ruta. Puede interrumpir al productor en cuanto la salida derive. Dos agentes en el mismo cable, sin orquestador de framework mediando entre ellos.
Un consumidor de logs lee, gzip-ea y escribe a disco. Una UI de depuración lee en paralelo. Ninguno sabe que existen los demás — el pipe simplemente entrega a cada lector los mismos bytes.
El LLM transmite. El pipe transmite. El lector transmite. Sin capa intermedia.
El cableado que sacas cuando un proceso necesita transmitir tokens a otro en tiempo real. Cada uno trae su framing, su SDK, su superficie de ops. El pipe es el cable.
Deja de cablear infraestructura de streaming entre dos procesos que ya hablan HTTP. Abre una ruta. Canalízala. Lee de ella.