IP addresses break, dial keys instead

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

“Iroh let us drop zero-trust identity and connectivity straight into our app—we ripped out the old stuff and this is so much cleaner.”

Dario
Founder at Rayfish
Raspberry Pi
Espressif
Linux
Windows
Apple
Android

Built for environments where connectivity is unreliable or intermittent

  • 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.

  • Secure end-to-end encryption, with opt-in observability to diagnose issues and improve performance.

AWSGCPAzureSelf-HostEdgeHybridPrivate

How are people using iroh?

Ready for production

Get help from the pros
ConnectionsLatencyThroughputCustomΣAggregatorDashboardMobileServerIoT

Open source.
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.

SwiftRustJavaScriptKotlinPythonGo

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