Table of Contents

Ecosystem map

Which Go module owns which problem, and what each one’s maturity claim actually is.

The Go iroh ecosystem is four repositories: one core module and three repositories built on it.

Repository Contents Page
go-iroh the core module: endpoint, protocols, commands this site
go-iroh-examples 44 runnable example programs in a numbered progression Examples
go-iroh-tools small Unix-style networking tools backed by go-iroh Tools
go-iroh-experiments independent experimental modules, several porting Rust iroh-experiments Experiments

The core module

github.com/tmc/go-iroh — one module, one go.mod, versioned as a whole. Its README positions it as: “a clean-room Go port targeting wire compatibility with upstream Rust iroh. It is not affiliated with the n0 team.”

Package Owns
iroh endpoints, connections, streams, the ALPN Router, address lookup
key ed25519 keys, signatures, EndpointID
netaddr endpoint and transport addresses, relay URLs
relay relay maps, per-relay config, relay Mode
relayserver the server side of the relay protocol
dns DNS-based endpoint discovery, pkarr TXT encoding, DoH/DoT lookupers
pkarr the pkarr signed DNS packet codec
dnsserver an embeddable iroh DNS and pkarr relay server
iroh/mdns local-network discovery (not built for js)
blobs blob tickets, identifiers, BAO transfer
gossip iroh-gossip pub/sub mesh
docs iroh-docs multi-writer documents and range sync
endpointticket endpoint ticket codec
postcard the Rust-compatible postcard wire codec
quicconn adapting iroh connections to a QUIC-like surface (for HTTP/3 stacks)
irpc postcard-framed RPC helpers over iroh streams
watch observable values (the Go analog of Rust’s n0_watcher)
metrics a small OpenMetrics registry

Everything else — the relay client and wire protocol, net reports, socket path management, the QUIC and TLS forks, the gossip state machine — is under internal/ and is not API.

Maturity tiers

State them once, and check them against the source of truth rather than trusting a badge:

Tier What it covers Where it is defined
Wire-compatible connectivity iroh, key, netaddr, relay, dns, pkarr the go-iroh README’s “Status” section
Ported protocols blobs, gossip, docs same, plus each package’s doc comment
Experiments every go-iroh-experiments module that repo’s README

The README’s Status section claims the connectivity layer is a wire-compatible iroh endpoint and that opt-in Rust gates cover live echo, Rust transfer provider/upload, direct-path selection, qlog evidence for QNT frames, and Go↔Rust gossip. Testing and interop describes how to run those gates yourself, which is the only way to convert the claim into evidence on your machine.

The experiments

github.com/tmc/go-iroh-experiments is a repository of independent modules — each with its own go.mod, “so its dependencies stay isolated and it can be released independently” (its README). Some are clean-room Go ports of the corresponding Rust iroh-experiments subprojects; others are original. The Experiments page lists every module; the generated module index lists the exact module paths and the commands each one ships.

Treat these as experiments in the ordinary sense: they are not covered by the core module’s compatibility posture, and they move independently.

What lives upstream, not here

Next steps

Last updated: 2026-08-20