{"id":13482709,"url":"https://github.com/perguth/peermesh","last_synced_at":"2025-04-14T10:21:12.219Z","repository":{"id":57144098,"uuid":"43391336","full_name":"perguth/peermesh","owner":"perguth","description":":dizzy:  • Exchange files p2p and e2e encrypted over a fully meshed network in your browser using WebRTC.","archived":false,"fork":false,"pushed_at":"2023-02-19T20:10:38.000Z","size":915,"stargazers_count":118,"open_issues_count":1,"forks_count":17,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-04-12T15:01:58.095Z","etag":null,"topics":["encrypted","mesh-networks","p2p","transfer","webrtc"],"latest_commit_sha":null,"homepage":"https://perguth.de/peermesh","language":"JavaScript","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/perguth.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":null,"security":null,"support":null,"governance":null}},"created_at":"2015-09-29T20:05:42.000Z","updated_at":"2025-03-14T12:06:23.000Z","dependencies_parsed_at":"2022-09-05T13:00:15.395Z","dependency_job_id":"bf9505ce-af6e-4d96-8451-210045f7036b","html_url":"https://github.com/perguth/peermesh","commit_stats":null,"previous_names":["pguth/peermesh"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perguth%2Fpeermesh","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perguth%2Fpeermesh/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perguth%2Fpeermesh/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/perguth%2Fpeermesh/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/perguth","download_url":"https://codeload.github.com/perguth/peermesh/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248804770,"owners_count":21164131,"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":["encrypted","mesh-networks","p2p","transfer","webrtc"],"created_at":"2024-07-31T17:01:04.738Z","updated_at":"2025-04-14T10:21:12.186Z","avatar_url":"https://github.com/perguth.png","language":"JavaScript","readme":"# peermesh\n\n\u003e Start a **fully meshed network** by passing on the generated link and share files **peer-to-peer** and **end-to-end encrypted** powered by WebRTC!\n\n- [x] Works fully in the browser using `WebRTC`.\n- [x] Mesh swarms can be started by opening the site. A \"mesh URL\" is generated to be passed around.\n- [x] The mesh URL contains a password. All files mesh will be sent `end-to-end encrypted`.\n- [x] Swarms can be joined by opening the mesh URL.\n- [x] Swarm form fully meshed networks (n:n) using [`webrtc-swarm`](https://github.com/mafintosh/webrtc-swarm).\n- [x] WebRTC signaling data is exchanged via [`signalhub`](https://github.com/mafintosh/signalhub).\n- [x] Swarm URLs can be bookmarked and reused. `trust on first use: encryption keys`\n- [ ] You see when the source code changes because of [`hyperboot`](https://github.com/substack/hyperboot). `trust on first use: source code`\n\nFiles will \\*not\\* be propagated among peers. The peers that initates a transfer will send the file to every connected peer individually.\n\nCombining trust on first use both for encryption keys \\*and\\* source code will help you [defeat Sauron](http://holgerkrekel.net/2013/10/26/defating-sauron-with-the-trust-on-first-use-principle/)!\n\n## Installation\n\n```sh\ngit clone https://github.com/pguth/peermesh.git\ncd peermesh\nnpm install\n\n# You need a signaling server running:\nnpm install -g signalhub\nsignalhub listen -p 7000\n\n# Now serve peermesh:\nnpm run build # and then open `public/index.html` in your browser or\nnpm start # to start the development server on `http://localhost:9966`\n```\n\n## Related\n\n- [`peertransfer`](https://github.com/pguth/peertransfer)\n  Peertransfer is a (1:n) WebRTC based file transfer tool. Compared to `peermesh` it encodes a authentication code into the \"sharing URL\" that is passed around and will not initiate WebRTC signaling if the code is missing or wrong.\n\n## Credits\n\n- [Encrypt and decrypt content with Nodejs](http://lollyrock.com/articles/nodejs-encryption/) `crypto`\n- [JavaScript File Encrypter](http://tutorialzine.com/2013/11/javascript-file-encrypter/) `design`\n","funding_links":[],"categories":["Modules","Projects"],"sub_categories":["File Transfer"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperguth%2Fpeermesh","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fperguth%2Fpeermesh","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fperguth%2Fpeermesh/lists"}