Connect people through any URL.
Junction is a web extension for Firefox, Chrome and Safari that lets you start an audio call at any URL.
make package will regenerate the content script, and
package the extension for all browsers in the
./build/ directory with
the following outputs:
junction.xpi: The firefox extension
junction.zip: The chrome extension
Junction.app: The safari extension app
The project is divided into three main parts:
server: A server that handles message passing to establish the WebRTC connections.
extension: The main code of the extension itself.
safari: The safari app, it wraps the extension using symlinks.
maketo run the build commands. It's included in
xcodeto build the safari extension. Can be downloaded from the apple developer portal.
pnpmto build the extension, and if you want to run the server directly. Node can be installed via brew with
brew install node, or with a version manager like asdf. For
pnpmcheck the website.
podman-composeif you want to run the server as a container. Both can be installed with homebrew
brew install podman podman-compose
xcbeautifyto format swift. Can be installed with homebrew
brew install xcbeautify
If you're running macos and using homebrew, you can install them all with
The server is a socket.io server that relays messages between peers to help establish a WebRTC connection.
You can use environment variables to control the server.
JUNCTION_SERVER_PORTwhich port to listen on. Defaults to
The extension uses WebExtension manifest v2 and is compatible with Firefox, Chrome and Safari.
You can build all extensions using
make in the root of the directory.
If you want to run manually then you can run
pnpm install from the
extension folder to install dependencies, and
pnpm build to generate the
$ pnpm install && pnpm build
In order to test on firefox, first go to
about:debugging, then click
This Firefox option. Then click on
Load Temporary Add-On and
point the browser to the
build/junction.xpi file if you're using
extension/manifest.json file if you're testing without packaging.
This will enable the extension and will allow you to use the inspector to debug.
In order to test on chrome, first go to
chrome://extensions/. Make sure
Developer mode is enabled. You can drag the
build/junction.zip file or
Load Unpacked and point the browser to the
Junction.app and then enable the extension in Safari.
make format will format the code with prettify and xcbeautify