A cross-platform WireGuard VPN client with a modern UI, kill switch, and auto-reconnect.
![]() VPN Connected |
![]() Config Editor |
![]() Autocomplete |
![]() Diagnostics |
| Feature | Description |
|---|---|
| Multi-Tunnel | Connect multiple WireGuard tunnels simultaneously with per-tunnel state |
| Tunnel Management | Import, create, edit, export .conf files. Drag-and-drop import. |
| Config Editor | CodeMirror 6 with WireGuard syntax highlighting and autocompletion |
| System Tray | Connection status badge, 1-click connect/disconnect |
| Kill Switch | Blocks all non-VPN traffic via macOS pf (optional) |
| DNS Protection | Forces DNS queries through the VPN tunnel only (optional) |
| Health Check | Handshake age monitoring with auto-reconnect (optional) |
| Sleep/Wake Recovery | Detects system wake via NSWorkspace and handles tunnel recovery |
| Route Monitor | Re-applies endpoint bypass routes on gateway changes |
| Pin Interface | Prevents latency spikes on dual-network (WiFi + Ethernet) setups |
| Conflict Detection | Warns about route conflicts with Tailscale, other WG interfaces, etc. |
| Diagnostics | Ping test, DNS leak test, route table visualization |
| Auto-Update | Checks GitHub Releases; supports brew upgrade and direct install |
| Speed Dashboard | Real-time RX/TX graph |
| i18n | English, Korean, Japanese |
| Dark / Light / System | Follows OS appearance |
Uses wireguard-go (May 2025), 57 commits ahead of the official macOS app's engine.
brew tap korjwl1/tap
brew install --cask wireguideDownload from Releases, unzip, move to /Applications.
If macOS shows "app is damaged", run:
xattr -cr /Applications/WireGuide.app
brew install go node
go install github.com/go-task/task/v3/cmd/task@latest
go install github.com/wailsapp/wails/v3/cmd/wails3@latest
task build
./bin/wireguidegraph LR
subgraph GUI["GUI Process (unprivileged)"]
A1[Wails + Svelte]
A2[Config editor]
A3[System tray]
A4[Diagnostics]
end
subgraph Helper["Helper Process (root)"]
B1[wireguard-go + wgctrl]
B2[TUN / routing / DNS]
B3[Kill switch / firewall]
B4[Reconnect monitor]
B5[Route monitor]
end
GUI <-->|"JSON-RPC over UDS"| Helper
- Single binary —
wireguideruns as GUI or helper (--helperflag) - Privilege separation — GUI is unprivileged; helper runs as root
- IPC — JSON-RPC over Unix socket (macOS/Linux) or named pipe (Windows)
| Component | Technology |
|---|---|
| Language | Go 1.25+ |
| GUI | Wails v3 |
| Frontend | Svelte + Vite |
| WireGuard | wireguard-go + wgctrl-go |
| Editor | CodeMirror 6 |
| Firewall | macOS pf / Linux nftables / Windows netsh advfirewall |
See CONTRIBUTING.md for development setup and guidelines.
Found a bug? Open an issue.
If WireGuide is useful to you, consider sponsoring to support development.



