noVNC

An HTML5 VNC client library that renders a remote desktop directly in the browser over WebSockets

Library
npm
v1.7.0
13,944stars
Mozilla Public License 2.0

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
72/100Good
Development Activity44
Maintenance52
Community92
Maturity60
Momentum40

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
76/100Good
Architecture80
Code Quality78
Innovation75
Learning Curve70

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

Go
72%
GPL 3.0

1Panel

Devops · Hosting Control Panel · Monitoring

36,573

The only open-source VPS control panel with native AI agent runtime — deploy websites, Docker stacks, and local LLMs from one web interface.

View details
91
Repo Health
76
Technical
67
Dependency
Built with
Go72%
Vue28%
Updated today
Go
76%
AGPL 3.0

Coder

Devops · Developer Tools · Code Editors

14,199

Self-hosted cloud development environments and AI coding agents — defined in Terraform, connected via WireGuard, automatically shut down when idle.

View details
93
Repo Health
90
Technical
71
Dependency
Built with
Go76%
TypeScript22%
Updated today
Go
62%
MIT

Obot

AI Agents

949

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.

View details
86
Repo Health
70
Technical
71
Dependency
Built with
Go62%
Svelte29%
Updated yesterday
TypeScript
99%
AGPL 3.0

Pangolin

Networking

22,378

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.

View details
87
Repo Health
68
Technical
72
Dependency
Built with
TypeScript99%
Updated today
Python
76%
AGPL 3.0

Skyvern

AI Agents · Automation

22,785

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.

View details
89
Repo Health
82
Technical
71
Dependency
Built with
Python76%
TypeScript22%
Updated today

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers

Search