Ir al contenido
kit / pipe
PipeHOODY PIPE

Tuberías con nombre por internet

Haz POST a una ruta. Haz GET en la misma ruta. Los datos fluyen directamente del emisor al receptor: sin buffering, sin subidas, sin almacenamiento. Solo HTTP.

pipe · transferencia en vivo

Terminal A — Emisor

$ curl -T report.pdf \

…/pipe/my-report

[INFO] Esperando receptor...

[INFO] Transmitiendo a 1 receptor(es)...

[INFO] Transferencia completa.

Terminal B — Receptor

$ curl \

…/pipe/my-report

-o report.pdf

% Total report.pdf

100 2.4M 100 2.4M 0 0 1.8M

Cero almacenamiento·Streaming en tiempo real·Hasta 256 receptores·TTL de 5 min
kit / pipe / how-it-works
CÓMO FUNCIONA

Los datos fluyen a través, no hacia adentro

Cada byte que envías llega a los receptores en tiempo real. El servidor es un cable, no un almacén.

EMISOR

emisor

PUT / POST/pipe/{path}

SERVIDOR PIPE

cero almacenamiento · hasta 256 receptores

GET/pipe/{path}

RECEPTOR

receptor

01

El emisor abre

El emisor hace POST o PUT a cualquier ruta. El servidor espera, hasta 5 minutos, que un receptor se conecte.

02

Los bytes fluyen

Los datos se transmiten byte a byte por el canal. Cero buffering. Sin archivos temporales. Sin paso de subida.

03

Los receptores se conectan

Los receptores hacen GET a la misma ruta y obtienen el stream en vivo. Hasta 256 receptores pueden recibir el fanout de un solo emisor.

kit / pipe / recipes
RECETAS

Composiciones comunes de Pipe

La mayoría de las recetas son dos comandos curl: uno para enviar, uno para recibir.

#1

Transferencia de archivos

Entrega entre pares, sin almacenamiento intermediario.

emisor → receptor

$ curl -T report.pdf …/pipe/report

# curl …/pipe/report -o report.pdf

#2

Stream de logs en vivo

Sigue los logs de un contenedor en tiempo real desde cualquier terminal.

emisor → receptor

$ tail -f app.log | curl -T - …/pipe/logs

# curl …/pipe/logs

#3

Compartir pantalla

Transmite el escritorio a hasta 10 espectadores. Sin WebRTC.

emisor → receptor

$ ffmpeg … | curl -T - …/pipe/screen?n=10

# browser: …/pipe/screen?n=10&video

#4

Sincronización de directorio

Empaqueta, transmite y desempaqueta un árbol de directorios en una sola pipeline.

emisor → receptor

$ tar czf - ./project | curl -T - …/pipe/proj

# curl …/pipe/proj | tar xzf -

#5

Transferencia cifrada

Cifrado E2E: el servidor nunca ve el texto plano.

emisor → receptor

$ openssl enc … < secret.doc | curl -T - …/pipe/enc

# curl …/pipe/enc | openssl enc -d …

#6

Broadcast fanout

Distribuye un artefacto de build exactamente a 3 consumidores simultáneamente.

emisor → receptor

$ curl -T build.zip …/pipe/release?n=3

# curl …/pipe/release?n=3 (×3 receivers)

#7

Espectador de progreso (3 partes)

Observa velocidad, ETA y bytes sin ocupar un slot de receptor.

emisor → receptor

$ curl -T dataset.tar.gz …/pipe/ds (sender)

# curl …/pipe/ds + browser: …/pipe/ds?progress

kit / pipe / protocols
PROTOCOLOS Y CONTENIDO

Qué puede fluir por una Pipe

Cualquier Content-Type que no sea ejecutable como script fluye literalmente. Los tipos MIME peligrosos se reescriben a text/plain: los datos no se pierden, se previene XSS.

application/octet-streamPUT → GET

Archivos binarios, comprimidos, imágenes

/api/v1/pipe/[path]
text/plainPOST → GET

Logs, stdin, config, streams stdout

/api/v1/pipe/[path]
multipart/form-dataPOST → GET

Subida de archivo desde navegador (solo primera parte)

/api/v1/pipe/[path]
video/webm, video/mp4PUT → navegador

Compartir pantalla, vídeo grabado

/api/v1/pipe/[path]?video
text/event-stream (SSE)GET espectador

Monitorización de progreso, velocidad/ETA/estado

/api/v1/pipe/[path]?progress
text/html (reescrito)PUT → GET

Se reescribe a text/plain antes de enviar: XSS prevenido, datos no perdidos

/api/v1/pipe/[path]
Cabeceras personalizadasPUT → GET

Metadatos X-Hoody-Pipe, X-Piping reenviados

/api/v1/pipe/[path]

Todos los endpoints viven en /api/v1/pipe/[path]. La dirección describe quién escribe y quién lee.

kit / pipe / limits
LÍMITES

Construido para el volumen

Límites estrictos aplicados por servidor. HTTP 429 cuando la capacidad está llena, HTTP 414 cuando las rutas son demasiado largas.

#1

256

Máx. receptores en una sola ruta

#2

1.000

Conexiones pendientes sin establecer

#3

1.000

Streams en vuelo simultáneos

#4

5 min

TTL antes del desalojo HTTP 408

#5

1.024

Longitud máxima de ruta en caracteres

#6

50

Espectadores de progreso por ruta

kit / pipe / endpoints
API

9 endpoints, dos comandos que importan

POST o PUT para enviar. GET para recibir. El resto es observabilidad.

Observabilidad e interfaz

{count, plural, =1 {# endpoint} other {# endpoints}'}

GET /health → { status, activePipes }

GET
/api/v1/pipe/healthJSON: status, version, activePipes
GET
/api/v1/pipe/versionCadena de versión en texto plano
GET
/api/v1/pipe/helpEjemplos de curl alojados automáticamente
GET
/api/v1/pipeInterfaz web sin código para subidas
GET
/api/v1/pipe/noscriptInterfaz fallback para navegadores sin JS
OPTIONS
/api/v1/pipe/{path}Preflight CORS

Transferencia de datos

{count, plural, =1 {# endpoint} other {# endpoints}'}

POST o PUT para enviar · GET para recibir

POST
/api/v1/pipe/{path}Enviar datos; transmite estado [INFO] de vuelta al emisor
PUT
/api/v1/pipe/{path}Alias para POST; natural para curl -T file
GET
/api/v1/pipe/{path}Recibir datos; se bloquea hasta que el emisor se conecta
kit / pipe / cta

A dos comandos curl de distancia

Sin SDKs. Sin configuración de auth. Sin límites de tamaño de archivo. Crea un contenedor Pipe y empieza a transferir.

Leer la documentación