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
onramp
an 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 Datagrams
goSam
simple and highly configurable net.Conn implementation, implement a complete HTTP/S/CONNECT proxy in ~50 LOC -mature, implements SAMv3.2, Streaming Only
sam3
hightly 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-i2pcontrol
an implementation of the I2PControl-RPC protocol in Go as a library -mature but does not provide all possible consts(like ratestats)
i2p-control
CLI application built using/as a demo ofgo-i2pcontrol
-mature but may lack features
sam-forwarder
an I2PTunnel-alike which accepts i2pd-style config files -mature enough for a rewrite
go-i2p-bt
a Bittorrent library configured usingonramp
which tracks SAMv3 development and has similar features to I2PSnark -not mature
reseed-tools
a freestanding implementation of an I2P Reseed server -mature and extensively used/tested
railroad
a blog mostly compatible with Ghost style themes with markdown-based editing -not mature
go-i2p
a pure-Go implementation of the I2P RouterWIP
-WIP does not work yet