Implementations

libp2p is composed of many modules and different parts. Here, overviews are available for all the different libraries, along with the status of each implementation. All sections use the same status legend and link to the implementation's source code.

cube_shape
Supported Implementations
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-implementations
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Transports
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-tcp
libp2p-quic
libp2p-websocket
libp2p-webtransport
libp2p-webrtc-browser-to-server
libp2p-webrtc-star
libp2p-webrtc-direct
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
NAT Traversal
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-circuit-relay-v1
libp2p-circuit-relay-v2
libp2p-autonat
libp2p-hole-punching
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Secure Communication
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-noise
libp2p-tls
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Discovery
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
bootstrap
random-walk
mdns-discovery
rendezvous
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Peer Routing
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-kad-dht
libp2p-kbucket
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Publish/Subscribe
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-floodsub
libp2p-gossipsub
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Stream Multiplexing
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-yamux
libp2p-mplex
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Storage
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-record
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
General Purpose Utilities & Datatypes
Go Rust JavaScript Nim C++ Swift JVM Python Erlang
libp2p-crypto
libp2p-ping
libp2p-peer
libp2p-switch
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing