Before you run it
- Screen Sharing on: System Settings → General → Sharing → Screen Sharing.
- Node 21+: check with
node --version. (Install from nodejs.org or Homebrew if needed.)
The connector is a single dependency-free Node script that dials out to the relay — no installer, no menu-bar app, no account. Stop it with Ctrl-C and it's gone.
node --version. (Install from nodejs.org or Homebrew if needed.)It prints a pairing code like XKR-92M-4TQ — that's what you type into the viewer.
Terminal — on your Mac
$ curl -fsSL https://macremotecontrol.com/connector.mjs -o mrc.mjs && node mrc.mjsNeeds 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.
| Flag | What it does |
|---|---|
--listen 5800 | Also serve the viewer locally (Tailscale/LAN) — see direct mode. |
--no-relay | Skip the relay entirely; requires --listen. Fully offline-capable. |
--vnc 127.0.0.1:5900 | Point at a different Screen Sharing host or port — useful if something else already owns 5900. |
--relay https://… | Use a different relay (or MACREMOTE_RELAY in the environment). Defaults to macremotecontrol.com. |
With --listen, macOS may ask whether to allow node to accept incoming connections. Allow it — that prompt is the firewall guarding the local port the viewer is served on. Denying it leaves the page unreachable with no other symptom.
The connector runs until you stop it, and a new run prints a fresh code. For an always-reachable Mac, keep it alive in a tmux session, or save your Mac in the dashboard so its address or latest code is one click away wherever you sign in.
Prefer to read what you're running first? The whole connector is one file: connector.mjs. And here's what it can and cannot see.