
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.
Es un taller gratuito un sábado. Doscientas personas se han apuntado. No quieres un plan de Zoom para 200 asientos, una cuenta de Twitch, ni una agenda con tres zonas horarias. Transmites tu pantalla a una ruta de pipe con ?n=200, pegas la URL del receptor en la página del evento, y dejas que doscientas pestañas de navegador hagan el resto.
ONE PIPE URL · 200 RECEIVERS · ZERO BUFFERING
ffmpeg codifica tu display X11 a webm. curl hace PUT de ese stream a /api/v1/pipe/workshop?n=200. El pipe espera hasta que doscientos receptores se conecten a la misma ruta. Cada uno es una pestaña normal de navegador en la URL del receptor con ?video añadido — Hoody sirve un reproductor MSE embebido. Ninguna plataforma se interpone, los bytes nunca tocan disco, y la URL se desaloja sola cuando paras el codificador.
ffmpeg -f x11grab -i :0 -c:v libvpx -f webm lee el display y escribe webm a stdout. Webcam, slides, terminal — lo que sea que esté en :0.
curl -T - hace PUT del stdin a /api/v1/pipe/workshop?n=200. El pipe mantiene al emisor abierto hasta que doscientos receptores se conecten en la ruta correspondiente.
Pon la URL del receptor con ?video en la página del evento o en un DM. Sin app, sin registro, sin invitación de calendario — solo un enlace que el asistente clica.
El pipe devuelve una página HTML con un elemento de video MSE embebido. Doscientas pestañas de navegador ven el mismo stream en directo a la velocidad del receptor más lento.
?n=200 limita la audiencia. El pipe acepta hasta 256 receptores y reenvía el Content-Type del emisor para que un reproductor MSE en el navegador pueda decodificar el stream. Un n no coincidente devuelve 400. Cuando haces ctrl-C al codificador, la URL se desaloja sola — no hay nada que borrar.
Un taller de 200 asistentes normalmente significa alquilar un plan, un muro de cuentas, y una grabación que no querías. La URL del pipe es lo que queda después de quitar todo eso — una salida desde tu portátil, cero cuentas, cero artefactos que limpiar después.
Los bytes salen de tu portátil una vez. El pipe los reparte en abanico. Tu uplink no se multiplica por el tamaño de la audiencia — el espectador más lento marca el ritmo, no tu ancho de banda.
Sin plan de asientos de Zoom, sin handle de Twitch, sin canal de YouTube. El presentador tiene Hoody. Los doscientos asistentes tienen un navegador. Esa es toda la lista.
El pipe es puro streaming — los bytes pasan, no se escribe nada. Cuando paras el codificador, la URL está muerta. Sin política de retención, sin ticket GDPR, sin diálogo de consentimiento de la FTC sobre quién posee la grabación.
n se limita a 256 por ruta de pipe. Para audiencias mayores, reparte en abanico por varias rutas de pipe desde el mismo codificador, o pon delante de la URL del pipe un CDN que agregue.
El mismo mecanismo de pipe-y-?video se lee de tres formas distintas según el tipo de sala que estés llenando. Todas colapsan en la misma línea.
No querías ampliar Zoom para una tarde de sábado. Transmite la pantalla, pega la URL en la página del evento, y deja de pagar por capacidad que usas cuatro veces al año.
Nada se graba en un servidor en algún sitio. El pipe transmite; nada se almacena. Tus estudiantes no necesitan un handle de Twitch, un Discord o una cuenta de Google para ver — necesitan una URL.
Un enlace de meetup se reposta, se embebe, se replica. Cualquiera con la URL puede abrirla; cuando haces ctrl-C, la URL desaparece para todos. La audiencia escala sin que la plataforma escale con ella.
Un taller, una URL, y 200 asientos silenciosos. Sin plataforma, sin logins.
El elenco de herramientas de broadcast que cada organizador acumula — cada una asume un plan, una cuenta o una grabación que no pediste. La URL del pipe no asume ninguna.
La próxima vez que doscientas personas se apunten, mándales una URL — no una invitación de reunión.