Go beyond the cloud with confidence

Meet iroh, a direct-connection revolution in app development with unparalleled simplicity and speed. Open source and universally compatible, it's the quickest route from concept to connected devices.

Live collaborate on anything

Effortlessly invite users to a dynamic shared environment. iroh offers intuitive syncing across devices, with seamless hooks for instant read & write operations, simplifying the developer experience.

No central server required

Iroh establishes direct connections between devices for you, traversing across network address translation (NATs) with best-in-class connection rates.

Scale without limits

Iroh handles data of any magnitude, ensuring peak performance even when individual device capacities are exceeded.

Coming Soon

Your own shared, programmable drive

Expose data as a shared folder on your computer or phone free-to-use direct connections. Write code that reacts to changes & write back to the drive on the fly.

Move data for free

Direct connections don't come with a bill. With iroh it's possible to build & use zero-cost tooling.

Build self-sustaining networks

users can start a movie on their computer, then transfer to their phone, bringing data with them.

Sync between services

write integrations into services

See Integration Examples

iroh.network

Seamless cloud backing

Connect to a global network of iroh nodes that keep your data available at all times

Sign up for a free account

Build in your language

Iroh supports a growing set of languages, embedding nodes directly in your project without any need to call out to an external API

start building

doc get

use anyhow::Result;
use futures::stream::TryStreamExt;

#[tokio::main]
async fn main() -> Result<()> {
    // build the node
    let node = iroh::node::Node::memory().spawn().await?;

    // create 2 documents
    let _doc_0 = node.docs.create().await?;
    let _doc_1 = node.docs.create().await?;

    // list newly created docs
    println!("List all docs:");
    let mut docs = node.docs.list().await?;
    while let Some((doc_id, _capability)) = docs.try_next().await? {
        println!("{doc_id}");
    }

    Ok(())
}

Install the CLI

Install iroh now & jump into the quickstart.

$ curl -fsSL https://sh.iroh.computer/install.sh | bash
$ iroh console --start