diff --git a/src/app/page.tsx b/src/app/page.tsx index 07adc61..31b0762 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -11,59 +11,59 @@ import { Button } from '@/components/Button' export default function Home() { return ( - -
-

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, 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 - `} - -

Sender

- {` + `} + +

Sender

+ {` echo "hello" | dumbpipe connect nodeecsxraxjtqtneathgplh6d5nb2rsnxpfulmkec2rvhwv3hh6m4rdgaibamaeqwjaegplgayaycueiom6wmbqcjqaibavg5hiaaaaaaaaaaabaau7wmbq - `} -

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

-
-
- hero -

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.

+
+
+ hero +

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 +}`