Work / WebRTC
WebRTC: vexRTC — zero-auth remote screen sharing over WebRTC
Zero-auth remote screen sharing over WebRTC — one command to install, works across the internet.
What is it made of?
nodejs · remote-access · screen-sharing · webrtc
Source on GitHub ↗ · Need one like it? →
How does it work?
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
What else did I build?
GXBridge-MCP
Control Mitsubishi GX Works3 and your PLC with AI — an MCP server for any agent GX Works3 · Industrial Automation
eplanbridge
Drive EPLAN Pro Panel 2022.0.3 from outside the application — and build a 6-axis robot-arm control schematic with it. C# · EPLAN
tovex-cli-showcase
tovex-cli: command-line control of Siemens TIA Portal and live S7 PLCs, built for AI agents. Public overview; source is private.