#peer-to-peer #libp2p #networking


TCP/IP transport protocol for libp2p

6 releases

0.27.3 Apr 15, 2021
0.27.2 Mar 5, 2021
0.26.1 Feb 5, 2021
0.26.0 Jan 7, 2021
0.20.0 Dec 31, 2020

#892 in Network programming

Download history 84/week @ 2021-02-23 106/week @ 2021-03-02 89/week @ 2021-03-09 99/week @ 2021-03-16 50/week @ 2021-03-23 30/week @ 2021-03-30 30/week @ 2021-04-06 139/week @ 2021-04-13 80/week @ 2021-04-20 76/week @ 2021-04-27 7/week @ 2021-05-04 23/week @ 2021-05-11 60/week @ 2021-05-18 90/week @ 2021-05-25 101/week @ 2021-06-01 264/week @ 2021-06-08

311 downloads per month

MIT license


Central repository for work on libp2p

dependency status

This repository is the central place for Rust development of the libp2p spec.

Warning: While we are trying our best to be compatible with other libp2p implementations, we cannot guarantee that this is the case considering the lack of a precise libp2p specifications.

Getting started

  • Main documentation can be found on https://docs.rs/libp2p.

  • The examples folder contains small binaries showcasing the many protocols in this repository.

  • To report bugs, suggest improvements or request new features please open GitHub issue on this repository.

  • For rust-libp2p specific questions please use the GitHub Discussions forum https://github.com/libp2p/rust-libp2p/discussions.

  • For discussions and questions related to multiple libp2p implementations please use the libp2p Discourse forum https://discuss.libp2p.io.

Repository Structure

The main components of this repository are structured as follows:

  • core/: The implementation of libp2p-core with its Network, Transport and StreamMuxer API on which almost all other crates depend.

  • transports/: Implementations of transport protocols (e.g. TCP) and protocol upgrades (e.g. for authenticated encryption, compression, ...) based on the libp2p-core Transport API .

  • muxers/: Implementations of the StreamMuxer interface of libp2p-core, e.g. (sub)stream multiplexing protocols on top of (typically TCP) connections. Multiplexing protocols are (mandatory) Transport upgrades.

  • swarm/: The implementation of libp2p-swarm building on libp2p-core with the central interfaces NetworkBehaviour and ProtocolsHandler used to implement application protocols (see protocols/).

  • protocols/: Implementations of application protocols based on the libp2p-swarm APIs.

  • misc/: Utility libraries.

  • examples/: Worked examples of built-in application protocols (see protocols/) with common Transport configurations.

Community Guidelines

The libp2p project operates under the IPFS Code of Conduct.


  • Be respectful.
  • We're here to help: abuse@ipfs.io
  • Abusive behavior is never tolerated.
  • Violations of this code may result in swift and permanent expulsion from the IPFS [and libp2p] community.
  • "Too long, didn't read" is not a valid excuse for not knowing what is in this document.

Notable users

(open a pull request if you want your project to be added here)


~244K SLoC