
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.
hoody-pipe ya sirve un formulario de subida web en cada ruta que controla. Arrastra un archivo a la página, los bytes fluyen por el pipe y entran al stdin de tu script. Has escrito cero líneas de código de subida.
Suelta un archivo o haz clic para subir
cualquier tamaño · cualquier tiposin código de subida, sin bucket S3, sin URLs presignadas
hoody-pipe ejecuta una UI web en la raíz de la ruta y un fallback sin JavaScript en /noscript. Ambos transmiten bytes multipart directamente a quien esté leyendo la misma ruta. Tu script lee el pipe — esa es toda la fontanería.
https://pipe.hoody.com/uploadCualquier ruta que no hayas reservado se convierte en un pipe. La URL es la página de subida.
GET /upload — formulario de subida autoservidoHoody te sirve el formulario: zona de drop, parser multipart, nonce de CSP, todo incluido. /noscript existe para navegadores restringidos.
PUT /api/v1/pipe/upload (multipart/form-data)La primera parte multipart se desempaqueta y se transmite al receptor. Sin staging en el servidor, sin archivos temporales.
curl …/api/v1/pipe/upload | python process.pyReceptor y emisor se conectan dentro de un TTL de 5 minutos. El script no sabe que está detrás de una página web — simplemente lee los bytes.
El pipe es el servidor de subida. Tu script es el receptor. No hay un tercer proceso — sin Lambda, sin API gateway, sin función de pegamento — entre la zona de drop y tu stdin.
Cada elemento de abajo es el trabajo de un día normal para construir un uploader puntual. El pipe trae todo eso de serie.
La UI del pipe renderiza un área drag-and-drop, un fallback de clic-para-elegir, y feedback de progreso. /noscript sirve un formulario HTML puro para navegadores sin JS — misma ruta, sin código adicional.
Cuando el navegador hace POST de multipart/form-data, el servidor extrae la primera parte y la transmite. Sin buffering del cuerpo, sin limpieza de archivos temporales, sin librería multipart de diez líneas.
El formulario trae un nonce CSP fresco. Los content-types peligrosos (text/html, image/svg+xml, application/javascript) se reescriben a text/plain antes de llegarte. OPTIONS gestiona el preflight cross-origin.
Ejecuta tu script antes o después de que alguien suba — el pipe mantiene la conexión hasta un TTL de 5 minutos hasta que ambos extremos estén presentes. El número de receptores (n) es configurable hasta 256.
Lado a lado: el pipeline de subida que habrías construido, frente a la URL a la que apuntas tu script.
Tú escribiste el script. Hoody escribió el formulario de subida.
process.py — lee stdin, haz el trabajo
while read chunk; do …la página, el formulario, el parser, la seguridad
GET /upload — autoservidoLos patrones a los que recurren los desarrolladores cuando necesitan una subida de archivo puntual. Cada uno cobra un peaje de configuración — buckets que aprovisionar, middleware que instalar, claves de firma que rotar. El pipe es una URL.
Elige una ruta. Lee el pipe. El formulario de subida ya está vivo en esa URL.