Trusty is a cross-platform GUI client for TrustTunnel VPN.
Platforms: Windows 10/11, macOS 11+ (alpha)
Status: Community-developed GUI wrapper for TrustTunnel CLI
- Material Design 3 interface with light/dark theme
- One-click VPN connection
- Server deployment to VPS — automatic setup via SSH
- Split tunneling (General/Selective modes)
- Domain groups with automatic discovery of related resources
- Real-time VPN log monitoring
- System tray integration (Windows, macOS)
- HTTP/2 and HTTP/3 protocols
- IPv6, custom DNS (DoH/DoT/DoQ)
- Random password generation for VPN accounts
- Download
Trusty-Windows-vX.X.X.zipfrom Releases - Extract to your preferred location
- Run
Trusty.exe - Configure server in "Settings" or deploy your own via "Server"
- Click "Connect"
The archive includes everything: GUI, CLI client (trusttunnel_client.exe), Wintun driver.
- Download
Trusty-macOS-vX.X.X.zipfrom Releases - Extract and move
.appto/Applications - Place
client/folder next to.app - First launch: Right-click → Open (Gatekeeper bypass)
- Configure server in "Settings"
- Click "Connect" — on first connect only, a macOS password dialog appears to grant VPN tunnel access (one-time setup, no terminal required)
macOS version is in alpha — no code signing.
git clone https://github.com/Meddelin/trusty.git
cd trusty
flutter pub get
flutter build windows --release # Windows
flutter build macos --release # macOSSee BUILDING.md for details.
Trusty can automatically deploy a TrustTunnel server on a VPS:
- Open the Server tab
- Enter SSH credentials for your VPS (IP, username, password or key)
- Specify a domain (must point to VPS via A record)
- Set VPN username/password
- Click Install Server
Trusty will automatically: connect via SSH → install TrustTunnel → upload configs → obtain TLS certificate via Let's Encrypt → start systemd service.
After installation, click "Apply Client Settings" to auto-fill connection settings.
See CONFIGURATION.md for details.
Settings tab:
| Parameter | Description | Example |
|---|---|---|
| Hostname | Server domain | vpn.example.com |
| IP Address | Server IP | 203.0.113.10 |
| Port | Port | 443 |
| Username | VPN login | user1 |
| Password | VPN password | *** |
| DNS | DNS server | 8.8.8.8, tls://1.1.1.1 |
| Protocol | HTTP/2 or HTTP/3 | http2 |
See CONFIGURATION.md for details.
Two modes:
- General — all traffic through VPN, except exclusions
- Selective — only specified traffic through VPN
Supports: domains, IPs, CIDR, applications (.exe on Windows, .app on macOS).
Domain groups with auto-discovery: when adding a domain, Trusty finds related resources (CDN, API) and offers to group them.
trusty/
├── lib/
│ ├── main.dart # Entry point, window, tray, navigation
│ ├── models/ # Data models
│ │ ├── server_config.dart # VPN client config + TOML
│ │ ├── server_setup_config.dart # Server deployment config
│ │ ├── setup_step.dart # Server setup steps
│ │ ├── domain_group.dart # Domain groups
│ │ └── vpn_status.dart # VPN statuses
│ ├── services/ # Business logic
│ │ ├── vpn_service.dart # VPN process management
│ │ ├── config_service.dart # Configuration and files
│ │ ├── server_setup_service.dart # SSH server deployment
│ │ └── domain_discovery_service.dart # Domain discovery
│ └── screens/ # UI screens
│ ├── home_screen.dart # Home (connection)
│ ├── settings_screen.dart # Server settings
│ ├── split_tunnel_screen.dart # Split tunneling
│ ├── server_setup_screen.dart # Server deployment
│ └── logs_screen.dart # Log viewer
├── assets/
│ ├── icon.png # App icon (1024x1024)
│ ├── tray_icon.ico # Tray icon (Windows)
│ └── tray_icon.png # Tray icon (macOS)
├── windows/ # Windows platform
├── macos/ # macOS platform
├── .github/workflows/
│ ├── release.yml # CI/CD Windows
│ └── release-macos.yml # CI/CD macOS (alpha)
└── client/ # CLI binaries (runtime)
| Windows | macOS (alpha) | |
|---|---|---|
| CLI | trusttunnel_client.exe |
trusttunnel_client |
| TUN driver | Wintun (wintun.dll) |
Built-in utun |
| Tray icon | .ico |
.png |
| App discovery | Program Files, AppData | /Applications |
| Code signing | Not required | None (Right-click → Open) |
- Make sure the CLI binary is in
client/next to the application - Windows:
client/trusttunnel_client.exe - macOS:
client/trusttunnel_client
- Close other VPN clients (AmneziaVPN, WireGuard, etc.)
- Wintun driver can only be used by one application at a time
- Wait 5 seconds after disconnecting before reconnecting
- Right-click on
.app→ Open → Open - Or: System Settings → Privacy & Security → Allow
- On the first VPN connection, a macOS password dialog appears — this is expected
- Trusty sets the
setuidbit on the CLI binary (one-time) so it can open the TUN device - After confirming, subsequent connections work without any dialogs
- If the dialog was cancelled: just click Connect again
If you see Failed to bind socket for UDP traffic (10055) in logs, Windows has run out of socket buffer space. Fix with PowerShell (run as Administrator):
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' -Name MaxUserPort -Value 65534 -Type DWord
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters' -Name TcpTimedWaitDelay -Value 30 -Type DWord
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\AFD\Parameters' -Name DefaultSendWindow -Value 65536 -Type DWord -Force
Set-ItemProperty -Path 'HKLM:\SYSTEM\CurrentControlSet\Services\AFD\Parameters' -Name DefaultReceiveWindow -Value 65536 -Type DWord -ForceThen restart Windows.
- Check server hostname, IP and port
- Check username and password
- Try switching protocol (HTTP/2 ↔ HTTP/3)
- Review logs in the "Logs" tab
Apache License 2.0 — see LICENSE.
Included components:
- TrustTunnel Client CLI — Apache 2.0
- See NOTICE for full license information
- TrustTunnel Protocol — core protocol and server
- TrustTunnel Client — CLI client
- Issues — report a problem
Made with Flutter