libp2p is a modular networking framework bundled together as a full stack of protocols for peer-to-peer systems.
libp2p is the product of a long and arduous quest into the internet's network stack and all of the plentiful peer-to-peer protocols of the past. Building large-scale peer-to-peer systems has been complex and challenging in the last fifteen years, and libp2p is a way to fix that. It is a "network stack" -- a protocol suite -- that cleanly separates concerns and enables sophisticated applications to only use the protocols they need without giving up interoperability and upgradeability. libp2p grew out of IPFS but is built so that many people can use it for many different projects.
Learn more about libp2p at libp2p.io and docs.libp2p.io.
View the formal specifications of libp2p on the specifications repository.
Follow the latest libp2p implementations at libp2p.io/implementations.
- go-libp2p in Go
- js-libp2p in Javascript, for Node and the Browser
- rust-libp2p in Rust
- py-libp2p in Python
- cpp-libp2p in C++
- swift-libp2p in Swift
- nim-libp2p in Nim
- jvm-libp2p in Kotlin
- erlang-libp2p in Erlang
Please visit our discussion forums at discuss.libp2p.io to get help, ask questions about the past, present, and future of libp2p, and more.