libp2p implementation in Go
6,879
stars
5,807
commits
Go
primary language
Sep 9, 2026
updated
libp2p is a networking stack and library modularized out of The IPFS Project, and bundled separately for other tools to use.
libp2p is the product of a long, and arduous quest of understanding -- a deep dive into the internet's network stack, and plentiful peer-to-peer protocols from the past. Building large-scale peer-to-peer systems has been complex and difficult in the last 15 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 absolutely need, without giving up interoperability and upgradeability. libp2p grew out of IPFS, but it is built so that lots of people can use it, for lots of different projects.
To learn more, check out the following resources:
This repository (go-libp2p) serves as the entrypoint to the universe of packages that compose the Go implementation of the libp2p stack.
You can start using go-libp2p in your Go application simply by adding imports from our repos, e.g.:
import "github.com/libp2p/go-libp2p"
Examples can be found in the examples folder.
We provide prebuilt Grafana dashboards so that applications can better monitor libp2p in production. You can find the dashboard JSON files here.
We also have live Public Dashboards that you can check out to see real time monitoring in action.
go-libp2p is MIT-licensed open source software. We welcome contributions big and small! Take a look at the community contributing notes. Please make sure to check the issues. Search the closed ones before reporting things, and help us with the open ones.
Guidelines:
There's a few things you can do right now to help out:
[!IMPORTANT]
If you are using any kind of AI assistance to contribute to libp2p, it must be disclosed in the pull request.
If you are using any kind of AI assistance while contributing to libp2p, this must be disclosed in the pull request, along with the extent to which AI assistance was used (e.g. docs only vs. code generation). If PR responses are being generated by an AI, disclose that as well. As a small exception, trivial tab-completion doesn't need to be disclosed, so long as it is limited to single keywords or short phrases.
An example disclosure:
This PR was written primarily by Claude Code.
Or a more detailed disclosure:
I consulted ChatGPT to understand the codebase but the solution was fully authored manually by myself.
Failure to disclose this is first and foremost rude to the human operators on the other end of the pull request, but it also makes it difficult to determine how much scrutiny to apply to the contribution.
In a perfect world, AI assistance would produce equal or higher quality work than any human. That isn't the world we live in today, and in most cases it's generating slop. I say this despite being a fan of and using them successfully myself (with heavy supervision)!
Please be respectful to maintainers and disclose AI assistance.
We test against and support the two most recent major releases of Go. This is informed by Go's own security policy.
Some notable users of go-libp2p are:
Please open a pull request if you want your project (min. 250 GitHub stars) to be added here.
(top 30 of 227)
Go
99.6%
libp2p implementation in Go
6,879
stars
5,807
commits
Go
primary language
Sep 9, 2026
updated
libp2p is a networking stack and library modularized out of The IPFS Project, and bundled separately for other tools to use.
libp2p is the product of a long, and arduous quest of understanding -- a deep dive into the internet's network stack, and plentiful peer-to-peer protocols from the past. Building large-scale peer-to-peer systems has been complex and difficult in the last 15 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 absolutely need, without giving up interoperability and upgradeability. libp2p grew out of IPFS, but it is built so that lots of people can use it, for lots of different projects.
To learn more, check out the following resources:
This repository (go-libp2p) serves as the entrypoint to the universe of packages that compose the Go implementation of the libp2p stack.
You can start using go-libp2p in your Go application simply by adding imports from our repos, e.g.:
import "github.com/libp2p/go-libp2p"
Examples can be found in the examples folder.
We provide prebuilt Grafana dashboards so that applications can better monitor libp2p in production. You can find the dashboard JSON files here.
We also have live Public Dashboards that you can check out to see real time monitoring in action.
go-libp2p is MIT-licensed open source software. We welcome contributions big and small! Take a look at the community contributing notes. Please make sure to check the issues. Search the closed ones before reporting things, and help us with the open ones.
Guidelines:
There's a few things you can do right now to help out:
[!IMPORTANT]
If you are using any kind of AI assistance to contribute to libp2p, it must be disclosed in the pull request.
If you are using any kind of AI assistance while contributing to libp2p, this must be disclosed in the pull request, along with the extent to which AI assistance was used (e.g. docs only vs. code generation). If PR responses are being generated by an AI, disclose that as well. As a small exception, trivial tab-completion doesn't need to be disclosed, so long as it is limited to single keywords or short phrases.
An example disclosure:
This PR was written primarily by Claude Code.
Or a more detailed disclosure:
I consulted ChatGPT to understand the codebase but the solution was fully authored manually by myself.
Failure to disclose this is first and foremost rude to the human operators on the other end of the pull request, but it also makes it difficult to determine how much scrutiny to apply to the contribution.
In a perfect world, AI assistance would produce equal or higher quality work than any human. That isn't the world we live in today, and in most cases it's generating slop. I say this despite being a fan of and using them successfully myself (with heavy supervision)!
Please be respectful to maintainers and disclose AI assistance.
We test against and support the two most recent major releases of Go. This is informed by Go's own security policy.
Some notable users of go-libp2p are:
Please open a pull request if you want your project (min. 250 GitHub stars) to be added here.
(top 30 of 227)
Go
99.6%