Work / WebRTC

WebRTC

Zero-auth remote screen sharing over WebRTC — one command to install, works across the internet.

nodejs · JavaScript · 2026 · Active

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 -serve

Installs 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 1

Opens 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 -stop

Commands

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:

Subsequent runs skip steps 2 and 3 when the dependencies and build are already present. Logs are written to ~/.vexrtc/daemon.log.

Requirements

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 control

License

MIT

More work

View all →

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

/ Work / {{ project.name }} {{ project.category }}

{{ project.name }}

{{ project.tagline }}

{{ m }}

Overview

{{ project.description }}

npm i {{ project.npm }}

Highlights

{{ f.n }}

{{ f.text }}

Stack

{{ t }}

Readme

{{ b.s }}

{{ b.s }}

{{ b.s }}

{{ b.s }}
{{ b.s }}
  • {{ it }}

Read the full README on GitHub →

Thoughts about this

More work

View all →

/ Work

Project not found.

That project doesn't exist. Head back to the full list.