← All projects
Objective-C · Apple frameworks
macOS RDP Server
A lightweight RDP server daemon for macOS. Connect to your Mac from any standard RDP client — Windows Remote Desktop, FreeRDP, Remmina — with the smoothness you'd expect on Windows, but built natively on Apple's own frameworks.
VideoToolbox H.264
CGVirtualDisplay
DriverKit HID
launchd
universal binary
The challenge
macOS has Screen Sharing, but nothing that speaks the RDP protocol the way the rest of the industry does — no low-latency, multi-session remote desktop a Windows admin could connect to with the client already on their machine. This daemon fills that gap by implementing an RDP server that maps cleanly onto Apple's native capabilities.
Features
- H.264 hardware encoding via VideoToolbox — low latency, low CPU.
- Per-session virtual displays with CGVirtualDisplay, so each connection gets its own screen and your physical display is left untouched.
- Full keyboard & mouse injection through CGEventPost with a complete RDP scan-code table.
- Bidirectional clipboard — text and images sync both directions.
- System audio redirection — hear your Mac through the RDP client.
- Optional DriverKit HID extension that injects input at the HID stack level, so it works even at the login window and in secure-input fields.
- launchd integration — auto-starts at boot, restarts on crash; TLS encryption with a self-signed cert generated on install.
A real-world systems detail: the README is candid that screen capture only works when the daemon runs inside the GUI (Aqua) login session — a system LaunchDaemon has no WindowServer connection and renders a black screen. The fix is a per-user LaunchAgent signed with a stable self-signed certificate, so macOS pins the Screen-Recording permission to the signature rather than a cdhash that changes on every rebuild. That kind of platform nuance is exactly the part most projects get wrong.
Shipping it
Releases ship a single universal binary (native on both Intel and Apple Silicon) that links only against macOS system frameworks — no Homebrew, no compilation, no runtime dependencies. A one-line install script downloads the binary, generates the TLS certificate, and loads the launchd service on port 3389, with published SHA-256 checksums for verification.
← Back to all projects