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.

Tailscale

Devices auto-detected from the CLI.

Setup guide →

ZeroTier

Paste the device IP from your dashboard.

Setup guide →

Netbird

Devices auto-detected from the CLI.

Setup guide →

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:

  1. Confirms the phone is actually remote (refuses if it’s still on the same Wi‑Fi — that would conflict with normal local debugging).
  2. Checks it’s reachable over your mesh VPN.
  3. Makes it visible to your Mac again.
  4. 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.