{"id":20388206,"url":"https://github.com/libp2p/universal-connectivity","last_synced_at":"2025-04-04T20:09:47.045Z","repository":{"id":149219390,"uuid":"610506002","full_name":"libp2p/universal-connectivity","owner":"libp2p","description":"Realtime decentralised chat with libp2p showing ubiquitous peer-to-peer connectivity between multiple programming languages (Go, Rust, TypeScript) and runtimes (Web, native binary) using QUIC, WebRTC and WebTransport","archived":false,"fork":false,"pushed_at":"2025-03-27T16:41:31.000Z","size":18353,"stargazers_count":114,"open_issues_count":40,"forks_count":42,"subscribers_count":11,"default_branch":"main","last_synced_at":"2025-03-28T19:08:26.343Z","etag":null,"topics":["go","libp2p","networking","p2p","peer-to-peer","rust","webrtc","webtransport"],"latest_commit_sha":null,"homepage":"https://universal-connectivity.on-fleek.app","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/libp2p.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}},"created_at":"2023-03-06T22:54:58.000Z","updated_at":"2025-03-27T16:41:31.000Z","dependencies_parsed_at":"2024-06-17T15:18:38.947Z","dependency_job_id":"8aba94d9-21a1-4ee6-a02b-2ea21787dedb","html_url":"https://github.com/libp2p/universal-connectivity","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Funiversal-connectivity","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Funiversal-connectivity/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Funiversal-connectivity/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/libp2p%2Funiversal-connectivity/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/libp2p","download_url":"https://codeload.github.com/libp2p/universal-connectivity/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247242678,"owners_count":20907134,"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":["go","libp2p","networking","p2p","peer-to-peer","rust","webrtc","webtransport"],"created_at":"2024-11-15T03:07:54.704Z","updated_at":"2025-04-04T20:09:47.012Z","avatar_url":"https://github.com/libp2p.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Universal Connectivity\n\nRealtime highly decentralised chat app.\n\n![libp2p topology](libp2p-hero.svg)\n\nShowcasing [libp2p](https://libp2p.io/)'s superpowers in establishing ubiquitous peer-to-peer [connectivity](https://connectivity.libp2p.io/) in modern programming languages (Go, Rust, TypeScript) and runtimes (Web, native binary).\n\nOn top of this strong foundation, it layers a GossipSub: A Secure PubSub Protocol for Unstructured Decentralised P2P Overlays. By analogy, an event broker with distributed brokering, or a distributed PubSub protocol.\n\nThis is the gossip event protocol that powers Filecoin and Post-Merge Ethereum.\n\nSome of the cool and cutting-edge [transport protocols](https://connectivity.libp2p.io/) used by this app are:\n\n- WebTransport\n- WebRTC\n- WebRTC-direct\n- QUIC\n- TCP\n\n## Packages\n\n| Package                     | Description                     | WebTransport | WebRTC | WebRTC-direct | QUIC | TCP |\n| :-------------------------- | :------------------------------ | ------------ | ------ | ------------- | ---- | --- |\n| [`js-peer`](./js-peer/)     | Browser Chat Peer in TypeScript | ✅           | ✅     | ✅            | ❌   | ❌  |\n| [`go-peer`](./go-peer/)     | Chat peer implemented in Go     | ✅           | ❌     | ✅            | ✅   | ✅  |\n| [`rust-peer`](./rust-peer/) | Chat peer implemented in Rust   | ❌           | ❌     | ✅            | ✅   | ❌  |\n\n✅ - Protocol supported\n❌ - Protocol not supported\n\n- Uses the [**GossipSub**](https://docs.libp2p.io/concepts/pubsub/overview/) PubSub protocol for decentralised messaging\n\n## Connecting to a peer\n\nThere are two ways to connect to a peer:\n- With a PeerID using peer routing (adds a step to resolve the multiaddr for the PeerID), using the IPFS/Libp2p DHT, e.g. `12D3KooWLMySi3eEWscUnKmMCYRSXL3obYJ4KNimpShJK6shUy2M`\n- With a multiaddr directly (skips the peer routing step), e.g. `/ip4/127.0.0.1/udp/64434/webrtc/certhash/uEiA_tkndZQWf7jyFqgCiwH_CqsS7FTWFTb6Px8MPxxT9gQ/p2p/12D3KooWLMySi3eEWscUnKmMCYRSXL3obYJ4KNimpShJK6shUy2M`\n\n### Using a multiaddr\n\nLoad the UI, and enter the multiaddr into the UI. Ensure that it includes the peerID, e.g.`/ip4/192.168.178.21/udp/61838/quic-v1/webtransport/certhash/uEiCQCALYac4V3LJ2ourLdauXOswIXpIuJ_JNT-8Wavmxyw/certhash/uEiCdYghq5FlXGkVONQXT07CteA16BDyMPI23-0GjA9Ej_w/p2p/12D3KooWF7ovRNBKPxERf6GtUbFdiqJsQviKUb7Z8a2Uuuo6MrDX`\n\n\n## Getting started: JS\n\n### 1. Install dependencies\n\nRun npm install:\n\n```\ncd js-peer\nnpm i\n```\n\n### 2. Start Next.js dev server\n\nStart the dev server:\n\n```\nnpm run dev\n```\n\n## Getting started: Rust\n\n```\ncd rust-peer\ncargo run\n```\n\nThis will automatically connect you to the bootstrap node running on [fly.io](https://fly.io).\n\nTo explore more advanced configurations if you e.g. want to set up our own network, try:\n\n```\ncargo run -- --help\n```\n\n## Getting started: Go\n\n```\ncd go-peer\ngo run .\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibp2p%2Funiversal-connectivity","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flibp2p%2Funiversal-connectivity","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flibp2p%2Funiversal-connectivity/lists"}