TabPuppet is a firefox add-on for synchronizing click events across browser instances. It works by establishing a peer-to-peer connection (via a WebRTC Data Channel) and sending the XPATH of any elements clicked at the "host" machine to any number of connected "client" machines (star topology).
- Establish a peer-to-peer connection using a signalling server
- Mirror clicks from one tab to another via the peer-to-peer connection
- Allow multiple clients to connect to join a room (create a star topology)
- Automatically re-inject the content scripts (for monitoring and mirroring clicks) on page reload/redirect
- note: does not work with host and client running in the same browser
- Deploy signaling server to google cloud
- Allow for bi-directional synchronization as an option
- Mirror other actions such as searches in the address bar
- Handle errors regarding host and clients becoming out of sync
- Add configuration of the start URL to the popup instead of using the current active tab's URL
- Allow multiple active sessions to be hosted from a single browser
- Allow clients to connect mid-session and load up with the same state as the host tab
- Notify peers when the host exits the room
The add-on is currently only available by loading it as a temporary add-on in firefox.
First clone the repo.
git clone https://github.com/BlakeASmith/tabpuppet.git
Open firefox and type about:debugging
into the address bar.
Next, click the "this firefox" button
Click load temporary add-on
and navigate to the file for the extension
Navigate to a website that you would like to start sharing from. Create a room by
clicking the Create Room
button in the popup.
This will open the current website in a new tab, any clicks within the new tab will be replicated at the connected clients.
The signalling server generates a token/key which others can use to join the session. The token is only used to establish the peer-to-peer connection between your browser and the clients.
To join an existing room as a client click the Join Room
button in the
popup and paste in the token/key provided by the host of the room.
After hitting the Join
button, a new tab will open in which any clicks made at the Host
will be mirrored.