Hi, I'm Kanishk and I built VPNonly.
I wanted CapCut on a Singapore IP while everything else stayed home. No VPN on Mac does that, so I built it.
Works with NordVPN · Mullvad · Proton · IVPN · AirVPN · your own WireGuard server
NordVPN, like basically every big VPN, has no split tunneling on Mac. It's all or nothing: connect, and your entire machine moves to another country. VPNonly inverts that.
Every app on your Mac shows up in a menu bar list. Flip a switch and that app moves onto the VPN with a new exit IP. Flip it back and it's home again. Everything else stays on your normal connection: your browser, your calls, your bank.
The first time an app joins, it gets relaunched once, because macOS decides an app's network identity when it starts. After that, switching is instant and the app keeps running.
It opens a WireGuard tunnel that nothing uses by default. Your default route is never touched. Then it uses PF, the firewall already built into macOS, to send just the apps you picked through that tunnel.
PF can't match traffic by application, but it can match by unix group. So each app gets its own private group, and two rules do the work:
block return out … from any to any group vpn_a1b2c3
pass out quick route-to (utun9 …) … group vpn_a1b2c3
The second sends that app into the tunnel. The first is the kill switch: when the tunnel is down, the pass rule isn't there, so that traffic is refused instead of quietly leaking to your ISP. Longer version here.
The split-tunneling engine is about 300 lines of shell and C, MIT licensed, on GitHub. It runs as root on your machine, so you should be able to read every line of it. That's not generosity, it's the minimum.
The $19 is for the Mac app on top: the menu bar list, one-click setup, the country picker, updates. If you'd rather use the terminal, do that. It's free and always will be.
No, keep it closed. VPNonly talks to your provider's servers directly.
NordVPN needs nothing but an access token — the app fetches your key and picks servers itself. For Mullvad, Proton, IVPN, AirVPN or your own server, download their WireGuard config and drop it in; import as many as you like and switch between them from the menu.
Firewall rules need admin rights. It asks once, installs a root-owned engine you can read on GitHub, and never asks again.
They put your whole Mac on the VPN and exclude apps; here your Mac never joins at all. They're ~$49/year, this is $19 once. Their approach does avoid the one-time relaunch, which is fair, and it's on my list. More questions →