Build a peer-to-peer file transfer app that works through home routers and firewalls without requiring port forwarding.
Create a real-time sync service between devices that automatically reconnects when they change networks or get new IP addresses.
Implement a gossip messaging network where messages spread across many devices even on phones with limited resources.
Transfer large files between two devices with verified integrity using iroh-blobs.
| n0-computer/iroh | vi/websocat | gyroflow/gyroflow | |
|---|---|---|---|
| Stars | 8,533 | 8,503 | 8,480 |
| Language | Rust | Rust | Rust |
| Setup difficulty | moderate | easy | easy |
| Complexity | 4/5 | 2/5 | 2/5 |
| Audience | developer | developer | general |
Figures from each repo's GitHub metadata at analysis time.
Rust required, bindings for non-Rust languages are in a separate repository.
Iroh is a Rust networking library built around one idea: instead of connecting to a device by its IP address, you connect to it by a public key. IP addresses change when devices move between networks, get reassigned by internet providers, or sit behind firewalls and routers. A public key stays with a device permanently, so iroh can always find and maintain the fastest connection regardless of where the device actually is at that moment. To make a direct connection work between two devices that are both behind home routers or corporate firewalls, iroh uses a technique called hole-punching. Without going into networking detail, this is a method of tricking two firewalls into letting traffic through between devices that neither firewall would normally allow to connect directly. If hole-punching fails, iroh falls back to an open network of public relay servers. The project measures connection performance continuously and publishes those results publicly. The transport layer is QUIC, a modern protocol originally developed by Google and now an internet standard. QUIC provides encrypted connections, lets multiple streams of data travel over one connection without one slow stream blocking the others, and supports sending small packets of data alongside the main streams. On top of the core connection library, the project offers several companion components. Iroh-blobs handles transferring files of any size, from kilobytes to terabytes, using a specific hashing format for verified transfers. Iroh-gossip sets up publish-subscribe networks where messages spread across many participants, designed to work even on phones with limited resources. Iroh-docs provides a simple key-value store that eventually becomes consistent across devices. Iroh is primarily a Rust library, but a separate repository provides bindings so it can be used from other programming languages. The project is dual-licensed under MIT and Apache 2.0.
Iroh is a Rust library for connecting devices directly by public key instead of IP address, enabling reliable peer-to-peer connections through firewalls with automatic fallback to relay servers.
Mainly Rust. The stack also includes Rust, QUIC.
Use freely for any purpose including commercial, under either the MIT or Apache 2.0 license, your choice.
Setup difficulty is rated moderate, with roughly 30min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.