Skip to content
LabTether

Remote Desktop

LabTether puts a remote desktop in your browser — no client app needed. Four protocols cover everything from a headless Linux server to a Windows workstation to a Proxmox VM with a SPICE display adapter. Pick the one that fits, and LabTether handles the connection plumbing.

Choosing a protocol

Protocol Best for Latency Platform support
WebRTC Lowest latency interactive control Excellent (peer-to-peer when possible) Linux agents (capture is Linux-only for now)
VNC Universal fallback, widest compatibility Good Linux, macOS, Windows, Proxmox VMs
RDP Windows remote desktop Good (via guacd proxy) Windows
SPICE Proxmox QEMU/KVM VMs with SPICE display Good Proxmox VMs with SPICE-capable display adapter

Start with WebRTC when the agent reports it as available — you get the best latency, clipboard sync, drag-and-drop file transfer, and multi-monitor support. If WebRTC is unavailable or the connection quality stays poor, LabTether automatically falls back to VNC after a short grace period. If VNC stabilizes and conditions improve, it can recover back to WebRTC automatically.

Use VNC as your general-purpose fallback. It works across every platform and does not depend on WebRTC peer negotiation. For macOS targets, make sure Screen Sharing is enabled with control (not observe-only) permissions.

Use RDP for Windows nodes where you want a native Windows remote desktop experience. It runs through guacd, so the hub needs the guacd service running and reachable.

Use SPICE only for Proxmox VMs that have a SPICE-capable display adapter configured. LabTether defaults Proxmox VMs to VNC because not every VM exposes a SPICE port — you need to explicitly switch to SPICE in the desktop protocol selector when you know the VM supports it.

Tip: Keep one known-good fallback protocol documented per environment. When something is on fire at 2 AM, you do not want to debug protocol selection — you want to get in.

WebRTC

WebRTC gives you the lowest latency path, with direct peer-to-peer connectivity when both sides are on the same LAN. The connection negotiates through the hub, but actual media and input flow directly between your browser and the agent when possible.

Requirements:

  • Agent reports WebRTC capability (currently Linux-only for desktop capture)
  • Browser supports WebRTC media and data channels
  • No firewall blocking ICE traversal between peers

Starting a session:

  1. Open the node's desktop tab and select WebRTC.
  2. Wait for the signaling handshake to complete.
  3. The desktop stream renders in the viewer with keyboard and mouse input.

What you get beyond basic desktop:

  • Clipboard sync — toolbar buttons push/pull clipboard content directly between browser and agent, no hub relay needed.
  • File transfer — drag files onto the viewer to upload them over the WebRTC data channel. Progress shows inline.
  • Multi-monitor — if the target reports multiple displays, LabTether renders them as a stitched layout using the agent-reported geometry.
  • Quality indicator — the toolbar shows a live quality badge (good, fair, or poor) reflecting stream health.
  • Ad-hoc recording — hit the record button for a browser-local WebM capture.

Auto-fallback: If the quality badge stays at poor or the ICE candidate pair is relayed and remains degraded, LabTether automatically reconnects with VNC. If VNC stabilizes and conditions improve, it can recover back to WebRTC.

Tip: Direct/LAN ICE routes are attempted before reflected or relayed candidates. If WebRTC keeps demoting to VNC, check whether a firewall or NAT is blocking direct connectivity between the two peers.

VNC

VNC is the compatibility workhorse. It works everywhere — Linux, macOS, Windows, and Proxmox VM consoles — and does not depend on peer-to-peer negotiation.

Starting a session:

  1. Select VNC in the desktop protocol picker.
  2. Wait for the handshake.
  3. The desktop renders in an embedded noVNC viewer.

Viewer controls:

  • In the embedded view, session controls live in a dock below the viewer.
  • In fullscreen, use the bottom overlay toolbar. It supports auto-hide, top/bottom positioning, and a More menu for shortcuts and display selection.
  • Mouse hands pointer control to the remote viewer. Keyboard sends typing to the remote session without hiding your local cursor.

Agent-backed features: Clipboard sync, file download, multi-monitor display selection, and desktop audio with mute/volume controls. Audio changes update in place without restarting the sideband stream.

Tip: If the Linux desktop path hides the remote cursor shape, LabTether keeps a visible local fallback cursor until a usable cursor is available again. For missing audio on Linux, verify ffmpeg or gst-launch-1.0 is installed and that the target exposes a PulseAudio or PipeWire source.

RDP

RDP sessions are proxied through guacd (Apache Guacamole's connection daemon) for a native Windows remote desktop experience in the browser.

Requirements:

  • guacd service running and reachable by the hub
  • Target has RDP enabled with valid credentials

Starting a session:

  1. Select RDP in the desktop protocol picker.
  2. Start the session and wait for the guacd handshake.
  3. The Windows desktop renders in the browser viewer with keyboard and mouse input.

Tip: If you have trouble, check guacd service state and network path first, then verify the target's RDP settings and credentials. Compare with VNC or WebRTC to isolate whether the issue is protocol-specific or network-level.

SPICE

SPICE provides a display protocol path for Proxmox QEMU/KVM VMs that have a SPICE-capable display adapter configured. The connection flows through a same-origin WebSocket on the hub, so your browser only needs to trust one origin — no second TLS prompt for the Proxmox backend.

Requirements:

  • Proxmox connector healthy
  • VM configured with a SPICE-capable display adapter
  • VM currently exposing a SPICE port

Starting a session:

  1. Switch the desktop protocol selector from the default VNC to SPICE for the target VM.
  2. Start the session — LabTether requests a SPICE ticket from Proxmox.
  3. The hub dials the Proxmox SPICE tls-port with TLS (using your collector's ca_pem or skip_verify settings) and forwards frames to the browser viewer.
  4. The desktop renders through the same https://your-hub/desktop/sessions/{id}/stream WebSocket path.

Warning: LabTether defaults Proxmox VMs to VNC because Proxmox inventory reachability does not guarantee that a given VM is currently exposing a SPICE port. Only switch to SPICE when you know the VM supports it. If the SPICE ticket succeeds but the stream fails, check whether the collector TLS settings match the certificate Proxmox presents on the SPICE tls-port.