// the find
n0-computer/iroh
IP addresses break, dial keys instead. Modular networking stack in Rust.
Iroh is a Rust networking library that lets you establish QUIC connections between peers using public keys instead of IP addresses, handling NAT traversal, hole-punching, and relay fallback automatically. It's aimed at developers building P2P applications, local-network tools, or anything where IP addresses are unstable or unknown. The companion crates (iroh-blobs, iroh-gossip, iroh-docs) layer higher-level protocols on top.
- The API surface is genuinely clean — bind an endpoint, connect by NodeId, get a QUIC connection. The echo example is ~20 lines and actually shows the full flow without hiding complexity behind magic.
- Serious infrastructure investment: network simulation configs in .github/sims/, a dedicated perf dashboard (perf.iroh.computer), proptest regression files, and a flaky-test workflow. This is not a weekend project.
- The relay server is self-hostable and the relay protocol is documented in TRANSPORTS.md, so you're not locked into n0's infrastructure. The relay code is part of this repo, not a black box.
- Multipath support is real — the socket layer tracks per-path state and can switch between direct UDP and relay mid-connection, which is non-trivial to implement correctly.
- FFI bindings (iroh-ffi) are a separate repo and lag behind the core library. If you're not writing Rust, you're a second-class citizen and will hit API gaps or version mismatches.
- The ecosystem crates (iroh-blobs, iroh-gossip, iroh-docs, iroh-willow) all live in separate repos with independent version cycles, so coordinating compatible versions across them is a recurring pain point as they evolve.
- iroh-willow is explicitly marked 'in-construction' and iroh-docs appears to be in maintenance mode, meaning two of the four advertised protocol layers are either unstable or stagnating.
- Discovery relies on either a centrally-operated DNS server (dns.iroh.link) or you standing up iroh-dns-server yourself. There's no purely decentralized bootstrap option out of the box, which is a meaningful operational dependency for production deployments.