# 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]]