# Virtual Network Computing (VNC) VNC is a graphical desktop-sharing protocol that lets a client (the *viewer*) drive a remote machine's display, keyboard, and mouse over the network. Originally developed at the Olivetti Research Lab in the late 1990s, it standardized as the **Remote Framebuffer (RFB) protocol**, which is what every VNC implementation actually speaks today. The protocol is intentionally pixel-level: the server sends framebuffer updates (with various encodings for compression), the client sends input events. This makes it OS-agnostic and trivially compatible with anything that has a graphical display, including headless Linux servers running Xvfb or a virtual desktop. ## Why It Still Exists Despite being old, RFB / VNC remains the lowest-common-denominator way to "see and click on" a remote machine that has no native remoting story. RDP (Microsoft) is faster and richer on Windows ; SPICE is faster on KVM/QEMU ; xrdp bridges the two on Linux. But VNC works *everywhere*, with dozens of compatible servers (TightVNC, TigerVNC, RealVNC, x11vnc, Xvnc) and clients on every OS. In the AI agent tooling space, VNC has been re-discovered as the simplest way to give an agent (or a human reviewing the agent) a *visual* view of a remote ephemeral box. Tools like [[Crabbox]] expose VNC desktop access on Linux, macOS, and Windows runners so a human can watch over the agent's shoulder, or so a vision-capable model can take screenshots of a real desktop instead of a headless browser. ## Implementations - **TigerVNC, TightVNC, RealVNC**: classic cross-platform suites - **x11vnc**: attaches to an existing X11 session (vs starting a new one) - **Xvnc / Xvfb + x11vnc**: headless display for CI and remote agents - **noVNC**: a JavaScript client that runs in the browser ; turns any VNC server into a web app - **Apple Remote Desktop**: Apple's VNC dialect, augmented with Mac-specific extensions ## When To Use Something Else - **Windows-to-Windows**: RDP is faster, has clipboard, audio, and native auth - **High-frame-rate work**: VNC compresses pixels but lacks codec-aware optimizations ; use Parsec, Moonlight, or Sunshine for low-latency desktops/games - **Browser-only context**: noVNC works, but the better fit is a headless Chromium driven by [[Chrome DevTools Protocol (CDP)]] ## Security Notes - **Bare VNC is unencrypted**. Always tunnel over [[Secure Shell (SSH)]] (`ssh -L 5901:localhost:5901 host`) or a private mesh ([[Cloudflare]] Tunnel, Tailscale) - **Default password schemes are weak** ; the legacy RFB password is DES-32. Use a server that supports VeNCrypt + TLS or rely on the SSH tunnel for confidentiality ## References - RFB protocol spec: https://datatracker.ietf.org/doc/html/rfc6143 - TigerVNC: https://tigervnc.org/ - noVNC: https://novnc.com/ - Wikipedia: https://en.wikipedia.org/wiki/Virtual_Network_Computing ## Related - [[Secure Shell (SSH)]] - [[Crabbox]] - [[Cloudflare]]