Urgent.News

What's breaking now, across thousands of outlets.

Tech

I built a remote desktop for my Macs with no account, no cloud and no open ports

I wanted to reach my own Macs from my phone and my laptop. Every tool I tried wanted an account, sent my sessions through someone else's servers, or both. For machines that hold everything I work on, that felt like the wrong trade. So I built OwnDesk : a Mac hosts, and another Mac, an Android phone or an iPhone controls it. There is no account, no cloud service and no port open to the Internet.…

Fahad wanted to access his Macs from his phone and laptop without needing an account, cloud service, or open ports. He created OwnDesk, a Mac-hosted application that can be controlled by another Mac or a smartphone. The solution is open-source under the MIT license and available on GitHub. There are no servers involved; instead, devices communicate directly using Bonjour, Tailscale, or a direct connection.

Pairing is a one-time, face-to-face process that establishes a secure connection using HMAC and public keys stored in the Secure Enclave or Keystore. Communication is secured through signed envelopes containing size, version, sender, signature, clock skew, replay checks, and JSON Schema. The protocol is defined as JSON Schema to prevent disagreement between implementations.

While Fahad initially considered adding a command execution feature, he decided against it to maintain the protocol's simplicity. Instead, the Mac runs an SSH server, and devices can request SSH access individually. Clipboard synchronization is optional and only shared with paired devices. The application supports full-size desktops, but the protocol was updated to use H.264 for better video quality. Testing on real devices revealed issues, which were addressed with end-to-end scripts.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

Read the original at dev.to →

More in Tech

More from Friday 2 October →