go-i2p

I2P networking ecosystem for Go — routers, SAM libraries, tunnels, crypto, and tools.

70+ repositories
97★ core router
7 categories
MIT licensed

Quick Start

go get github.com/go-i2p/onramp

// Create an I2P connection — drop-in replacement for net.Conn
conn, err := onramp.NewClient("myapp", onramp.Bot("127.0.0.1:7656"))
if err != nil { log.Fatal(err) }
defer conn.Close()

// Use conn like any net.Conn
conn.Write([]byte("Hello, I2P!"))

Requires a running I2P router (i2pd or Java I2P). See onramp for full docs.

Project Status

✅ Mature Libraries

Connection libraries (onramp, goSam, sam3) are stable and work with any I2P router. The Streaming and Datagram APIs are reliable.

🔧 In Development

The core router (go-i2p) is operational but not production-safe. I2CP, Streaming, and Datagram client libraries are functional but APIs may change between 0.1.x and 0.2.0.

📋 For Developers

The API below onramp is unstable. Use high-level libraries to minimize churn. See the router README for detailed status.

⚠️ Work in progress. The go-i2p router is not yet usable. The connection libraries (onramp, goSam, sam3) are stable and work with any I2P router.

Connection libraries act as drop-in replacements for net.Conn and net.PacketConn in your Go code. When used correctly, they make it easy to adapt Go applications to I2P.

Libraries