RootShare is a lightweight, self-hosted file and clipboard sharing tool.
It runs a small server on your own machine. Devices on the same network connect directly at full LAN speed. If you need to share outside your network, RootShare can create a temporary Cloudflare Tunnel.
Nothing is stored beyond the lifetime of the process. When you stop the server, the room, its files, clipboard, and public links are removed.
- Upload and download files
- Drag-and-drop file uploads
- Delete uploaded files
- Live shared clipboard across every connected device
- Rooms identified by a 5-character code with an optional password
- QR code for joining from a phone
- Same-network and internet sharing links
- Single command to start sharing
- Node.js 18 or newer
cloudflared is downloaded automatically the first time you run
npm install. If the download fails or your platform isn't supported,
RootShare will continue to work on your local network, but internet sharing
will be unavailable.
npm install
npm startDuring npm install, RootShare also downloads cloudflared in the
background. When successful, you'll see a message similar to:
[rootshare] cloudflared installed at ...
If the download fails, see the Troubleshooting section below.
npm start starts the local server at:
http://localhost:5858
Open it in your browser to create or join a room.
node bin/share.jsOr, after running npm link:
shareThis command:
- Starts the server
- Creates a room
- Prints a same-network link
- Starts a Cloudflare Tunnel (if available)
- Prints an internet link
- Opens the local link in your browser
Press Ctrl+C to stop the server. All room data and links are removed
immediately.
Use this when devices are connected to the same Wi-Fi or LAN.
Files are transferred directly between devices at local network speed and do not use your internet connection.
The internet link uses a temporary Cloudflare Tunnel.
Transfer speed depends on your internet upload speed rather than your LAN speed. For large local transfers, always use the same-network link.
The room page displays both links (when available) and lets you generate a QR code for either one.
npm run electronThe desktop app:
- Starts the server
- Checks for
cloudflared - Starts a Cloudflare Tunnel if available
- Opens the room page automatically
If cloudflared isn't available, it simply opens the same-network version.
npm run dist:win # Windows (.exe)
npm run dist:mac # macOS (.dmg)
npm run dist:linux # Linux (.AppImage and .deb)Before building installers, run:
node scripts/install-cloudflared.jsThis downloads the appropriate cloudflared binary into:
bin/cloudflared/
electron-builder automatically bundles everything in this directory.
If cloudflared has already been downloaded during npm install, you can
skip this step.
server/ Express + Socket.IO server
scripts/ cloudflared installer script
bin/ CLI entry point (share)
electron/ Desktop application
public/ Frontend assets
If the automatic download fails, RootShare still works on your local network.
You can install cloudflared manually from:
- https://github.com/cloudflare/cloudflared/releases
- https://developers.cloudflare.com/tunnel/downloads/
This is expected.
npm start only starts the local server.
To automatically create a room and start a Cloudflare Tunnel, use:
node bin/share.jsor, if installed globally:
shareThe unpacked executable:
dist/win-unpacked/RootShare.exe
does not use the bundled cloudflared binary the same way as the installed
application.
Install RootShare using the generated installer instead:
dist/RootShare Setup x.x.x.exe
Then launch it from the Start menu or a desktop shortcut.
macOS unpacked builds have not yet been tested for this behavior.
install-cloudflared.js only downloads the binary for the operating system
it is run on.
For example:
- Windows →
cloudflared.exe - macOS → macOS binary
- Linux → Linux binary
If you build for another platform using the wrong binary, the packaged application won't be able to start a Cloudflare Tunnel.
Run:
node scripts/install-cloudflared.json each target operating system before building installers.
Contributions are welcome! If you find a bug or want to suggest an improvement, please get involved:Report Issues: Open an Issue to report bugs or request features.Submit Code: Create a Pull Request to contribute fixes or features.
This project is licensed under the MIT License.
Thank you for your time and interest in this project.