USE CASE / 01

Reach the device.
Skip the detour.

Connect to a device by public key. Iroh handles encryption, NAT traversal, and relay fallback.

Direct · encrypted
[01]

Identity over location

Reach the same device even when its IP address changes.

[02]

Connectivity built in

Connect directly when possible, with relay fallback when needed.

[03]

Part of your product

Embed iroh in your app. No separate VPN client for users.

iroh vs. Tailscale

Your app.
Your rules.

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.

Comparing app connectivity with iroh and Tailscale
What you needirohTailscale
What you’re buildingRemote access as a feature of your productAccess to devices and services on a private network
Customer onboardingYour sign-in, your pairing flow. No iroh account required for peersEnroll devices or embedded apps into a tailnet; automate through APIs
Native mobile integrationRust core with first-party Swift and Kotlin bindingstsnet embeds Go; libtailscale adds a C bridge and Go runtime
Who can connectYour app decides which endpoint identities to trust and what they can doTailnet membership and centrally managed access policies
What you build onQUIC streams and datagrams for your own application protocolIP networking for TCP and UDP services, including through tsnet
What your users installYour app, with iroh insideTailscale’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.

Build with iroh↗
IN PRACTICE

Built with iroh.

Iroh connects apps. These projects build network overlays and remote access on top.