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
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-implementations
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Transports
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-tcp
libp2p-websockets
libp2p-webrtc-star
libp2p-webrtc-direct
libp2p-udp
libp2p-utp
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
NAT Traversal
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-circuit-relay-v1
libp2p-circuit-relay-v2
libp2p-autonat
libp2p-hole-punching
libp2p-dcutr
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Secure Communication
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-noise
libp2p-tls
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Discovery
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
bootstrap
random-walk
mdns-discovery
rendezvous
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Peer Routing
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-kad-dht
libp2p-kbucket
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Publish/Subscribe
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-floodsub
libp2p-gossipsub
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Stream Multiplexing
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-quic
libp2p-mplex
libp2p-yamux
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
Storage
JavaScript Go C# Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-record
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing
General Purpose Utilities & Datatypes
JavaScript Go Rust Swift Python C++ JVM Nim Erlang Zig
libp2p-crypto
libp2p-ping
libp2p-peer
libp2p-swarm
Done
In Progress / Usable
Prototype / Unstable
Unimplementable / Unsupported
Missing