IP addresses break, dial keys instead

Add peer-to-peer connectivity to your app, agent, or workflow.

Low-latency between any platform, cloud, or device.

No VPNs, user accounts, or proprietary networks.

Swift
Rust
JavaScript
Kotlin
Raspberry Pi
Espressif
Linux
Windows
Apple
Android
Cloudflare
AWS
Azure

“Doubling the network speed halves our compute budget.”

Ari Lotter
Principal Engineer at Nous
Read the Case Study

Low-latency everywhere

Write your app once and connect it everywhere, with one API.

  • Use all the radios: Wi-Fi, cellular, ethernet, LAN, or Bluetooth, or bring your own transport.

  • Lean on the cloud less with direct links that bypass NATs and firewalls, with stateless relays as fallback.

  • Built-in end-to-end encryption, with opt-in observability.

AWSGCPAzureSelf-HostEdgeHybridPrivate

How are people using iroh?

Ready for production

Monitor your App
ConnectionsLatencyThroughputCustomΣAggregatorDashboardMobileServerIoT

Fast connections.
Anywhere.
Forever.

The core peer-to-peer technology is open source and built on open standards, so you're never locked in: connect over our free community relays, self-host your own, let us run them for you, and switch between them whenever you want.

SwiftRustJavaScriptKotlin

Start building.

Read the Docs
App.swift
import IrohLib

@main
struct App {
    static func main() async throws {
        // Dial a peer and echo a message over a bidirectional stream.
        let endpoint = try await Endpoint.bind(
            options: EndpointOptions(preset: presetN0())
        )

        let conn = try await endpoint.connect(addr: serverAddr, alpn: ALPN)
        let bi = try await conn.openBi()

        try await bi.send().writeAll(buf: Data("hello iroh".utf8))
        try await bi.send().finish()

        let echoed = try await bi.recv().readToEnd(sizeLimit: 64)
        print(String(decoding: echoed, as: UTF8.self))
    }
}

Modular toolkit

Dozens of open-source, composable protocols built on top of iroh. Mix & match to get the feature set you need.

From the Blog