noVNC
An HTML5 VNC client library that renders a remote desktop directly in the browser over WebSockets
Repository Health
Technical Analysis
noVNC implements the RFB (Remote Framebuffer / VNC) protocol entirely in JavaScript, using an HTML5 Canvas to render the remote screen and native browser input events to send keyboard/mouse/touch back to the server, with no browser plugin or native client required. Because the RFB protocol runs over a raw TCP socket that browsers can’t open directly, noVNC connects through websockify, a companion WebSocket-to-TCP proxy that both wrap the RFB stream for browser delivery.
The @novnc/novnc package exposes the core client as an importable RFB class (core/rfb.js) for embedding in custom applications, while the repository’s vnc.html/vnc_lite.html provide ready-made standalone pages. It is widely used as the browser-based console for virtualization and cloud platforms — including Proxmox VE, oVirt, OpenStack, and many other VNC-backed remote-access products.
What You Get
- An importable RFB client class (core/rfb.js) for embedding a VNC viewer in a custom web application
- Full RFB protocol implementation: multiple encodings, clipboard sync, and credential/auth negotiation
- Canvas-based rendering with support for touch, virtual keyboard, and mobile-friendly input handling
- Ready-to-use standalone pages (vnc.html, vnc_lite.html) for drop-in remote-desktop access
- Internationalized UI strings (po/ translations) for the bundled application shell
Common Use Cases
- Embedding a browser-based remote-desktop console in a virtualization or cloud management UI (VM consoles, hypervisor dashboards)
- Giving support/helpdesk tooling a no-plugin-required way to view and control a remote machine’s screen
- Providing kiosk or remote-lab access to a desktop environment purely through a web browser
- Building a custom remote-access product on top of the RFB client while supplying your own UI chrome
Under The Hood
Architecture - The core/ directory holds the protocol client: rfb.js drives the RFB handshake/state machine and owns a Display (display.js) for Canvas rendering and a Websock (websock.js) abstraction over the browser WebSocket API; decoders/ implements each supported RFB encoding (raw, hextile, tight, etc.) as a pluggable decoder, and input/ normalizes keyboard/mouse/touch events into RFB input messages.
Tech Stack - Modern vanilla JavaScript (ES modules, "type": "module" in package.json) with no framework dependency, a small vendor/ directory for pako (deflate) and legacy keysym tables, Karma + a fake-WebSocket test harness for browser-environment testing, and ESLint for style enforcement.
Code Quality - tests/ contains dedicated suites per module (test.display.js, test.deflator.js, test.copyrect.js, etc.) plus a fake.websocket.js harness that lets protocol logic be tested without a real VNC server, and a playback.js/playback-ui.js tool for replaying captured RFB sessions during debugging — a strong testing setup for a binary-protocol client.
API Design - Consumers instantiate new RFB(target, url, options) against a DOM element and a websockify-fronted WebSocket URL, then listen for connect/disconnect/credentialsrequired events; this is a comparatively low number of concepts for a full remote-desktop protocol client, though correctly standing up the required websockify proxy on the server side is an extra piece of infrastructure every integrator must provide.
Used by 5 apps in this directory
1Panel
Devops · Hosting Control Panel · Monitoring
The only open-source VPS control panel with native AI agent runtime — deploy websites, Docker stacks, and local LLMs from one web interface.
Coder
Devops · Developer Tools · Code Editors
Self-hosted cloud development environments and AI coding agents — defined in Terraform, connected via WireGuard, automatically shut down when idle.
Obot
AI Agents
An open-source MCP platform for organizations — host MCP servers, run MCP registries, monitor usage, and build agents and chatbots on top of the Model Context Protocol from one self-hosted deployment.
Pangolin
Networking
An open-source, identity-based zero-trust remote access platform built on WireGuard — a self-hostable alternative to Cloudflare Tunnel and Twingate with SSO, OIDC, and tunneled reverse proxying.
Skyvern
AI Agents · Automation
Skyvern (YC S2023) automates browser-based workflows by pairing LLMs with computer vision, letting agents click, fill, and extract data on sites they've never seen, without brittle XPath selectors that break on every layout change.