In 2023 It's hard to connect two devices directly. Dumb pipe punches through NATs, using on-the-fly node identifiers, and keeps your machines connected even as network conditions change.
-
What you actually do with that connection is up to you.
-
-
-
A unix pipe between computers
- $ curl https://dumbpipe.dev/install.sh | sh
-
get dumbpipe with a single command on two computers, connect them & pipe data from one machine to the other. No accounts. No configuration.
-
Receiver
- {`
+
+
+
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
+ $ curl https://dumbpipe.dev/install.sh | sh
+
get dumbpipe with a single command on two computers, connect them & pipe data from one machine to the other. No accounts. No configuration.
+
Receiver
+ {`
$ dumbpipe listen
using secret key 23ryys7pgvjrr57pcrvyivdrhvqyykg2tv3leou5grm66xfd7zzq
Listening. To connect, use:
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-net rust crate. You can use the iroh connection layer as a dumb pipe in your own app.
-
-
-
-
-
-
-
QUIC & Dumb
-
These dumb pipes use QUIC over a magic socket. It may be dumb, but it is still encrypted, and sent over UDP. You can register multiple different handlers with distinct QUIC ALPNs to separate concerns using substreams.
-
-
-
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.
-
-
-
-
-
-
Coming soon: Premium relays
-
iroh.network the team behind number zero runs the default relay network, which has a capped bandwidth. High-throughput, authenticated relays are coming to iroh.network in the future.
-
-
-
Need more?
-
Need pubsub? Data transfer? Sync? All of these are opt-in-able addons from iroh. But if you add these things, the pipe is no longer dumb. You decide how to feel about that.
-
-
+ `}
+
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-net rust crate. You can use the iroh connection layer as a dumb pipe in your own app.
+
+
+
+
+
+
+
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.
+
+
+
+
+
+
Coming soon: Premium relays
+
The team behind number0 runs the default relay network, which has a capped bandwidth. High-throughput, authenticated relays are coming to iroh.network in the future.
+
+
+
Need more?
+
Need pubsub? Data transfer? Sync? All of these are opt-in addons from iroh. But if you add these things, the pipe is no longer dumb. You decide how to feel about that.
+
+
)
}
@@ -299,4 +299,4 @@ fn parse_secret(secret: &str) -> anyhow::Result {
let bytes: [u8; 32] = base32::parse_array(secret)?;
let key = SecretKey::from(bytes);
Ok(key)
-}`
\ No newline at end of file
+}`