New: direct mode over Tailscale

Your Mac,
in any browser

One command on the Mac, a pairing code in the browser, and you're at your desktop. No VPN, no account.

Already have a pairing code?

It's printed in the Mac's terminal — type it here and you're in.

Connect

Any browser becomes your Mac's screen.

A hotel laptop, the office PC, your phone — open the viewer, type the code, sign in with your Mac's own username and password. Mouse, keyboard, everything, at your desktop.

Speaks Apple's Screen Sharing protocol end-to-end — including the ARD authentication generic web viewers don't have.

  macremotecontrol · connected to Sali's Mac mini
Notes — Ideas
On your phone

A trackpad in your pocket.

One finger drives an accelerated cursor with a visible pointer — precise enough to hit a menu item on a 4K desktop. Two fingers scroll, pinch zooms, and the view follows the cursor. Displays switch with a tap, and Mission Control, Spotlight and screenshots fire from a toolbar menu.

tap = clicktwo fingers = scrollpinch = zoom⌘⌥⌃⇧ latches
Clay model of a phone showing a desktop, with a large cursor leaning on it
Three roads in

Relay, address, or your own tailnet.

The session looks identical whichever road the network allows — the edge relay works everywhere, a public IP needs nothing on the Mac, and Tailscale users can cut our servers out entirely.

pairing code → edge relay → your Macpublic IP → the edge dials port 5900 directlytailscale → your Mac serves the viewer itself, offline-capable
$ node mrc.mjs
this Mac is now online
pairing code  XKR-92M-4TQ
direct mode   http://100.84.167.55:5800
Security

Locked end to end. We just carry boxes.

Login runs Apple's ARD authentication between your browser and your Mac — a Diffie-Hellman exchange, then AES-128. The relay sees ciphertext. The connector only dials out, so your Mac keeps zero open ports, and a pairing code without your macOS password opens nothing.

Codes expire within 24 hours and die when you stop the connector — one Ctrl-C ends everything.

Clay model of a blue padlock with a cable passing through it and a small key
iOS & Android · coming soon

A native app is on its way.

Apple Screen Sharing as a real app: buttery trackpad gestures, instant reconnects, your Macs saved on the home screen, and credentials in the Keychain. Built on the same protocol engine as this viewer.

App Store · soonGoogle Play · soonTestFlight first

One email when the beta opens, one when it ships — nothing else. More about the app →

Notes — Ideas
Get started

Reach your Mac in a minute.

One command on the Mac you want to reach. Needs Node 21+ and Screen Sharing turned on (System Settings → General → Sharing).

Terminal — on your Mac

$ curl -fsSL https://macremotecontrol.com/connector.mjs -o mrc.mjs && node mrc.mjs

Needs Node 21+ — check with node --version, and install from nodejs.org if you get command not found: node. Screen Sharing must be on too: System Settings → General → Sharing.

A single readable file — open it before you run it. Tailscale/LAN-only? Run it with --listen 5800 --no-relay instead.

Open the viewer
Questions

The short answers.

Do I need to change anything on my Mac?

Turn on Screen Sharing (System Settings → General → Sharing) and run the connector command. That's the whole setup. No kernel extensions, no accessibility permissions, no menu-bar apps.

Does it work outside my home network?

Yes — that's the point. The Mac and the browser each make an outbound connection to the relay on Cloudflare's edge network, so it works across any two networks that can reach the internet, NAT and hotel Wi-Fi included.

Can I just type an IP address instead of running the connector?

Yes — the viewer has "connect by address". Our edge opens a TCP connection to that address's VNC port and bridges it to your browser, so nothing runs on the Mac. It only works when the Mac is reachable from the internet (a public IP or a router port-forward on 5900–5999); Tailscale and LAN addresses are invisible from the edge — use the connector for those.

I already use Tailscale — do I need your relay?

No. Run the connector with --listen 5800 --no-relay and it serves the viewer from your Mac itself, bridging directly to Screen Sharing. Open http://<tailscale-ip>:5800 from any device on your tailnet and every byte stays inside it — the relay is never in the path.

What happens if someone gets my pairing code?

They reach a login prompt. The code only routes to your Mac; getting in still requires your macOS username and password, verified by macOS itself. Treat the code like your home address, not like your keys.

Is my screen content encrypted?

Both legs are TLS-encrypted (HTTPS/WSS): browser to relay, and relay to your Mac. Login credentials are additionally encrypted end-to-end, so they are never visible to the relay even in transit. Full end-to-end encryption of screen pixels is on the roadmap.

Can I use it from my phone?

Yes — the viewer has a trackpad mode built for touch: one finger moves the pointer with acceleration, tap clicks, two fingers scroll, pinch zooms, and there's an on-screen keyboard plus one-tap Mac shortcuts like Mission Control and Spotlight. A native iOS and Android app is also in the works.

Can I control my Mac from my iPhone or Android phone?

Yes. Open the viewer in Safari or Chrome, type your pairing code, and your phone becomes a trackpad for the Mac — tap to click, two fingers to scroll, pinch to zoom, with an on-screen keyboard. A native iOS and Android app is coming — join the waitlist.

How can I control a Mac remotely?

Turn on Screen Sharing on the Mac (System Settings → General → Sharing), run the one-line connector command in Terminal, then open the viewer on any device and enter the pairing code it prints. Sign in with the Mac's username and password and you have full mouse and keyboard control.

I ran the command and got “command not found: node”. Now what?

That Mac has no Node.js installed — macOS doesn't ship it. Install Node 21 or newer from nodejs.org (or run brew install node), then run the same command again. The curl half already worked, so mrc.mjs is sitting in whichever folder Terminal was in — from there, node mrc.mjs is enough.

The viewer says “Nothing is listening”. What does that mean?

The connector reached the relay, but the Mac refused its own Screen Sharing connection on port 5900 — almost always because Screen Sharing is off. Turn it on in System Settings → General → Sharing, then reconnect. You don't need to restart the connector: it opens that connection fresh for each viewer.

Why isn't my Mac allowing screen sharing?

Check three things: Screen Sharing is on in System Settings → General → Sharing; your user is in its allowed-users list; and Remote Management (which replaces Screen Sharing) isn't enabled at the same time. If the connector says port 5900 is unreachable, one of those three is almost always the cause.

Can a Mac be accessed remotely when it's not on the same network?

Yes — that's what the pairing-code relay is for. The Mac and your browser each dial out to the relay, so it works across different networks, NAT, and firewalls with no port forwarding. Same Wi-Fi, different country — the session looks identical.

Can you unlock a MacBook remotely?

Yes. Apple's Screen Sharing works at the macOS login screen, so you can connect to a locked (but awake) Mac and type the password remotely to sign in. A Mac that's asleep or shut down can't be woken over the internet by the connector alone.

Do I need an account?

No — connecting with a pairing code or an address works without one. A free account adds a dashboard of saved Macs, so your machines and their addresses are one click away from any browser you sign in on.