Self-hosted · MIT · No vendor cloud
Browser desktop for Debian & Pi fleets.
One command install. Manifest-driven rollback. A self-healing lifecycle layer around noVNC + wayvnc, not a reinvention of it.
Getting started
Clone the repo, run the installer, open a browser. No account, no cloud onboarding, no config files to hand-edit.
01
Pull the repo onto the Debian or Raspberry Pi node.
git clone …/OpenRemoteGUI.git
02
Auto-detects hardware and seeds a baseline restore point.
sudo ./install.sh
03
Reach the desktop from any browser on your LAN or VPN.
http://NODE-IP:6080
git clone https://github.com/855princekumar/OpenRemoteGUI.git && cd OpenRemoteGUI && sudo ./install.sh
Not AI slop · built on proven OSS
live from api.github.com
…
noVNC ★ · browser client
…
websockify ★ · WS⇄VNC
…
wayvnc ★ · Wayland capture
MIT
OpenRemoteGUI · … forks
OpenRemoteGUI adds the install / rollback / watchdog / fleet layer around these. That is the whole point.
The value · real numbers
Commercial remote-desktop tools bill per device, per seat, or per session, forever. OpenRemoteGUI is MIT-licensed and self-hosted, so licensing stays flat at zero no matter how large the fleet gets.
$0
per device, per year
~$24.7k
RealVNC, 50 nodes / 5 yr
~$52k
TeamViewer median / 5 yr
Illustrative, licensing only. Basis: RealVNC Connect Essentials list price ≈ $99 / device / yr (50-node fleet); TeamViewer median verified annual spend ≈ $10,424 / yr (CostBench, 2026). Self-hosted hardware and power are not included. OpenRemoteGUI licensing is $0 at any fleet size.
Where it fits
The tools below all put a screen on your browser. Only one is self-hosted, reversible, and free to run across a fleet.
| Capability | OpenRemoteGUI | RealVNC | TeamViewer | AnyDesk | Pi Connect |
|---|---|---|---|---|---|
| Licensing cost | $0 · MIT | ~$99/dev/yr | $25–230/mo | ~$1,093/yr+ | Free* |
| No vendor cloud | Yes | No | No | No | Relay |
| No account needed | Yes | No | No | No | Pi ID |
| Open source | MIT | No | No | No | Partial |
| Offline / air-gapped | Yes | No | No | No | No |
| Browser, no client | Yes | Partial | No | No | Yes |
| Fleet rollback / restore points | Yes | No | No | No | No |
| One-command Ansible rollout | Yes | Limited | Limited | Limited | No |
*Pi Connect: free for personal use, cloud TURN relay, closed-source relay, commercial licensing TBD. Pricing sourced 2026.
OpenRemoteGUI vs a typical cloud remote-desktop tool
Why it wins on the edge
Zero licensing at any fleet size. MIT-licensed and self-hosted, so cost never scales with node count.
No cloud, no account, fully offline. Runs on a private LAN or VPN with nothing phoning home.
Only option with fleet rollback. Manifest-driven restore points on every node, from the first install.
Idempotent Ansible rollout. Install and revert across N nodes from one control plane.
What it does
git clone → sudo ./install.sh → browser. Nothing else.
Raw VNC on 5900 is never bound to the network. Only gateway 6080 is reachable.
Removes and restores exactly what it installed. No blanket apt remove or rm -rf.
Fires every 30s, restarts only its own units, backs off on headless nodes instead of thrashing.
Pi Zero/3 lightweight · Pi 4 standard · Pi 5 GPU · generic Debian. Detected at install.
No Wayland session and no compositor? It makes zero changes and tells you why.
Everything under /opt, /etc, /var/lib + a private venv for websockify.
A broken install reverts itself. A half-finished install never lingers on a node.
How it works
The browser only ever reaches port 6080 over your LAN or VPN. Everything to the right of the gateway lives on the node, and the VNC hop is pinned to 127.0.0.1.
Raw VNC :5900 is never bound to a routable address, so it cannot be reached from the LAN, even by mistake.
Auth and TLS come from the layer you already trust: your VPN/LAN, or a reverse proxy in front of 6080.
Three systemd user services (wayvnc · noVNC · watchdog) start at boot via linger. SSH stays untouched.
Version control for the edge
Install seeds a baseline. Rollback archives the version it removes. Restore reinstalls any version you kept. Each restore point is only tens of KB, so keeping several per node is free.
install.sh
v1.0.0 deployed
Baseline restore point seeded automatically.
rollback.sh
v1.0.0 archived
Manifest-driven: removes only what it created.
install v1.1.0
Upgrade misbehaves
Previous version already archived on upgrade.
restore.sh v1.0.0…
Back on stable
One command returns the node to a known-good state.
Built for fleets
The installer is idempotent and non-interactive on fleet runs. Each node is installed and rolled back independently. The control plane never has to understand VNC, just http://NODE:6080.
Field-tested on real Pi 3 / Pi 4 / Pi 5 hardware and running across multi-site edge-node fleets in production.
Where it runs
| Platform | Arch | Wayland | GUI suitability | Mode |
|---|---|---|---|---|
| Pi Zero / Zero 2 W | ARM/ARM64 | Session-dependent | Limited / moderate | lightweight |
| Pi 3 | ARM64 | Yes | Good | lightweight |
| Pi 4 | ARM64 | Yes | Very good | standard |
| Pi 5 | ARM64 | Yes | Excellent | gpu |
| Debian PC | x86_64 | Session-dependent | Excellent | standard |
| Debian server (headless) | x86_64 | Usually none | No desktop to capture | refused by design |
Installing on a headless server does not create a desktop; the installer reports the missing session and makes no changes.
Best-fit use cases
A browser desktop per node with no per-device license and no cloud dependency.
No account, no outbound control plane. Runs entirely on a private LAN.
One command up, one command down. Reversible on machines you care about.
Restore points let a technician swap versions and revert to known-good safely.
Reach the real desktop of a Wayland kiosk over VPN without touching its display.
Idempotent install and rollback across N nodes from a single control plane.
Clone. Install. Open the browser.