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 Datagrams
- goSamsimple and highly configurable net.Conn implementation, implement a complete HTTP/S/CONNECT proxy in ~50 LOC -- mature, implements SAMv3.2, Streaming Only
- sam3hightly 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 of- go-i2pcontrol-- mature but may lack features
- sam-forwarderan I2PTunnel-alike which accepts i2pd-style config files -- mature enough for a rewrite
- go-i2p-bta Bittorrent library configured using- onrampwhich tracks SAMv3 development and has similar features to I2PSnark -- not mature
- reseed-toolsa freestanding implementation of an I2P Reseed server -- mature and extensively used/tested
- railroada blog mostly compatible with Ghost style themes with markdown-based editing -- not mature
- go-i2pa pure-Go implementation of the I2P Router- WIP-- WIP does not work yet