The pipe is only dumb if you make it that way
Not Kidding, but also a cool ref from childhood.
Dumb pipe, the rust one, is a 200-line wrapper around the iroh rust crate. It punches through NATs, using on-the-fly node identifiers and keeps your machines connected as network conditions change. You can use it as a unix pipe between two computers
Install
Get dumbpipe with a single command on two computers, connect them & pipe data from one machine to the other. No accounts. No configuration.
$ curl -sL https://www.dumbpipe.dev/install.sh | sh
Alternatively, you can install it with Cargo (don't):
cargo install dumbpipe
How to use
On the Receiver side
$ ./dumbpipe listen
using secret key 23ryys7pgvjrr57pcrvyivdrhvqyykg2tv3leou5grm66xfd7zzq
Listening. To connect, use:
./dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsnxpfulmkec2rvhwv3h
h6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaaaaaaaaaaabaau7wmbq
...
On the Sender side
$ echo "hello" | ./dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsn
xpfulmkec2rvhwv3hh6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaa
aaaaaaaaabaau7wmbq
QUIC & Dumb
These dumb pipes use QUIC over a magic socket. It may be dumb, but it still has all the features of a full QUIC connection: UDP-based, stream-multiplexing and encrypted. Besides using the multiplexed streams you can also use multiple connections each with their own ALPN.
Sometimes you gotta relay
For somewhere around 10-20% of connections, it's simply not possible to connect two devices directly. For those cases, we use a meshed network of relay nodes to pack up UDP traffic & send it over HTTP. Sounds silly, but it works. And the magic socket handles all this under the hood. Your own Network
The team behind number0 runs the default relay network, which has a capped bandwidth. High-throughput, authenticated relays are now available through n0des!
What you actually do with that connection is up to you.