A wide variety of tools exist which make it easy to use I2P as a network layer in Go applications.
These tools integrate at various levels and provide different functionality, but virtually anything is possible using I2P and Go.
Eventually, this page will serve as a website for go-i2p, but for now it serves to track the state of various ways of using Go to interact with I2P.
These act as drop-in replacements for net.Conn and net.PacketConn in your code and libraries.
When used correctly, they make it easy to adapt Go applications to I2P.
All net.Conn and net.PacketConn interface implementations in Go
onrampan easy-to-use, automatically-configured library for managing I2P connections, implements net.Conn and net.PacketConn, supports Primary sessions -mature, implements SAMv3.3, Streaming and DatagramsgoSamsimple and highly configurable net.Conn implementation, implement a complete HTTP/S/CONNECT proxy in ~50 LOC -mature, implements SAMv3.2, Streaming Onlysam3hightly configurable net.Conn, net.PacketConn implementation, supports Primary sessions, exposes all the options and all the sharp edges -mature, implements SAMv3.3, Streaming and Datagrams
go-i2pcontrolan implementation of the I2PControl-RPC protocol in Go as a library -mature but does not provide all possible consts(like ratestats)i2p-controlCLI application built using/as a demo ofgo-i2pcontrol-mature but may lack features
sam-forwarderan I2PTunnel-alike which accepts i2pd-style config files -mature enough for a rewritego-i2p-bta Bittorrent library configured usingonrampwhich tracks SAMv3 development and has similar features to I2PSnark -not mature
reseed-toolsa freestanding implementation of an I2P Reseed server -mature and extensively used/testedrailroada blog mostly compatible with Ghost style themes with markdown-based editing -not mature
go-i2pa pure-Go implementation of the I2P RouterWIP-WIP does not work yet