Skip to main content

WebAssembly RDP

Gatwy's RDP client runs entirely in your browser as WebAssembly — no Guacamole daemon, no Java runtime, no server-side bitmap relay.

How It Works

Traditional browser-based RDP solutions (including Apache Guacamole) decode RDP on the server and stream the result as images to the browser. Gatwy compiles a real RDP client to WebAssembly and runs it client-side, connecting through the Gatwy server as a tunnel.

This means:

  • Lower latency — no server-side rendering step
  • Reduced bandwidth — protocol-level compression instead of image streaming
  • Smoother animations — the browser renders directly, not from a JPEG stream
  • No Java — no Tomcat, no guacd, no extra containers

Capabilities

  • Dynamic resolution — adapts to your browser window size automatically
  • Clipboard sharing — copy/paste between local and remote desktop
  • File transfer — drag-and-drop files to/from the remote machine
  • Session recording — recorded as WebM video, encrypted at rest, replayed in-browser
  • Click ripple indicators — color-coded click visualization in recordings (blue=left, red=right, gray=middle)

Current Limitation: RDP Audio

RDP audio redirection is not implemented yet.

That means:

  • Remote system sounds are not played in the browser session
  • Microphone redirection from browser to remote host is not available

This repository is the marketing/docs site, so no RDP runtime source code exists here to patch directly.

Implementation Plan (Product Repo)

To add RDP audio support in the actual gateway/runtime codebase:

  1. Negotiate and enable RDP audio virtual channels (rdpsnd for playback, audin for capture).
  2. Decode/play back incoming audio frames in-browser (likely via Web Audio API).
  3. Define browser audio policies (autoplay gesture handling, mute state, reconnect behavior).
  4. Add optional microphone capture path and secure permission prompts.
  5. Add protocol/session settings for audio direction (off, playback, playback+mic).
  6. Add telemetry and diagnostics (channel negotiation success, packet drops, decode failures, latency).
  7. Add E2E validation on Windows hosts and browsers (Chrome, Edge, Firefox, Safari where supported).

Open Design Questions

Before implementation, confirm:

  1. Should MVP include playback only, or playback + microphone?
  2. Which remote OS targets must be supported first (Windows Server versions / Windows 10/11)?
  3. Is low-latency voice quality required, or is system audio quality sufficient for V1?
  4. Should audio be enabled by default for all RDP sessions, or controlled per-role/per-connection?
  5. Do recordings need to include audio tracks, and are there compliance constraints for that?
  6. Do we need bandwidth/codec controls in UI (quality profiles)?
  7. What is the acceptable added CPU/memory budget in browser and gateway?

Browser Support

Requires WebAssembly support — all modern browsers qualify:

  • Chrome / Edge 90+
  • Firefox 90+
  • Safari 15+