Identity over location
Reach the same device even when its IP address changes.
USE CASE / 01
Connect to a device by public key. Iroh handles encryption, NAT traversal, and relay fallback.
Reach the same device even when its IP address changes.
Connect directly when possible, with relay fallback when needed.
Embed iroh in your app. No separate VPN client for users.
iroh vs. Tailscale
Build remote access around your users. iroh gives you direct connections to shape into your own product. Tailscale gives you a private network to connect devices and services.
| What you need | iroh | Tailscale |
|---|---|---|
| What you’re building | Remote access as a feature of your product | Access to devices and services on a private network |
| Customer onboarding | Your sign-in, your pairing flow. No iroh account required for peers | Enroll devices or embedded apps into a tailnet; automate through APIs |
| Native mobile integration | Rust core with first-party Swift and Kotlin bindings | tsnet embeds Go; libtailscale adds a C bridge and Go runtime |
| Who can connect | Your app decides which endpoint identities to trust and what they can do | Tailnet membership and centrally managed access policies |
| What you build on | QUIC streams and datagrams for your own application protocol | IP networking for TCP and UDP services, including through tsnet |
| What your users install | Your app, with iroh inside | Tailscale’s client, or your app with an embedded Tailscale library |
Make connectivity part of your product. Keep onboarding and access rules in your app. Let iroh handle the connection.
MESH NETWORKING
Connect machines into a private mesh.
Explore project ↗REMOTE SHELL
SSH by device identity, even behind NAT.
Explore project ↗PRIVATE NETWORKS
Private connections between your devices.
Explore project ↗Iroh connects apps. These projects build network overlays and remote access on top.