Table of Contents

go-iroh documentation

Peer-to-peer QUIC in Go — endpoints identified by public keys, direct paths with relay fallback, wire-compatible with Rust iroh.

go-iroh is a Go implementation of iroh: peer-to-peer QUIC endpoints identified by ed25519 public keys, with direct paths, relay fallback, and Rust-compatible ports of the iroh protocol stack. This site documents the Go ecosystem — the github.com/tmc/go-iroh module, its commands, and the go-iroh-experiments modules built on it.

For the iroh protocol itself, the Rust implementation, and the concepts the two implementations share, read the upstream documentation at iroh.computer — this site links to it rather than restating it.

Getting started

Add the module, connect two endpoints over loopback, and check your Go version.

Build an echo protocol

A verified end-to-end tutorial: a protocol handler, a ticket, and two processes talking.

How go-iroh works

Endpoints, transports, path selection, and the forked QUIC stack the wire compatibility depends on.

Ecosystem map

Which module owns your problem, and what each one’s maturity claim is.

Examples

44 runnable programs in a numbered progression, one API surface each.

API map

Task-to-call reference for every public package.

Everything else is in the sidebar navigation, grouped by task.

Relationship to upstream iroh

go-iroh is, in its own README’s words, “a clean-room Go port targeting wire compatibility with upstream Rust iroh. It is not affiliated with the n0 team.”

That shapes what this site covers. Protocol design, the reference implementation, and the conceptual documentation live upstream:

This site covers what upstream cannot: the Go API surface, the Go module layout, the Go commands, the Go test and interop gates, and the Go experiments. Where a concept is identical in both implementations, the pages here name it and link upstream instead of paraphrasing.

A naming collision worth knowing

iroh-docs is a protocol, not documentation. Upstream describes it as “multi-dimensional key-value documents with an efficient synchronization protocol” (n0-computer/iroh-docs). go-iroh ports it as the docs package. This site — go-iroh-docs — is documentation for the Go ecosystem. See Protocol packages for the docs package.

Last updated: 2026-08-20