Need to connect two devices? Try a

dumb pipe

Easy, direct connections that punch through NATs & stay connected as network conditions change.

Made by number 0

Connect A to B. Send Data.

In 2023 it's hard to connect two devices directly. Dumb pipe punches through NATs, using on-the-fly node identifiers. It even keeps your machines connected as network conditions change.

What you actually do with that connection is up to you.

A unix pipe between computers

Add dumbpipe to your machine using bash:

$ curl -sL https://www.dumbpipe.dev/install.sh | sh

On windows with PowerShell:

$ iwr https://www.dumbpipe.dev/install.ps1 -useb | iex

Get dumbpipe with a single command on two computers, connect them & pipe data from one machine to the other. No accounts. No configuration.

Alternatively, you can install it with Cargo:

cargo install dumbpipe

Or Homebrew:

brew install dumbpipe

Receiver


$ ./dumbpipe listen
using secret key 23ryys7pgvjrr57pcrvyivdrhvqyykg2tv3leou5grm66xfd7zzq
Listening. To connect, use:
./dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsnxpfulmkec2rvhwv3hh6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaaaaaaaaaaabaau7wmbq
                  

Sender


echo "hello" | ./dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsnxpfulmkec2rvhwv3hh6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaaaaaaaaaaabaau7wmbq
                  

This will work, regardless of where the two machines are. Dumb pipe finds a way.

Put a dumb pipe in your app

Dumb pipes are Iroh Connections. The dumbpipe tool is a 200-line wrapper around the iroh rust crate. You can use the iroh Endpoint to create a connection to use as a dumb pipe in your own app.