Zum Inhalt springen
Kit / Pipe
PipeHOODY PIPE

Named Pipes über das Internet

An einen Pfad POSTen. Vom gleichen Pfad GETten. Daten fließen direkt vom Sender zum Empfaenger — kein Puffern, keine Uploads, kein Speichern.

pipe · Live-Transfer

Terminal A — Sender

$ curl -T report.pdf \

…/pipe/my-report

[INFO] Waiting for receiver...

[INFO] Streaming to 1 receiver(s)...

[INFO] Transfer complete.

Terminal B — Receiver

$ curl \

…/pipe/my-report

-o report.pdf

% Total report.pdf

100 2.4M 100 2.4M 0 0 1.8M

Zero storage·Real-time streaming·Up to 256 receivers·5-min TTL
kit / pipe / how-it-works
SO FUNKTIONIERT ES

Daten fließen durch, nicht hinein

Jedes Byte, das du sendest, kommt in Echtzeit bei den Empfängern an. Der Server ist ein Kabel, kein Lager.

QUELLE

Sender

PUT / POST/pipe/{path}

PIPE-SERVER

kein Speicher · bis zu 256 Empfänger

GET/pipe/{path}

SENKE

Empfänger

01

Sender öffnet

Sender POSTet oder PUTet an jeden Pfad. Der Server wartet – bis zu 5 Minuten – darauf, dass ein Empfänger sich verbindet.

02

Bytes fließen durch

Daten streamen byte für byte über die Leitung. Kein Buffering. Keine temporären Dateien. Kein Upload-Schritt.

03

Empfänger verbinden sich

Empfänger GETten denselben Pfad und ziehen den Live-Stream. Bis zu 256 Empfänger können von einem Sender fan-out betreiben.

kit / pipe / recipes
REZEPTE

Häufige Pipe-Kompositionen

Die meisten Rezepte sind zwei curl-Befehle – einer zum Senden, einer zum Empfangen.

#1

Datei-Transfer

Peer-to-Peer-Übertragung, kein Zwischenspeicher.

Sender → Empfänger

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

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

#2

Log-Streaming

Logs eines Containers in Echtzeit von einem beliebigen Terminal verfolgen.

Sender → Empfänger

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

# curl …/pipe/logs

#3

Fortschritts-Benachrichtigung

Desktop an bis zu 10 Zuschauer streamen. Kein WebRTC.

Sender → Empfänger

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

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

#4

Inter-Container-Kommunikation

Verzeichnisbaum packen, streamen und entpacken in einer Pipeline.

Sender → Empfänger

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

# curl …/pipe/proj | tar xzf -

#5

Verschlüsselte Übertragung

E2E-verschlüsselt — der Server sieht nie Klartext.

Sender → Empfänger

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

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

#6

Fan-Out-Broadcast

Ein Build-Artefakt gleichzeitig an genau 3 Empfaenger verteilen.

Sender → Empfänger

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

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

#7

Fortschritt beobachten (3-seitig)

Geschwindigkeit, ETA und Bytes beobachten, ohne einen Empfaenger-Slot zu verbrauchen.

Sender → Empfänger

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

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

kit / pipe / protocols
PROTOKOLLE & INHALTE

Was durch eine Pipe fließen kann

Jeder Content-Type, der nicht skript-ausführbar ist, fließt unverändert. Gefährliche MIME-Typen werden zu text/plain umgeschrieben — Daten werden nicht verworfen.

application/octet-streamPUT → GET

Binaerdateien, Archive, Bilder

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

Logs, stdin, Konfiguration, stdout-Streams

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

Browser-Datei-Upload (nur erster Teil)

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

Bildschirmfreigabe, aufgezeichnetes Video

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

Fortschritts-Monitoring, Geschwindigkeit/ETA/Status

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

Wird vor dem Weiterleiten zu text/plain umgeschrieben — XSS verhindert, Daten nicht verworfen

/api/v1/pipe/[path]
Benutzerdefinierte HeaderPUT → GET

X-Hoody-Pipe, X-Piping-Metadaten weitergeleitet

/api/v1/pipe/[path]

Alle Endpunkte liegen auf /api/v1/pipe/[path]. Richtung beschreibt, wer schreibt, wer liest.

kit / pipe / limits
LIMITS

Für hohe Volumen gebaut

Harte Limits pro Server. HTTP 429, wenn Kapazitaet voll. HTTP 414, wenn Pfade zu lang.

#1

256

Maximale Empfaenger auf einem einzelnen Pfad

#2

1,000

Ausstehende unaufgebaute Verbindungen

#3

1,000

Gleichzeitige laufende Streams

#4

5 Min.

TTL vor HTTP-408-Eviction

#5

1,024

Maximale Pfadlaenge in Zeichen

#6

50

Fortschritts-Zuschauer pro Pfad

kit / pipe / endpoints
API

9 Endpunkte, zwei Befehle, die zählen

POST oder PUT zum Senden. GET zum Empfangen. Alles andere ist Observability.

Observability & UI

{count, plural, =1 {# Endpunkt} other {# Endpunkte}'}

GET /health → { status, activePipes }

GET
/api/v1/pipe/healthJSON: status, version, activePipes
GET
/api/v1/pipe/versionVersionsstring im Klartext
GET
/api/v1/pipe/helpSelf-Hosted-curl-Beispiele
GET
/api/v1/pipeBrowser-Web-UI für No-Code-Uploads
GET
/api/v1/pipe/noscriptFallback-UI für No-JS-Browser
OPTIONS
/api/v1/pipe/{path}CORS-Preflight

Datentransfer

{count, plural, =1 {# Endpunkt} other {# Endpunkte}'}

POST oder PUT zum Senden · GET zum Empfangen

POST
/api/v1/pipe/{path}Daten senden; streamt [INFO]-Status zurück zum Sender
PUT
/api/v1/pipe/{path}Alias für POST; natürlich für curl -T file
GET
/api/v1/pipe/{path}Daten empfangen; blockiert bis Sender verbunden
kit / pipe / cta

Named Pipes über das Internet.

Keine SDKs. Kein Auth-Setup. Keine Dateigrößenlimits. Pipe-Container starten und loslegen.

Docs lesen