A Windows GUI application for managing WireGuard proxy connections via wireproxy.
- Multi-endpoint management — Load and switch between multiple WireGuard
.conffiles - Latency testing — Ping endpoints to find the fastest server
- Speed testing — Measure download speed through each endpoint
- SOCKS5 & HTTP proxy — Route traffic through configurable local ports
- Auto-reconnect — Automatically reconnect on connection drops
- System tray — Minimize to tray with status indicator (optional)
- Start with Windows — Launch automatically on system startup
- Dark theme — Modern dark UI built with Tkinter
- Windows 10/11 (uses Windows-specific APIs)
- Python 3.8+ with Tkinter (included in standard Python installer)
- wireproxy.exe (download)
# Clone the repository
git clone https://github.com/yourusername/wiregate.git
cd wiregate
# Install optional dependencies (for system tray support)
pip install -r requirements.txt
# Run the application
python wiregate.pyw# Install with all optional dependencies
pip install wiregate[all]
# Or install with just tray support
pip install wiregate[tray]Download the latest release from the Releases page.
- Add wireproxy.exe — Place
wireproxy.exein thebin/directory - Add config files — Place your WireGuard
.conffiles in theconfigs/directory - Run — Launch
wiregate.pywor the built executable
WireGuard config files should follow the standard format:
[Interface]
PrivateKey = <your-private-key>
Address = 10.0.0.2/32
DNS = 1.1.1.1
[Peer]
PublicKey = <server-public-key>
Endpoint = server.example.com:51820
AllowedIPs = 0.0.0.0/0- Select endpoint — Choose a config from the dropdown or table
- Test latency — Click "Ping All" to measure latency to all endpoints
- Connect — Click "Connect" to start the proxy
- Configure apps — Point your applications to:
- SOCKS5:
127.0.0.1:20080(default) - HTTP:
127.0.0.1:20081(if enabled)
- SOCKS5:
Build a standalone executable with PyInstaller:
# Install build dependencies
pip install -r requirements-dev.txt
# Build
build.bat
# or
pyinstaller wiregate.specSettings are stored in settings.json:
| Setting | Default | Description |
|---|---|---|
socks_port |
20080 | SOCKS5 proxy port |
http_port |
20081 | HTTP proxy port |
http_enabled |
false | Enable HTTP proxy |
auto_connect |
false | Connect on startup |
auto_reconnect |
true | Reconnect on disconnect |
minimize_to_tray |
true | Minimize to system tray |
start_with_windows |
false | Launch on Windows startup |
wiregate/
├── wiregate.pyw # Entry point
├── src/
│ ├── app.py # Main application class
│ ├── constants.py # Configuration constants
│ ├── settings.py # Settings management
│ ├── tray.py # System tray integration
│ ├── utils.py # Utilities (ping, config parsing)
│ ├── dialogs/ # Settings and editor dialogs
│ └── ui/ # UI components
├── bin/ # wireproxy.exe binary
├── configs/ # WireGuard .conf files
└── settings.json # User preferences
Contributions are welcome! Please feel free to submit a Pull Request.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.