How it works
Prerequisites
- A mesh VPN — Tailscale, ZeroTier, or Netbird — installed and signed in on both Mac and iPhone (same network on that provider).
- Wireless Debugging enabled for that iPhone in Xcode (pair over USB at least once first).
- The iPhone on Wi‑Fi when you bridge. A different Wi‑Fi from the Mac is fine. Cellular doesn’t work — Apple’s wireless debugging doesn’t run the same way over cellular.
Nuticast doesn’t set these up for you — it builds on a mesh VPN and a device Xcode already knows.
Choose your mesh VPN
Nuticast works the same way regardless of which mesh VPN you use — the only difference is how it finds your iPhone's address on that network.
Manual IP
Any other mesh VPN — type in the IP it assigned your iPhone.
Not on Tailscale, ZeroTier, or Netbird? Nuticast isn’t limited to those three. Pick Manual IP when adding a device: confirm your iPhone and Mac are joined to the same network on whichever mesh VPN you actually use, find the IP that VPN assigned the iPhone (its own app or dashboard will show this), and type that IP straight into Nuticast. Everything after that — bridging, auto-restart, status — works exactly the same as it does for the three built-in providers.
Adding a device
Three steps in the Add Device window:
1 · Find the iPhone on Wi‑Fi
With the phone still on USB or the same Wi‑Fi as your Mac, pick it from the list Nuticast finds.
2 · Match your mesh VPN device
Pick which mesh VPN you're using, then match the same physical phone from its device list (Tailscale, Netbird) or type in its assigned IP (ZeroTier, or Manual IP for anything else).
3 · Name it
Any label works — e.g. “Mike’s iPhone.” Saved locally only; nothing is uploaded.
Starting a bridge
Once the iPhone has left your Mac’s Wi‑Fi and joined another Wi‑Fi, toggle Start Bridge (main window, device detail, or menu bar). Keep the phone on Wi‑Fi — cellular doesn’t work.
Nuticast then:
- Confirms the phone is actually remote (refuses if it’s still on the same Wi‑Fi — that would conflict with normal local debugging).
- Checks it’s reachable over your mesh VPN.
- Makes it visible to your Mac again.
- Forwards traffic over that mesh VPN connection.
Xcode then treats it like a normal local device — build, install, debug.
Status
- Off — not running
- Pairing… — connecting
- Bridge active — live
- Error — failed; the message says why
Keeping it running
- Mac IP / Wi‑Fi / VPN changes: bridge restarts automatically.
- Quit and reopen: active bridges restore on launch.
- After an Error, use Scan port on that device if the phone just came back online.
Settings
- CLI path — set this per provider if its binary (
tailscale,netbird,zerotier-cli) isn’t on your PATH. - Device profiles — saved pairings, each remembering which mesh VPN provider they use; delete what you don’t need.
- Launch at Login — restore bridges after a restart.