← Home![]()
2026 · personal · private
RemoteDesk
Control a Windows PC from a phone over WebRTC
Why
I wanted to drive the PC in my room from the sofa with a phone. Existing remote desktops come with accounts, relay servers and heavy installs, so I built the minimum needed between my PC and my phone.
What I built
- Host: A .NET 9 library (RemoteDesk.Core), a WPF tray app, and a console CLI with diagnostic probes.
- Signaling: A Node.js WebSocket relay that also serves the browser viewer on the same port.
- Viewers: A Kotlin Android app and a browser viewer (the reference implementation).
- Input: Direct touch (click where you press) and trackpad (relative movement). Tap is left click, long-press is right click, two fingers scroll, drag moves with the button held. Ctrl, Alt, Shift and Win stay latched until the next input.
Decisions
- Hardware H.264 + WebRTC: GPU encoding instead of software to keep latency down; video over the WebRTC media channel, input over the data channel.
- One pipeline: Capture and encoding run once regardless of viewers, start when the first viewer connects and stop when the last leaves. An idle host uses no GPU.
- Settings live in
%APPDATA%\RemoteDesk\config.json; command-line flags override them. Closing the window leaves the host in the tray.
Measured
Local network, 2560×1440 source: 1920×1080 at 30fps, about 2.1 Mbps, zero packet loss, RTT 15–31 ms.
Status
M3: open a browser, enter a host id, see the PC and control it by touch. The browser viewer is the reference implementation; the Android viewer speaks the same protocol.