What you need
- Multimeter for macOS 13 or later, $19.99 once.
- The direct download version of Multimeter from this site (the Script source isn’t in the Mac App Store version).
- A VPN that appears in System Settings, VPN. Built-in IKEv2 and L2TP setups do, and so do VPN apps that use the macOS VPN system.
Set it up
- See what macOS knows about in Terminal:
scutil --nc list. Your VPN should be listed with “(Connected)” or “(Disconnected)”. - Add a Script meter with this command, refreshing every 10 seconds:Command
n=$(scutil --nc list | grep -c '(Connected)'); [ $n -gt 0 ] && echo '{"value": 1, "formatted": "VPN on"}' || echo '{"value": 0, "formatted": "VPN off"}' - Set the range to 0 to 1 and alerts to Low values with critical at 0. Turn on the notification if a dropped VPN matters to you.
Multimeter settings
In Customize This Meter… (from the meter’s menu):
| Setting | Value |
|---|---|
| Source | Script |
| Command | the scutil line above |
| Refresh every | 10 seconds |
| Range | 0 to 1 |
| Alerts | Low values: critical 0, notify on critical |
| Label | VPN |
| Face | Traffic Light, Mood or Label & Value |
Tested: Run on October 29, 2026 with an app-based VPN configured but disconnected: printed {"value": 0, "formatted": "VPN off"} in 0.3 seconds.
Script meters need the direct download version of Multimeter from this site, which is the one on sale now. How commands run, the PATH they see and the 10 second limit are in the Script meters guide.
Limits
- VPNs that only create their own network interface and never register with macOS won’t show up in
scutil --nc list. Check that yours is listed first.
Variations
Only one VPN by name
Filter by its name first: scutil --nc list | grep "Work VPN" | grep -c "(Connected)".
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
| The script didn’t print a number | The command failed or printed an error message instead. | Run the exact command in Terminal. If it works there, check for tools that live outside the meter’s PATH and use their full path (which tool). |
| The script took longer than 10 seconds | A slow network call. Multimeter stops scripts after 10 seconds. | Keep the -m timeout on curl, and refresh less often. |
| Scripts need the version from multimeterapp.com | This copy of Multimeter came from the Mac App Store, which can’t run scripts. | Use the direct download version, or run the command from cron or launchd and point a File meter at its output. |
| Always says off | Your VPN isn’t in the list macOS keeps. | Run scutil --nc list while connected. If it isn’t there, this method can’t see it. |
Questions
Does this work in the Mac App Store version?
Script meters need the direct download version from multimeterapp.com, because the App Store sandbox doesn’t let apps run your commands. Web Address, File and Sent Value meters work in every version.