{"id":20388377,"url":"https://github.com/swift-libp2p/swift-libp2p","last_synced_at":"2025-08-30T04:08:54.851Z","repository":{"id":38787060,"uuid":"487729019","full_name":"swift-libp2p/swift-libp2p","owner":"swift-libp2p","description":"Swift implementation of libp2p, a modular \u0026 extensible networking stack","archived":false,"fork":false,"pushed_at":"2025-05-01T14:51:19.000Z","size":490,"stargazers_count":67,"open_issues_count":8,"forks_count":7,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-07-22T23:56:01.120Z","etag":null,"topics":["decentralized","ipfs","libp2p","networking","p2p","peer-to-peer","swift","swift-nio"],"latest_commit_sha":null,"homepage":"https://swift-libp2p.github.io/documentation/libp2p","language":"Swift","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/swift-libp2p.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-05-02T05:39:09.000Z","updated_at":"2025-07-12T22:57:16.000Z","dependencies_parsed_at":"2025-03-24T16:43:20.705Z","dependency_job_id":null,"html_url":"https://github.com/swift-libp2p/swift-libp2p","commit_stats":null,"previous_names":[],"tags_count":16,"template":false,"template_full_name":null,"purl":"pkg:github/swift-libp2p/swift-libp2p","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swift-libp2p%2Fswift-libp2p","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swift-libp2p%2Fswift-libp2p/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swift-libp2p%2Fswift-libp2p/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swift-libp2p%2Fswift-libp2p/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/swift-libp2p","download_url":"https://codeload.github.com/swift-libp2p/swift-libp2p/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/swift-libp2p%2Fswift-libp2p/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":272800965,"owners_count":24995185,"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","status":"online","status_checked_at":"2025-08-30T02:00:09.474Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["decentralized","ipfs","libp2p","networking","p2p","peer-to-peer","swift","swift-nio"],"created_at":"2024-11-15T03:09:33.251Z","updated_at":"2025-08-30T04:08:54.827Z","avatar_url":"https://github.com/swift-libp2p.png","language":"Swift","funding_links":[],"categories":["Implementations"],"sub_categories":[],"readme":"![swift-libp2p-logo-wide](https://user-images.githubusercontent.com/32753167/172017715-7684aff8-9a32-451f-a7cf-01e0db53edb4.png)\n\n# Swift LibP2P\n\n[![](https://img.shields.io/badge/made%20by-Breth-blue.svg?style=flat-square)](https://breth.app)\n[![](https://img.shields.io/badge/project-libp2p-yellow.svg?style=flat-square)](http://libp2p.io/)\n[![Swift Package Manager compatible](https://img.shields.io/badge/SPM-compatible-blue.svg?style=flat-square)](https://github.com/apple/swift-package-manager)\n![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p/actions/workflows/build+test.yml/badge.svg)\n\n\u003e The Swift implementation of the libp2p networking stack\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Disclaimer](#disclaimer)\n- [Install](#install)\n- [Usage](#usage)\n  - [Example](#example)\n  - [API](#api)\n- [Contributing](#contributing)\n- [Credits](#credits)\n- [License](#license)\n\n## Overview\n\n[libp2p](https://github.com/libp2p/specs) is a networking stack and library modularized out of [The IPFS Project](https://github.com/ipfs/ipfs), and bundled separately for other tools to use.\n\u003e 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.\n\n### Docs \u0026 Examples\n- [**The Swift Libp2p Documentation**](https://swift-libp2p.github.io/documentation/libp2p/)\n\n### Note:\nTo learn more, check out the following resources:\n- [the libp2p documentation](https://docs.libp2p.io)\n- [the libp2p community discussion forum](https://discuss.libp2p.io)\n- [the libp2p specification](https://github.com/libp2p/specs)\n- [the go-libp2p implementation](https://github.com/libp2p/go-libp2p) \n- [the js-libp2p implementation](https://github.com/libp2p/js-libp2p)\n- [the rust-libp2p implementation](https://github.com/libp2p/rust-libp2p)\n\n## Disclaimer\n\n- ‼️ This is a work in progress ‼️\n- ‼️ Please don't use swift-libp2p in anything other than experimental projects until it reaches 1.0 ‼️\n- ‼️ Help it get there sooner by contributing ‼️\n\n## Install\n\nInclude the following dependency in your Package.swift file\n``` swift\nlet package = Package(\n    ...\n    dependencies: [\n        ...\n        .package(name: \"LibP2P\", url: \"https://github.com/swift-libp2p/swift-libp2p.git\", .upToNextMajor(from: \"0.1.0\"))\n    ],\n        ...\n        .target(\n            ...\n            dependencies: [\n                ...\n                .product(name: \"LibP2P\", package: \"swift-libp2p\"),\n            ]),\n    ...\n)\n```\n\n## Usage\n\n### Example \n``` swift\nimport LibP2P\nimport LibP2PNoise\nimport LibP2PMPLEX\n\n/// Configure your Libp2p networking stack...\nlet lib = try Application(.development, peerID: PeerID(.Ed25519))\nlib.security.use(.noise)\nlib.muxers.use(.mplex)\nlib.servers.use(.tcp(host: \"127.0.0.1\", port: 0))\n\n/// Register your routes handlers...\n/// - Note: Uses the same syntax as swift-vapor\ntry lib.routes()\n\n/// Start libp2p\nlib.start()\n\n/// Do some networking stuff... 📡\n\n/// At some later point, when you're done with libp2p...\nlib.shutdown()\n\n```\n- Check out the [libp2p-app-template](https://github.com/swift-libp2p/libp2p-app-template) repo for a bare-bones executable app ready to be customized\n- Check out the [Configure an Echo Server](https://swift-libp2p.github.io/tutorials/libp2p/configure-echo-server) tutorial in the documentation for more info\n\n\n## Packages\n\n- List of packages currently in existence for swift libp2p: \n- Legend:  🟢 = kinda works, 🟡 = doesn't really work yet, 🔴 = not started yet, but on the radar\n\n| Name | Status | Description | Build (macOS \u0026 Linux) |\n| --------- | --------- | --------- | --------- |\n| **Libp2p** |\n| [`swift-libp2p`](//github.com/swift-libp2p/swift-libp2p) | 🟢 | swift-libp2p entry point | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-libp2p-core`](//github.com/swift-libp2p/swift-libp2p-core) | 🟢 | Core interfaces, types, and abstractions | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-core/actions/workflows/build+test.yml/badge.svg) |\n| **Protocol Negotiation** |\n| [`swift-libp2p-mss`](//github.com/swift-libp2p/swift-libp2p-mss) | 🟢 | MultistreamSelect transport upgrader  (embedded) | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-mss/actions/workflows/build+test.yml/badge.svg) |\n| **Transport** |\n| [`swift-libp2p-tcp`](//github.com/swift-libp2p/swift-libp2p-tcp) | 🟢 | TCP transport (embedded) | N/A |\n| [`swift-libp2p-udp`](//github.com/swift-libp2p/swift-libp2p-udp) | 🟡 | UDP transport (embedded) | N/A |\n| `swift-libp2p-quic` | 🔴 | TODO: QUIC transport | N/A |\n| [`swift-libp2p-websocket`](//github.com/swift-libp2p/swift-libp2p-websocket) | 🟢 | WebSocket transport | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-websocket/actions/workflows/build+test.yml/badge.svg) |\n| `swift-libp2p-http` | 🔴 | TODO: HTTP1 transport | N/A |\n| `swift-libp2p-http2` | 🔴 | TODO: HTTP2 transport | N/A |\n| **Encrypted Channels** |\n| [`swift-libp2p-plaintext`](//github.com/swift-libp2p/swift-libp2p-plaintext) | 🟢 | Plaintext channel | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-plaintext/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-libp2p-noise`](//github.com/swift-libp2p/swift-libp2p-noise) | 🟢 | Noise crypto channel | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-noise/actions/workflows/build+test.yml/badge.svg) |\n| `swift-libp2p-tls` | 🔴 | TODO: TLS 1.3+ crypto channel | N/A |\n| **Stream Muxers** |\n| [`swift-libp2p-mplex`](//github.com/swift-libp2p/swift-libp2p-mplex) | 🟢 | MPLEX stream multiplexer | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-mplex/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-libp2p-yamux`](//github.com/swift-libp2p/swift-libp2p-yamux) | 🔴 | TODO: YAMUX stream multiplexer | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-yamux/actions/workflows/build+test.yml/badge.svg)  |\n| **Private Network** |\n| - | - | - | N/A |\n| **NAT Traversal** |\n| - | - | - | N/A |\n| **Peerstore** |\n| [`swift-libp2p-peerstore`](https://github.com/swift-libp2p/swift-libp2p/blob/main/Sources/LibP2P/Peerstore/DefaultPeerstore.swift) | 🟡 | Reference implementation of peer metadata storage component  (embedded) | N/A |\n| **Connection Manager** |\n| [`swift-libp2p-connection-manager`](https://github.com/swift-libp2p/swift-libp2p/blob/main/Sources/LibP2P/Connections/Managers/DefaultConnectionManager.swift) | 🟡 | Reference implementation of connection manager  (embedded) | N/A |\n| **Routing** |\n| [`swift-libp2p-kad-dht`](https://github.com/swift-libp2p/swift-libp2p-kad-dht) | 🟡 | Kademlia Distributed Hash Table | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-kad-dht/actions/workflows/build+test.yml/badge.svg) |\n| **Pubsub** |\n| [`swift-libp2p-pubsub`](https://github.com/swift-libp2p/swift-libp2p-pubsub) | 🟡 | Core PubSub Protocols \u0026 FloodSub and GossipSub Routers | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-pubsub/actions/workflows/build+test.yml/badge.svg) |\n| **RPC** |\n| `swift-libp2p-rpc` | 🔴 | TODO: A simple RPC library for libp2p | N/A |\n| **Utilities/miscellaneous** |\n| [`swift-libp2p-dnsaddr`](//github.com/swift-libp2p/swift-libp2p-dnsaddr) | 🟢 | A DNSAddr Resolver | ![Build \u0026 Test (macos)](https://github.com/swift-libp2p/swift-libp2p-dnsaddr/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-libp2p-mdns`](//github.com/swift-libp2p/swift-libp2p-mdns) | 🟡 | MulticastDNS for LAN discovery | ![Build \u0026 Test (macos)](https://github.com/swift-libp2p/swift-libp2p-mdns/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-libp2p-identify`](//github.com/swift-libp2p/swift-libp2p-identify) | 🟢 | IPFS Identify Protocols (embedded) | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-identify/actions/workflows/build+test.yml/badge.svg) |\n| **Testing and examples** |\n| `swift-libp2p-testing` | 🔴 | TODO: A collection of testing utilities for libp2p | N/A |\n\n\n## Dependencies\n\n| Name | Description | Build (macOS \u0026 Linux) |\n| --------- | --------- | --------- |\n| **Cryptography** |\n| [`swift-libp2p-crypto`](//github.com/swift-libp2p/swift-libp2p-crypto) | Crypto abstractions for Keys, Hashes and Ciphers | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-libp2p-crypto/actions/workflows/build+test.yml/badge.svg) |\n| **Multiformats** |\n| [`swift-multibase`](//github.com/swift-libp2p/swift-multibase) | Self Identifying Base Encodings | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-multibase/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-multicodec`](//github.com/swift-libp2p/swift-multicodec) | Multiformat Codecs | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-multicodec/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-multihash`](//github.com/swift-libp2p/swift-multihash) | Self Identifying Hashes | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-multihash/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-multiaddr`](//github.com/swift-libp2p/swift-multiaddr) | Self Identifying Addresses | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-multiaddr/actions/workflows/build+test.yml/badge.svg) |\n| [`swift-peer-id`](//github.com/swift-libp2p/swift-peer-id) | Peer IDs  | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-peer-id/actions/workflows/build+test.yml/badge.svg) |\n| **Utilities** |\n| [`swift-bases`](//github.com/swift-libp2p/swift-bases) | Base encodings \u0026 decodings | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-bases/actions/workflows/build+test.yml/badge.svg)  |\n| [`swift-varint`](//github.com/swift-libp2p/swift-varint) | Protocol Buffer Variable Integers | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-varint/actions/workflows/build+test.yml/badge.svg)  |\n| [`swift-cid`](//github.com/swift-libp2p/swift-cid) | Content Identifiers | ![Build \u0026 Test (macos and linux)](https://github.com/swift-libp2p/swift-cid/actions/workflows/build+test.yml/badge.svg)  |\n| **External** |\n| [`swift-nio`](https://github.com/apple/swift-nio) | Network application framework | N/A |\n\n## API\n\n``` swift\n/// TODO\n```\n\n## Contributing\n\nContributions are welcomed! This code is very much a proof of concept. I can guarantee you there's a better / safer way to accomplish the same results. Any suggestions, improvements, or even just critiques, are welcome! \n\nLet's make this code better together! 🤝\n\n## Credits\n\n- [swift-nio](https://github.com/apple/swift-nio)\n- [swift-vapor](https://github.com/vapor/vapor) \n- [LibP2P Spec](https://github.com/libp2p/specs)\n\n## License\n\n[MIT](LICENSE) © 2022 Breth Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswift-libp2p%2Fswift-libp2p","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fswift-libp2p%2Fswift-libp2p","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fswift-libp2p%2Fswift-libp2p/lists"}