Awesome
Peer-to-Peer
A list of peer-to-peer resources.
Modules
- easyRTC
- wrtc: native module for NodeJS
- rtc: WebRTC suite
- rtc-dcstream: streams2 layer for WebRTC data channels
- rtc-signaller: transport agnostic signalling for WebRTC
- rtc-quickconnect: high-level wrapper for creating WebRTC apps
- rtc-switch: core logic for rtc-switchboard
- rtc-switchboard: server side in-memory signaller
- rtc-signal: core logic for client side signaling
- rtc-mesh: create a P2P mesh data structure using data channels
- rtc-core: core definitions and functions for rtc
- rtc-everywhere: cross-everything WebRTC mega-project
- webtorrent: streaming torrent client for node and the browser
- peer-wire-swarm: swarm implementation for bittorrent
- bittorrent-swarm: bittorrent swarm implementation
- bittorrent-dht: BitTorrent DHT implementation
- parse-torrent: parse a torrent identifier
- simple-peer: Simple WebRTC video/voice and data channels
- torrent-discovery: Discover BitTorrent and WebTorrent peers
- bittorrent-tracker: BitTorrent tracker for client and server
- create-torrent: Create torrent files
- parse-torrent-file: Parse a torrent file
- bittorrent-protocol: BitTorrent peer wire protocol
- torrent: download torrents with NodeJS from the CLI
- magnet-uri: parse a magnet URI
- webtorrent-chrome: BitTorrent client as a Chrome App
- peer-wire-protocol: peer wire protocol used in torrents for NodeJS
- socket.io-p2p: signalling server and client library
- node-torrent: torrent reader, write, and hash checker
- torrent-piece: torrent piece abstraction
- torrent-stream: streaming torrent engine used by peerflix
- torrent-mount: Mount a torrent or magnet link as a filesystem
- peerflix: streaming torrent client for NodeJS
- friends-swarm: a WebRTC swarm
- peerbot: message seeding utility for friends
- webrtc-swarm: create a swarm of P2P connections using WebRTC and a signalhub
- signalhub: simple signalling server
- peervision: live P2P streaming protocol
- airswarm: network swarm that discovers other peers on the network using multicast DNS
- webcat: P2P pipe using WebRTC, Github keys for auth, and signalhub for discovery
- torrent-blob-store: read-only BitTorrent backed streaming blob store
- hyperlog: Merkle DAG that replicates based on scuttlebutt logs and causal linking
- ble-swarm: swarm over bluetooth low energy
- multicast-dns: multicast-dns in JS
- screencat: WebRTC screensharing
- torrent-docker: realtime boot of remote docker images using bittorrent
- airpaste: Network pipe that auto-discovers other peers using mdns
- polo: zero configuration service discovery
- read-torrent: read and parse a torrent from a resource
- magnet-link: get a magnet link from a torrent file
- peervisionary: CLI combining airswarm and peervision
- serverless-webrtc: serverless WebRTC
- peer: peerjs server
- scuttlebutt: real-time replication
- secure-scuttlebutt: secure database with replication
- scuttlebucket: nested scuttlebutts
- scuttleboat: dynamic scuttlebucket
- rtc-SCAMP: scalable membership protocol
- rtc-SCAMP-mbr: scalable membership protocol
- network: arbitrary network implementations between clients
- BoundedBroadcastDefinition: broadcasting component on top of communication overlay
- discover: distributed master-less node discovery
- k-bucket: DHT k-bucket implementation
- gossipmonger: real-time replication with scuttlebutt
- kadoh: kademlia over HTTP
- kademlia-dht: DHT
- kademlia: kademlia
- dhtkv: cli for bittorrent storing values in mainline torrent DHT
- abstract-peer-routing: a test suite for implementing peer routing in libp2p
- abstract-record-store: a test suite to implement in IPFS record store
- libp2p-swarm: IPFS swarm implementation
- libp2p-kad-routing: IPFS Kademlia routing
- libp2p-kad-record-store: IPFS Kademlia record store
- libp2p-distributed-record-store: IPFS distributed record store
- libp2p-record: IPFS record object
- libp2p-railing: railing of a Node through a bootstrap peer list
- libp2p-random-walk: peer discovery via a DHT random walk
- libp2p-mdns-discovery: peer discovery via mDNS
- libp2p-utp: node uTP implementation
- libp2p-spdy: multistream into Stream Multiplexing
- libp2p-udt: node UDT implementation
- libp2p-udp: node UDP implementation
- libp2p-tcp: TCP implementation of abstract transport interface
- peer-info: IPFS peer abstraction
- peer-id: IPFS peer id
- peer-book: Peer Store for libp2p and IPFS
- muxrpc: multiplexed rpc
- secret-stack: connect peers using secret handshakes
- ssb-feed: secure scuttlebutt feed
- mdns: discover services on your local network
- append-only-torrent: create a sequence of torrent files for growing input
- fully-connected-topology: create a fully connected topology (mesh)
- blockcast: protocol for storing data in bitcoin blockchains
- hive.js: browser-to-browser distributed cache for video using WebRTC
- ipscend: deploy and host web apps on IPFS
- babel-routing-protocol: routing over p2p mesh
- webdht
- butter: free parts of popcorn time
- merkle-patricia-tree: as documented by Ethereum
- rtc-data-stream: convert a WebRTC data channel into a stream
- peermesh: p2p file transfer using WebRTC
- peertransfer: sends files p2p securely in the browser
- merkle-stream: generate a merkle tree from streamed data
- discovery-channel: search for a key across multiple discovery networks
- anonymous-networks: distributed, p2p chat app using IPFS
- hyperdrive: A file sharing network based on rabin file chunking and append only feeds of data verified by merkle trees.
- webrtc-connect: Establish WebRTC Data Channels between browser-node and node-node with a TCP/HTTP/WebSockets "createServer/attach" like interface
- discovery-network: a p2p discovery network
- rtc-stream: Webrtc using regular node streams
- viraljs: p2p distribution of apps
- wrtc-ice-cand-parse: WRTC Ice Candidate parse
- deejay: Music player that broadcasts to everyone on the same network
- osm-p2p-db: p2p database for open street map data
- dns-discovery: Discovery peers in a distributed system using regular dns and multicast dns.
- k-rpc-socket: Low level implementation of the k-rpc network layer that the BitTorrent DHT uses
- ucat: ucat(uTP cat) implementation in JavaScript to be used with Node.js
- k-rpc: Low-level implementation of the k-rpc protocol used the BitTorrent DHT.
- osm-p2p-server: serve open street map 0.6 api endpoints over a local p2p http server
- secure-webrtc-swarm:
webrtc-swarm
with whitelisting and encryption. - node-ice: Interactive Connectivity Establishment (ICE) (RFC 5245) for Node.js
- node-rtc-peer-connection: RTCPeerConnection for Node.js
- ipfs-merkle-dag: IPFS Merkle DAG JavaScript Implementation
- ipfs-blocks: JavaScript Implementation of Block and BlockService
- electron-webrtc: Use WebRTC in Node.js via a hidden Electron process
- peerweb.js: A client side library for fetching and rendering a static website from a torrent
- webcoin: SPV Bitcoin client for Node.js and the browser
- swarmlog: create a p2p webrtc swarm around a hyperlog
- discovery-swarm: A network swarm that uses discovery-channel to find peers
- discovery-server: A tcp/utp server that auto announces itself using discovery-channel
- ipfs-hyperlog: IPFS Merkle DAG that replicates based on scuttlebutt logs and causal linking.
- karma-peer: Test p2p apps in multiple browsers with karma
- nuTorrent: A Pure Javascript BitTorrent Client
- hyperlog-seed: seed content hashes embedded in a hyperlog
- peer-tweet: Decentralized feeds using BitTorrent's DHT.
- torrent-worker: Streaming torrent client in a web worker for Node.js
- hyperlog-webtorrent-seed: seed webtorrent magnet links from a hyperlog
- swarmbot-webtorrent: webtorrent seeding plugin for swarmbot
- peer-exchange: Decentralized peer discovery and signaling
- kad: extensible implementation of the kademlia distributed hash table for node.js and the browser
- kad-webrtc: WebRTC transport for kad Kademlia implementation
- freeice: Get free, randomized STUN and TURN servers for your WebRTC application
- web-to-dat: Clone a website and share with dat
- webtorrent-cli: WebTorrent, the streaming torrent client. For the command line.
- ipfs-data-importing: JavaScript implementation of the layout and chunking mechanisms used by IPFS
- chatwizard: p2p webrtc chatroom client
- js-gossip-cyclon: Cyclon Gossip: (P2P membership management) in Javascript
- CheckWebPeer: Check WebRTC peers of torrents.
- hyperdrive-archive-stream: Join the p2p swarm for a given hyperdrive archive.
- hyperirc: Read IRC through hypercore
- spellcast: p2p live streaming in the browser
- orbit: Distributed peer-to-peer chat application on IPFS
- orbit-db: Distributed peer-to-peer database on IPFS
- peer-network: Create servers/clients that listen on names instead of ports and hostnames and are accessible over the internet
- resilient-swarm: An efficient, secure, and reliable WebRTC swarm.
- hyperdht: dht based on kademlia, with a focus on extensibility + modularity
- hypercore-dag: DAGs on top of hypercore, allowing verified random-access to graph nodes
- hypercore-archiver: A hypercore peer that will backup multiple hypercores/hyperdrives efficiently to disk.
- hyperarchiver: Host, backup, and share hyperdrive archives
- hyperpipe: Distributed input/output pipe.
- hypername: Distributed name server
- hyperreduce: Distributed reduce on top of hypercore
- hyperfilter: Distributed map and filter
- normcore: No-config distributed streams using hypercore
- hyperfeed: p2p rss publishing
- hyperdiscovery: Join the swarm for a given hypercore or hyperdrive feed.
- dht-rpc: Make RPC calls over a Kademlia based DHT.
- hyperdrive-multiwriter: present a bundle of hyperdrive archives together as a multi-writer view
- hyperhealth: Monitor the health of a hyperdrive or dat, including peer count and peer mirror percentages.
- assassin: Store key-value pairs in a decentralized NoSQL database built with
hyperdrive
. - hyperlapse: Distributed process manager
- voter: Distributed voting based on Scuttlebutt
- hyper-string: p2p conflict-free string primitive
- hyperhost: P2P Node Servers in the Browser
- hypertweet: concept tweet -> hypercore thingy
- nile.js: Scalable peer to peer live video streaming built on torrents and webRTC
- chatmesh: p2p chat using hyperdb
- SIP.js: A simple, intuitive, and powerful JavaScript signaling library
- noise-network: Authenticated P2P network backed by HyperSwarm and NOISE
Libraries
- libwebrtc: companion to wrtc
- p2p: browser JS library
- SimpleWebRTC: browser JS library
- signalmaster: signaling server for SimpleWebRTC
- rfc5766-turn-server
- coturn: next evolution of the rfc5766-turn-server project
- peerjs: simple peer-to-peer with WebRTC
- go-peerstream: P2P multi-multiplexing in Go
- ipfs: distributed file system
- ipfs specs: specs for IPFS
- ipget: wget for IPFS
- btfs: bittorrent filesystem based on FUSE (C++)
- swarmbot: mirroring for a p2p mesh of swarmlogs
- p2p-graph: Real-time P2P network visualization with D3
- planktos: Serving websites over bittorrent
- dat: Sync data across the distributed web
- Netflux: full mesh network of clients and/or servers.
- libdatachannel: WebRTC DataChannels standalone implementation (C++)
Apps
- whiteboard
- friends: P2P chat
- openbazaar: decentralized marketplace: reputation
- ipfsbin: Run IPFS snippets
- patchwork: p2p secure messaging
- webtorrent-app: WebTorrent, the streaming torrent client. For OS X, Windows, and Linux.
- snapdrop: A HTML5 clone of Apple's AirDrop
- peerweb: PeerWeb browser
- beaker: Decentralization tech in a browser built with electron.
- PeerFast: https://github.com/DiegoRBaquero/PeerFast
- ferment: Peer-to-peer audio sharing and streaming application. Like SoundCloud but decentralized. A mashup of ssb, webtorrent and electron.
- roll-call: Free and reliable audio calls for everyone w/ browser p2p.
- cache-p2p: CacheP2P is a highly distributed cache platform based on WebTorrent and runs only in the browser.
- dropub: P2P publishing for everyone. Dropbox meets BitTorrent.
- norcal: P2P calendaring
- hyperpad: P2P collaborative text editor
Experiments
- torrent-log: message feed over bittorrent
- GitTorrent: A decentralization of Github using BitTorrent and Bitcoin
- webrtc-ips: Stun IP address requests for WebRTC
- web2web: P2P web powered by torrents and blockchain.
Workshops
- chat-room-server-and-p2p: workshop example creating a websocket chat room replaced with p2p version using webrtc
- p2p-file-sharing-workshop: Learn about distributed file sharing through a series of fun and exciting exercises.
Companies
Resources
- bittorrent spec: BitTorrent specification
- magnet URI scheme
- WebRTC infrastructure
- Getting Started
- rtc.io
- webtorrent.io: webtorrents for NodeJS and the browser
- chord
- webrtc-ring: resource discovery
- P2P design: Dominic Tarr on P2P design issues
- webgc: gossiping
- topology: different network topologies
- gossip
- membership management
- ipfs
- dynamic search
- p2pweb: Create a web where web pages are published/shared in a P2P fashion
- bitweb: websites sharing using bittorrent
- p2p handbook: introductory handbook on p2p tech & javascript
Other
- fill-disk
- brickhouse: security focused desktop applications
- bigchaindb: A scalable blockchain database
People
- mafintosh
- feross
- substack
- dominictarr
- maxogden
- jbenet
- diasdavid
- pfraze
- perguth
- nickdesaulniers
- noffle
License
CC0.