{"id":13737017,"url":"https://github.com/vacp2p/nim-libp2p","last_synced_at":"2026-01-23T02:41:05.079Z","repository":{"id":37432254,"uuid":"158147798","full_name":"vacp2p/nim-libp2p","owner":"vacp2p","description":"libp2p implementation in Nim","archived":false,"fork":false,"pushed_at":"2025-05-09T18:50:53.000Z","size":59742,"stargazers_count":266,"open_issues_count":139,"forks_count":57,"subscribers_count":28,"default_branch":"master","last_synced_at":"2025-05-09T19:47:47.097Z","etag":null,"topics":["libp2p","nim","p2p","p2p-network","peer-to-peer"],"latest_commit_sha":null,"homepage":"https://vacp2p.github.io/nim-libp2p/docs/","language":"Nim","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vacp2p.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-11-19T01:58:31.000Z","updated_at":"2025-05-09T19:02:15.000Z","dependencies_parsed_at":"2024-02-18T14:41:58.480Z","dependency_job_id":"faea57bc-a9e7-4383-9fc9-0958d7373b31","html_url":"https://github.com/vacp2p/nim-libp2p","commit_stats":{"total_commits":1415,"total_committers":44,"mean_commits":32.15909090909091,"dds":0.6360424028268552,"last_synced_commit":"b7e0df127f35183746e6114dc3c374c517081494"},"previous_names":["vacp2p/nim-libp2p","status-im/nim-libp2p"],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vacp2p%2Fnim-libp2p","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vacp2p%2Fnim-libp2p/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vacp2p%2Fnim-libp2p/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vacp2p%2Fnim-libp2p/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vacp2p","download_url":"https://codeload.github.com/vacp2p/nim-libp2p/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254485057,"owners_count":22078767,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["libp2p","nim","p2p","p2p-network","peer-to-peer"],"created_at":"2024-08-03T03:01:33.622Z","updated_at":"2026-01-17T14:55:15.683Z","avatar_url":"https://github.com/vacp2p.png","language":"Nim","funding_links":[],"categories":["Web","Nim","Web 3.0"],"sub_categories":["Protocols"],"readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://libp2p.io\"\u003e\u003cimg width=\"250\" src=\"./.assets/full-logo.svg?raw=true\" alt=\"nim-libp2p logo\" /\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003eThe \u003ca href=\"https://nim-lang.org/\"\u003eNim\u003c/a\u003e implementation of the \u003ca href=\"https://libp2p.io/\"\u003elibp2p\u003c/a\u003e Networking Stack.\u003c/h3\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://github.com/vacp2p/nim-libp2p/actions\"\u003e\u003cimg src=\"https://github.com/vacp2p/nim-libp2p/actions/workflows/ci.yml/badge.svg\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://codecov.io/gh/vacp2p/nim-libp2p\"\u003e\u003cimg src=\"https://codecov.io/gh/vacp2p/nim-libp2p/branch/master/graph/badge.svg?token=UR5JRQ249W\"/\u003e\u003c/a\u003e\n\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://opensource.org/licenses/Apache-2.0\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-blue.svg\" /\u003e\u003c/a\u003e\n\u003ca href=\"https://opensource.org/licenses/MIT\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue.svg\" /\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n## Background\nlibp2p is a [Peer-to-Peer](https://en.wikipedia.org/wiki/Peer-to-peer) networking stack, with [implementations](https://github.com/libp2p/libp2p#implementations) in multiple languages derived from the same [specifications.](https://github.com/libp2p/specs)\n\nBuilding 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 strives to be a modular stack with secure defaults and useful protocols, while remaining open and extensible.\nThis is a native Nim implementation, using [chronos](https://github.com/status-im/nim-chronos) for asynchronous execution. It's used in production by a few [projects](#users).\n\nLearn more about libp2p at [**libp2p.io**](https://libp2p.io) and follow libp2p's documentation [**docs.libp2p.io**](https://docs.libp2p.io).\n\n## Contribute\n\nnim-libp2p is a great place to contribute. Your contribution will help drive thousands of decentralized nodes across networks worldwide.\n\nThe best part is that nim-libp2p has **good first issues** that are especially suited for newcomers. Your contributions will be guided by core maintainers, just like an **internship expiriance** but decentralized. \n\nJump into the [contributing](docs/contributing.md) page to get started, `nim-libp2p` is expecting your contribution!\n\n## Install\n\nThe currently supported Nim versions are v2.0.16 and v2.2.6.\n\n```\nnimble install libp2p\n```\nYou'll find the nim-libp2p documentation [here](https://vacp2p.github.io/nim-libp2p/docs/). See [examples](./examples) for simple usage patterns.\n\n## Development\n\nRead the [development guide](docs/development.md) to get started with the project and testing.\n\nAdditional resources:\n\n- [Compile time flags](docs/compile_time_flags.md) - all available compile-time options\n- [Common hurdles](docs/common_hurdles.md) - frequently encountered issues and solutions\n\n## Contributors\n\nThanks to everyone who has contributed to nim-libp2p. Your support and efforts are greatly appreciated.\n\n\u003ca href=\"https://github.com/vacp2p/nim-libp2p/graphs/contributors\"\u003e\u003cimg src=\"https://contrib.rocks/image?repo=vacp2p/nim-libp2p\" alt=\"nim-libp2p contributors\"\u003e\u003c/a\u003e\n\n## Join the Conversation\n\nConnect with other contributors in our [community channel](https://discord.com/channels/1204447718093750272/1351621032263417946). Ask questions, share ideas, get support, and stay informed about the latest updates from the maintainers.\n\n## Users\n\nnim-libp2p is used by:\n- [Nimbus](https://github.com/status-im/nimbus-eth2), an Ethereum client\n- [nwaku](https://github.com/waku-org/nwaku), a decentralized messaging application\n- [nim-codex](https://github.com/codex-storage/nim-codex), a decentralized storage application\n- (open a pull request if you want to be included here)\n\n## Stability\nnim-libp2p has been used in production for many years in high-stake scenarios, so its core is considered stable.\nSome modules are more recent and less stable.\n\nThe versioning follows [semver](https://semver.org/), with some additions:\n- Some of libp2p procedures are marked as `.public.`, they will remain compatible during each `MAJOR` version\n- The rest of the procedures are considered internal, and can change at any `MINOR` version (but remain compatible for each new `PATCH`)\n\n## License\n\nLicensed and distributed under either of\n\n* MIT license: [LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT\n\nor\n\n* Apache License, Version 2.0, ([LICENSE-APACHEv2](LICENSE-APACHEv2) or http://www.apache.org/licenses/LICENSE-2.0)\n\nat your option. These files may not be copied, modified, or distributed except according to those terms.\n\n\n## Modules\nList of packages modules implemented in nim-libp2p:\n\n| Name                                                       | Description                                                                                                      |\n| ---------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |\n| **Libp2p**                                                 |                                                                                                                  |\n| [libp2p](libp2p/switch.nim)                                | The core of the project                                                                                          |\n| [connmanager](libp2p/connmanager.nim)                      | Connection manager                                                                                               |\n| [identify / push identify](libp2p/protocols/identify.nim)  | [Identify](https://docs.libp2p.io/concepts/fundamentals/protocols/#identify) protocol                            |\n| [ping](libp2p/protocols/ping.nim)                          | [Ping](https://docs.libp2p.io/concepts/fundamentals/protocols/#ping) protocol                                    |\n| **Transports**                                             |                                                                                                                  |\n| [libp2p-tcp](libp2p/transports/tcptransport.nim)           | TCP transport                                                                                                    |\n| [libp2p-ws](libp2p/transports/wstransport.nim)             | WebSocket \u0026 WebSocket Secure transport                                                                           |\n| [libp2p-tor](libp2p/transports/tortransport.nim)           | Tor Transport                                                                                                    |\n| [libp2p-quic](libp2p/transports/quictransport.nim)         | Quic Transport                                                                                                   |\n| [libp2p-memory](libp2p/transports/memorytransport.nim)     | Memory Transport                                                                                                 |\n| **Secure Channels**                                        |                                                                                                                  |\n| [libp2p-noise](libp2p/protocols/secure/noise.nim)          | [Noise](https://docs.libp2p.io/concepts/secure-comm/noise/) secure channel                                       |\n| [libp2p-plaintext](libp2p/protocols/secure/plaintext.nim)  | Plain Text for development purposes                                                                              |\n| **Stream Multiplexers**                                    |                                                                                                                  |\n| [libp2p-mplex](libp2p/muxers/mplex/mplex.nim)              | [MPlex](https://github.com/libp2p/specs/tree/master/mplex) multiplexer                                           |\n| [libp2p-yamux](libp2p/muxers/yamux/yamux.nim)              | [Yamux](https://docs.libp2p.io/concepts/multiplex/yamux/) multiplexer                                            |\n| **Data Types**                                             |                                                                                                                  |\n| [peer-id](libp2p/peerid.nim)                               | [Cryptographic identifiers](https://docs.libp2p.io/concepts/fundamentals/peers/#peer-id)                         |\n| [peer-store](libp2p/peerstore.nim)                         | [Address book of known peers](https://docs.libp2p.io/concepts/fundamentals/peers/#peer-store)                  |\n| [multiaddress](libp2p/multiaddress.nim)                    | [Composable network addresses](https://github.com/multiformats/multiaddr)                                        |\n| [signed-envelope](libp2p/signed_envelope.nim)              | [Signed generic data container](https://github.com/libp2p/specs/blob/master/RFC/0002-signed-envelopes.md)        |\n| [routing-record](libp2p/routing_record.nim)                | [Signed peer dialing informations](https://github.com/libp2p/specs/blob/master/RFC/0003-routing-records.md)      |\n| [discovery manager](libp2p/discovery/discoverymngr.nim)    | Discovery Manager                                                                                                |\n| **Utilities**                                              |                                                                                                                  |\n| [libp2p-crypto](libp2p/crypto)                             | Cryptographic backend                                                                                            |\n| [libp2p-crypto-secp256k1](libp2p/crypto/secp.nim)          |                                                                                                                  |\n| **Pubsub**                                                 |                                                                                                                  |\n| [libp2p-pubsub](libp2p/protocols/pubsub/pubsub.nim)        | Pub-Sub generic interface                                                                                        |\n| [libp2p-floodsub](libp2p/protocols/pubsub/floodsub.nim)    | FloodSub implementation                                                                                          |\n| [libp2p-gossipsub](libp2p/protocols/pubsub/gossipsub.nim)  | [GossipSub](https://docs.libp2p.io/concepts/publish-subscribe/) implementation                                   |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvacp2p%2Fnim-libp2p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvacp2p%2Fnim-libp2p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvacp2p%2Fnim-libp2p/lists"}