| Crates.io | iroh-lan |
| lib.rs | iroh-lan |
| version | 0.1.1 |
| created_at | 2025-10-07 15:20:41.207911+00 |
| updated_at | 2025-10-18 19:10:41.522712+00 |
| description | iroh-lan = hamachi - account - install |
| homepage | |
| repository | https://github.com/rustonbsd/iroh-lan |
| max_upload_size | |
| id | 1871801 |
| size | 2,091,385 |
Have a lan party with iroh (iroh-lan = hamachi - account - install)
Just download the released binaries or build it on Windows, MacOs and Linux and have your self a lan party.
Status
Pre-built binaries are available from the Releases page. All builds are produced by GitHub Actions CI/CD.
Windows: Download iroh-lan-ui-windows-x86_64.exe
macOS: Download iroh-lan-ui-macos-arm64 (Apple Silicon) or iroh-lan-ui-macos-x86_64 (Intel)
Linux: Download iroh-lan-ui-linux-x86_64
On Linux and macOS, make the binary executable: chmod +x iroh-lan-ui-*
Requires admin/sudo rights to create the network interface. No accounts or dependencies required.
The iroh-lan UI is designed for zero-friction, ephemeral networking: no accounts, no central servers, no device lists. Name a network, choose a password, and you’re on a private L3 LAN with anyone who does the same, created out of thin air and gone when you leave.

Enter any Network name and a shared Password, then click Create / Join.

After creating the network, iroh announces it and looks for peers with the same name and password.

With at least one peer present, the network assigns you a virtual IP from a private subnet. This can take a few seconds as peers converge.

With one or a few peers, you’ll see your assigned IP and the network’s subnet. This is a fully‑functioning LAN overlay.

As more peers join, the UI lists them with their virtual IPs and status. Traffic flows directly over iroh using NAT traversal where possible.
I wanted a more convinient hamachi with less bugs:
Tips
Pick a memorable network name and share it with your teammates along with the password.
First-time setup can take a few seconds while the network propagates and an IP is assigned.
Leave the app running while you play/work, when you’re done, just quit to disappear from the network.
use iroh_lan::{RouterIp, network::Network};
use tokio::time::sleep;
#[tokio::main]
async fn main() -> anyhow::Result<()> {
// elevate cross platform
if !self_runas::is_elevated() {
self_runas::admin()?;
return Ok(());
}
// Create or join a self-bootstrapping L3 network.
// Waits until at least one other peer is found.
// All of this happens fully automatically.
// This can take a couple of seconds for new networks because
// peers need to propagate the mainline records across
// the world first (see distributed-topic-tracker for details).
let network = Network::new("network-name", "<password>").await?;
while matches!(
network.get_router_state().await?,
RouterIp::NoIp | RouterIp::AquiringIp(_, _)
) {
sleep(std::time::Duration::from_millis(500)).await;
}
println!("my ip is {:?}", network.get_router_state().await?);
// as long as the network handle is kept alive you have a fully functioning L3 virtual lan proxy like hamachi
}
Some notes:
Create a lan party:
cargo tauri dev
fix rare "missed peer bug"
cicd for win, mac and linux (maybe bsd)
optimize release build and commit tauri dest/ to enable cargo install iroh-lan-ui or smth similar (so users can build and run without pnpm and node)
professionalize readme.md
release first version
write a github pages entry about this with pictures and a video tutorial using minetest
network: 172.22.0.0/24
usable host range: 172.22.0.1 - 172.22.0.254
subnet mask: 255.255.255.0