Control your macOS VPN connections from Raycast and the menu bar, with favorites and a hotkey to toggle your last-used VPN.
The extension controls services exposed by macOS network tools. VPN apps that manage connections independently may require their own app or Raycast extension.
⌘R to discover added or removed services and refresh their status.Connecting and disconnecting labels mean macOS has been asked to change the connection. The status updates as macOS reports progress; authentication or provider errors can still prevent a connection.
Favorites retain their manual order regardless of connection status. They are saved by service name so changing the network service order in macOS does not move a favorite to a different VPN. Saved entries for temporarily absent services are retained. Favorites from older versions used only numeric network positions, which cannot reliably identify their original VPNs. Those records are retained without assigning them to current services; add those VPNs to favorites again after updating. Renaming a service also requires adding it to favorites again.
Filter Services hides unavailable and non-VPN entries by default. Turn it off to see other network services, including disabled VPN configurations. Unavailable services cannot be connected from the extension.
Run npm ci, then npm run build, npm test, npx tsc --noEmit, and npm run lint. The regression tests use the development-only React test renderer and mock Raycast storage and macOS commands; they do not change VPN connections. Use npm run dev for manual verification in Raycast.
Connect to or disconnect from the VPN most recently selected or used in this extension. Assign a hotkey for quick access.
View VPN connection status, connect or disconnect, organize favorites, and choose the VPN used by Toggle Last Used.
View VPN connection status and connect or disconnect from the menu bar. Status refreshes automatically every 30 seconds.
scutil call instead of one networksetup call per service, which cuts loading from around 350 ms to under 50 ms and spawns two processes instead of tennetworksetup as invalid