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:
- Negotiate and enable RDP audio virtual channels (
rdpsndfor playback,audinfor capture). - Decode/play back incoming audio frames in-browser (likely via Web Audio API).
- Define browser audio policies (autoplay gesture handling, mute state, reconnect behavior).
- Add optional microphone capture path and secure permission prompts.
- Add protocol/session settings for audio direction (
off,playback,playback+mic). - Add telemetry and diagnostics (channel negotiation success, packet drops, decode failures, latency).
- Add E2E validation on Windows hosts and browsers (Chrome, Edge, Firefox, Safari where supported).
Open Design Questions
Before implementation, confirm:
- Should MVP include playback only, or playback + microphone?
- Which remote OS targets must be supported first (Windows Server versions / Windows 10/11)?
- Is low-latency voice quality required, or is system audio quality sufficient for V1?
- Should audio be enabled by default for all RDP sessions, or controlled per-role/per-connection?
- Do recordings need to include audio tracks, and are there compliance constraints for that?
- Do we need bandwidth/codec controls in UI (quality profiles)?
- 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+