Skip to content

korjwl1/wireguide

Repository files navigation

WireGuide

WireGuide

A cross-platform WireGuard VPN client with a modern UI, kill switch, and auto-reconnect.

Release Stars Homebrew Platform License

한국어



VPN Connected

Config Editor

Autocomplete

Diagnostics

Features

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.


Install

macOS (Homebrew) — recommended

brew tap korjwl1/tap
brew install --cask wireguide

macOS (Manual)

Download from Releases, unzip, move to /Applications.

If macOS shows "app is damaged", run: xattr -cr /Applications/WireGuide.app

Build from Source

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/wireguide

Architecture

graph 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
Loading
  • Single binarywireguide runs as GUI or helper (--helper flag)
  • Privilege separation — GUI is unprivileged; helper runs as root
  • IPC — JSON-RPC over Unix socket (macOS/Linux) or named pipe (Windows)

Tech Stack

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

Contributing

See CONTRIBUTING.md for development setup and guidelines.

Found a bug? Open an issue.


Sponsor

Sponsor

If WireGuide is useful to you, consider sponsoring to support development.


License

MIT

About

Cross-platform WireGuard VPN desktop client — Go + Wails v3 + Svelte

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors