Aller au contenu
kit / pipe
PipeHOODY PIPE

Pipes nommés via Internet

POST vers un chemin. GET depuis le même chemin. Les données s'écoulent directement de l'émetteur au récepteur — sans tampon, sans upload, sans stockage. Juste HTTP.

pipe · transfert en direct

Terminal A — Émetteur

$ curl -T report.pdf \

…/pipe/my-report

[INFO] En attente de récepteur...

[INFO] Streaming vers 1 récepteur(s)...

[INFO] Transfert terminé.

Terminal B — Récepteur

$ curl \

…/pipe/my-report

-o report.pdf

% Total report.pdf

100 2.4M 100 2.4M 0 0 1.8M

Zéro stockage·Streaming temps réel·Jusqu'à 256 récepteurs·TTL 5 min
kit / pipe / how-it-works
FONCTIONNEMENT

Les données transitent, elles ne se stockent pas

Chaque octet que vous envoyez arrive aux récepteurs en temps réel. Le serveur est un fil, pas un entrepôt.

SOURCE

émetteur

PUT / POST/pipe/{path}

SERVEUR PIPE

zéro stockage · jusqu'à 256 récepteurs

GET/pipe/{path}

DESTINATION

récepteur

01

L'émetteur ouvre

L'émetteur fait un POST ou PUT vers n'importe quel chemin. Le serveur attend — jusqu'à 5 minutes — qu'un récepteur se connecte.

02

Les octets transitent

Les données s'écoulent octet par octet sur le fil. Zéro tampon. Aucun fichier temporaire. Aucune étape d'upload.

03

Les récepteurs se connectent

Les récepteurs font un GET vers le même chemin et récupèrent le flux en direct. Jusqu'à 256 récepteurs peuvent recevoir d'un seul émetteur.

kit / pipe / recipes
RECETTES

Compositions de pipe courantes

La plupart des recettes se résument à deux commandes curl — une pour envoyer, une pour recevoir.

#1

Transfert de fichier

Livraison pair-à-pair, sans stockage intermédiaire.

émetteur → récepteur

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

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

#2

Flux de logs en direct

Suivez les logs d'un conteneur en temps réel depuis n'importe quel terminal.

émetteur → récepteur

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

# curl …/pipe/logs

#3

Partage d'écran

Diffusez le bureau vers jusqu'à 10 spectateurs. Sans WebRTC.

émetteur → récepteur

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

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

#4

Synchronisation de répertoire

Compressez, diffusez et décompressez un arbre de répertoires en un seul pipeline.

émetteur → récepteur

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

# curl …/pipe/proj | tar xzf -

#5

Transfert chiffré

Chiffrement E2E — le serveur ne voit jamais le texte en clair.

émetteur → récepteur

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

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

#6

Diffusion en fanout

Distribuez un artefact de build exactement à 3 consommateurs simultanément.

émetteur → récepteur

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

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

#7

Spectateur de progression (3 parties)

Observez la vitesse, l'ETA et les octets sans consommer un slot de récepteur.

émetteur → récepteur

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

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

kit / pipe / protocols
PROTOCOLES & CONTENU

Ce qui peut transiter par un pipe

Tout Content-Type qui n'est pas exécutable en tant que script transite verbatim. Les types MIME dangereux sont réécrits en text/plain — les données ne sont pas perdues, le XSS est prévenu.

application/octet-streamPUT → GET

Fichiers binaires, archives, images

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

Logs, stdin, config, flux stdout

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

Upload de fichier navigateur (première partie seulement)

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

Partage d'écran, vidéo enregistrée

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

Surveillance de progression, vitesse/ETA/état

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

Réécrit en text/plain avant transfert — XSS prévenu, données non perdues

/api/v1/pipe/[path]
En-têtes personnalisésPUT → GET

Métadonnées X-Hoody-Pipe, X-Piping transmises

/api/v1/pipe/[path]

Tous les endpoints se trouvent sur /api/v1/pipe/[path]. La direction décrit qui écrit, qui lit.

kit / pipe / limits
LIMITES

Conçu pour le volume

Limites strictes appliquées par serveur. HTTP 429 quand la capacité est pleine, HTTP 414 quand les chemins sont trop longs.

#1

256

Récepteurs max sur un seul chemin

#2

1 000

Connexions en attente non établies

#3

1 000

Flux simultanés en cours

#4

5 min

TTL avant éviction HTTP 408

#5

1 024

Longueur max du chemin en caractères

#6

50

Spectateurs de progression par chemin

kit / pipe / endpoints
API

9 endpoints, deux commandes qui comptent

POST ou PUT pour envoyer. GET pour recevoir. Tout le reste est de l'observabilité.

Observabilité & UI

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

GET /health → { status, activePipes }

GET
/api/v1/pipe/healthJSON : statut, version, activePipes
GET
/api/v1/pipe/versionChaîne de version en texte brut
GET
/api/v1/pipe/helpExemples curl auto-hébergés
GET
/api/v1/pipeInterface Web UI sans-code pour uploads
GET
/api/v1/pipe/noscriptUI de secours pour navigateurs sans-JS
OPTIONS
/api/v1/pipe/{path}Preflight CORS

Transfert de données

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

POST ou PUT pour envoyer · GET pour recevoir

POST
/api/v1/pipe/{path}Envoyer les données ; streaming de statut [INFO] retour à l'émetteur
PUT
/api/v1/pipe/{path}Alias pour POST ; naturel pour curl -T file
GET
/api/v1/pipe/{path}Recevoir les données ; blocage jusqu'à connexion de l'émetteur
kit / pipe / cta

À deux commandes curl

Aucun SDK. Aucune configuration d'auth. Aucune limite de taille de fichier. Lancez un conteneur Pipe et commencez à transférer.

Lire la documentation