grdpwasm runs a Go WASM binary in the browser and routes RDP through a WebSocket-to-TCP proxy, requiring no plugins.
Key Takeaways
Architecture: browser runs static/main.wasm, connects via WebSocket to a Go proxy (proxy/proxy), which opens a raw TCP connection to port 3389.
The proxy also serves static files; a single make all produces the WASM binary, wasm_exec.js, and the proxy binary.
grdp is forked locally under ./grdp/ with a Dialer field added to RdpClient, letting the WASM build inject a WebSocket-backed net.Conn instead of TCP.
Audio works via RDPSND streamed through the Web Audio API at PCM 44100 Hz stereo 16-bit; keyboard and mouse input are fully forwarded via RDP scan codes.
Security is explicitly unfinished: the proxy accepts any origin, credentials travel over plain WebSocket, and TLS termination via nginx or Caddy is the recommended mitigation.
Hacker News Comment Review
Clipboard sharing – a table-stakes feature for RDP workflows – is absent from the README, which is the first thing an evaluator would check before considering adoption.
The practical case for a browser-based client is contested: native RDP clients ship on every major OS, so the utility depends on locked-down or shared environments where installing software is not an option.