WebRTC integration for Urbit: https://grants.urbit.org/proposals/21131866-webrtc-gall-agent-and-external-app
icepond: Gall agent and marks for ICE server acquisitionicepond-js: Javascript library for fetching ICE servers over airlock from icepondicepond-test: React app demonstrating icepondswitchboard: Gall agent and marks for signalling WebRTC peer connectionsswitchboard-jsJavascript library for setting up WebRTC peer connections via Urbit airlock to switchboardurchatfm: React app demonstrating peer-to-peer ephemeral chat over WebRTC, signalled over Urbit
See DESIGN.md
Run npm i && npm run bootstrap to get started. This project uses lerna to manage the switchboard-js and icepond-js packages. Add a .env.local file to the urchatfm directory with the following entry VITE_SHIP_URL=https://yourshipurl.com replacing "https://yourshipurl.com" with your actual url.
Whenever working you can simply run npm run dev from the root directory which will simultaneously watch both packages for any changes and run the development server for urchatfm. It will proxy requests to the ship url added above. That ship will have to have urchatfm installed.
When it's time to release urchatfm running npm run build will build all packages and urchatfm itself. The resulting urchatfm/dist folder is then ready to be made into a glob.
If either switchboard-js or icepond-js are updated, they can be published to npm using npm run publish.