Work / WebRTC
WebRTC
Zero-auth remote screen sharing over WebRTC — one command to install, works across the internet.
Stack
nodejs · remote-access · screen-sharing · webrtc
Source on GitHub ↗ · Talk to me →
Readme
Zero-auth remote screen sharing over WebRTC. One command to install, works across the internet.
A target machine shares its screen as a hidden background daemon. A monitor machine connects by device number and gets full mouse and keyboard control. Firebase brokers the connection; the video itself is peer-to-peer and never passes through it.
Quick start
On the machine to be shared:
npx vexrtc -serveInstalls once to ~/.vexrtc/, registers an OS autostart service, and starts the daemon in the background. The screen is shared silently — no window, no taskbar icon, no dock entry. It auto-starts on every reboot and only stops when you run -stop.
On the machine doing the viewing:
npx vexrtc -monitor 1Opens a browser tab connected to device #1. Use -monitor 2 for device #2, and so on. No installation is required on the monitor machine.
To stop sharing:
npx vexrtc -stopCommands
Architecture
Target machine Monitor machine
┌─────────────────────┐ ┌─────────────────────┐
│ Electron daemon │ │ npx vexrtc -monitor │
│ (hidden, no UI) │ │ Express + browser │
│ │◄──── WebRTC ──►│ │
│ getDisplayMedia() │ P2P video │ <video> fullscreen │
│ auto-captures │ + data chan │ mouse/kb events │
│ primary screen │ │ → data channel │
└─────────┬───────────┘ └──────────┬──────────┘
│ │
└──────── Firebase RTDB signaling ──────┘
(offer / answer / ICE only)Device slots. Each target machine is assigned a slot number (1, 2, 3…) stored in Firebase. Monitors connect by slot number, not by user account — no authentication is required.
Signaling: Firebase RTDB at https://tovex-eab23-default-rtdb.firebaseio.com/
Autostart
The daemon restarts automatically if it crashes (Restart=always / KeepAlive: true).
What the install does
On the first npx vexrtc -serve:
- Copies package files to ~/.vexrtc/ — a stable path for the OS service
- Runs npm install in ~/.vexrtc/frontend/ (downloads Electron, roughly 120 MB)
- Builds the React frontend with Vite — skipped if a pre-built dist is bundled
- Registers and starts the OS autostart service
Subsequent runs skip steps 2 and 3 when the dependencies and build are already present. Logs are written to ~/.vexrtc/daemon.log.
Requirements
- Node.js 18+ on the target machine, for the install step
- No Node.js needed on the monitor machine once the npm package is downloaded
- Internet access to Firebase RTDB for signaling
- A direct P2P path, or STUN/TURN, for video — standard WebRTC ICE
Typical deployment
Factory floor / industrial machine
→ run once: npx vexrtc -serve
→ the machine is now always available for remote connection
Engineer's laptop, anywhere in the world
→ npx vexrtc -monitor 1
→ browser opens with full-screen video and mouse/keyboard controlLicense
MIT
More work
plc-checkweigher
One-command installer for the Mitsubishi PLC check-weigher system. Python · Raspberry Pi · Mitsubishi PLC · PDF Reports · npm CLI
checkweigher
High-speed industrial check-weigher on the edge. Python · Raspberry Pi 4 · XT1000 · T16 Load Cell
Tovex-CRM
Modular CRM platform with real-time dashboards. TypeScript · TypeScript · Modular Architecture · Real-time Dashboards