
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.
Hay un incendio. Tres ingenieros quieren los mismos logs al mismo tiempo. Un emisor canaliza tail -F a una URL de Hoody Pipe. Cualquiera con el enlace ejecuta curl y ve los bytes pasar en tiempo real. Sin bastion, sin instalación de agentes, sin licencia de dashboard.
En el contenedor de producción, una sola línea canaliza tail directo a una URL de Hoody Pipe. Los receptores hacen GET a la misma ruta. El pipe no guarda nada — los bytes fluyen a través. El primer receptor en conectarse desbloquea al emisor; hasta 256 lectores pueden unirse a la misma ruta.
# En el contenedor de producción — una línea.
# tail -F sigue líneas nuevas para siempre; curl -T - hace PUT de stdin
# directo a una ruta de pipe. ?n=4 dice "espera a 4 lectores".
tail -F /var/log/app/*.log \
| curl -T - \
"https://prod-pipe.containers.hoody.com/api/v1/pipe/live?n=4"
# [INFO] Waiting for 4 receiver(s) to connect...
# [INFO] Streaming to 4 receiver(s)...# Cualquier ingeniero con la URL — mismo comando, misma ruta.
# El cuerpo de la respuesta ES el stdout en vivo del emisor.
# Hasta 256 lectores pueden unirse. SSE de progreso también disponible.
curl "https://prod-pipe.containers.hoody.com/api/v1/pipe/live?n=4"
# 200 GET /v1/orders/8421 · 18ms
# POST /v1/checkout user=u_28f payload=ok
# 500 POST /v1/checkout · stripe timeout
# retrying charge attempt=2/3Dos piezas de la API documentada de Pipe: PUT /api/v1/pipe/[path] en el emisor, GET /api/v1/pipe/[path] en cada lector, ambas indexadas por el mismo n. El servidor reenvía el Content-Type del emisor, mantiene la conexión hasta un TTL de 5 minutos esperando lectores y aplica backpressure si algún lector va lento.
Una URL de logs se comporta distinto a una licencia de Datadog. Se lee por URL, no por login. Desaparece cuando el emisor se detiene. Y escala a un canal entero de incidente.
n=N está documentado en la API de Pipe: cada lector que se une a la misma ruta con el mismo n recibe una copia idéntica del fan-out. SREs, on-call, el fundador mirando desde el móvil — todos siguen el mismo stream a la vez.
No hay nada que instalar del lado del lector. Cualquier cosa que hable HTTP — curl, fetch, una pestaña del navegador, un canal de incidente de Slack previsualizando la URL — es un tail de logs válido. Los bytes son el cuerpo de la respuesta.
Cuando el emisor se desconecta, el pipe desaparece. Sin retención que configurar, sin volumen de logs que limpiar, sin endpoint sobrante expuesto a internet. La URL era una ruta, no un lugar — y la ruta se cierra cuando termina el incendio.
De la spec de la API de Pipe. Límites y comportamientos que hacen que una URL se sienta como infraestructura, no un juguete.
El tope documentado de n. Tu canal de incidente no se queda sin asientos.
El pipe es streaming directo de extremo a extremo. Sin disco intermedio, sin retención que gestionar.
Los receptores pueden conectarse antes que el emisor; el servidor mantiene el slot hasta 5 minutos.
Fuente: API de Hoody Pipe — límites documentados para /api/v1/pipe/[path], parámetro n y TTL del pipe no establecido.
Los logs ya no son un lugar. Son una ruta.
El conjunto de herramientas y rituales que invocas hoy para que tres ingenieros miren el mismo log de producción. Cada uno cobra por licencia, por agente o por dashboard. El pipe es una URL.
El incendio termina. Haces ctrl-C al emisor. El pipe desaparece. No hay nada que limpiar.