Skip to main content
Latest Release notes

The native VPN client
for Linux

OpenVPN, WireGuard, and Tailscale in one GTK4 app — with a kill switch, DNS leak protection, and a privilege-separated daemon doing the heavy lifting.

Free and open source · MIT license · No telemetry

VPN Manager showing an active OpenVPN connection VPN Manager showing a WireGuard connection VPN Manager traffic statistics with bandwidth charts VPN Manager Tailscale view with peers and exit nodes

Kill switch that survives crashes

State persists to disk and firewall rules hold through crashes and reboots.

Traffic statistics built in

Real-time bandwidth graphs, session history, and weekly charts per profile.

Native GNOME interface

GTK4 and libadwaita, following the GNOME Human Interface Guidelines.

Three protocols, one app

OpenVPN, WireGuard, and Tailscale managed from a single place.

Designed to fail safe

Protection isn't a feature toggle — it's architecture. The GUI runs unprivileged, a hardened daemon handles the network, and every safety net is configured from the UI instead of a config file.

Kill switch

Three modes (Off, Auto, Always) with iptables and nftables backends. State persists to disk and survives crashes and reboots; LAN access control and captive-portal pause are one toggle away.

DNS leak protection

systemd-resolved strict mode with a firewall fallback. Choose Cloudflare, Google, system, or custom DNS, and block DoH/DoT on non-VPN interfaces.

IPv6 leak protection

Four modes (Auto, Allow, Block, Disable) stop IPv6 traffic from slipping around IPv4-only tunnels, with optional WebRTC STUN/TURN blocking.

Evil twin detection

Warns when a known network name appears with a different access point, before you trust a spoofed hotspot.

Privilege separation

The app never runs as root. A separate daemon (vpn-managerd) performs privileged operations over an authenticated local socket — no sudo, no password prompts during use.

Keyring credentials

Credentials live in GNOME Keyring or KWallet via the Secret Service API. The fallback is AES-256-GCM encryption with an owner-only key file — never plain text.

Comfortable by default

The security is the foundation; the everyday experience is the point.

  • Network trust rules — auto-connect on public Wi-Fi, disconnect at home or the office
  • Auto-reconnect — connection restored automatically when the network drops
  • System tray — status at a glance with quick connect and trust actions
  • Split tunneling — route specific apps or networks outside the tunnel
  • Easy profile import — drag & drop .ovpn files or paste a WireGuard config
  • Tailscale exit nodes — pick any node, with a Mullvad server filter
  • Taildrop — send files to any Tailscale device straight from the peer list
  • LAN gateway — share your Tailscale exit node with other devices on your network
  • Tailscale power options — advertise an exit node, Shields Up, and SSH without the CLI
  • One active connection — switching protocols cleanly tears down the previous tunnel

Where it stands

A fair comparison with what Linux already gives you.

Feature VPN Manager NetworkManager CLI tools
Graphical interface Yes ~Partial No
Traffic statistics Yes No No
Kill switch Yes No ~Partial, manual setup
Network trust rules Yes No No
Tailscale integration Yes No Yes
Multi-protocol Yes ~Partial Yes
GNOME native UI Yes ~Partial No

Full support ~ Partial or manual Not available

From download to connected in three steps

No account, no wizard, no config files. Under two minutes.

Install

Add the APT repository for automatic updates, or grab the .deb/.rpm package.

sudo apt install vpn-manager

Import a profile

Drag & drop your .ovpn file, paste a WireGuard config, or sign in to Tailscale. Credentials go straight to the system keyring.

Connect

One click to connect. Traffic stats work out of the box; the kill switch and DNS protection are one toggle away in Preferences.

Install VPN Manager

Pick your distribution. Commands below always point at the latest release.

apt · updates via apt upgrade
# Add the VPN Manager APT repository (one-time setup)
curl -fsSL https://yllada.github.io/vpn-manager/apt/gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/vpn-manager.gpg
echo "deb [signed-by=/usr/share/keyrings/vpn-manager.gpg] https://yllada.github.io/vpn-manager/apt stable main" | sudo tee /etc/apt/sources.list.d/vpn-manager.list

# Install
sudo apt update && sudo apt install vpn-manager

Future updates arrive with a normal apt upgrade. Ubuntu 24.04+, Debian 12+.

.deb package
# Loading install command…

Supported: Ubuntu 24.04+, Debian 12+.

.rpm package
# Loading install command…

Supported: Fedora 40+, RHEL 9+.

tarball
# Loading install command…

Requires sudo pacman -S gtk4 libadwaita.

build from source · any distro
# Requirements: Go 1.21+, GTK4 4.14+, libadwaita 1.5+

# Clone and build
git clone https://github.com/yllada/vpn-manager.git
cd vpn-manager
go build -o vpn-manager .

# Install the daemon (required)
cd build && sudo ./install-daemon.sh && cd ..

# Install system-wide (optional)
sudo cp vpn-manager /usr/local/bin/
sudo cp assets/vpn-manager.desktop /usr/share/applications/

# Run
./vpn-manager

The vpn-managerd daemon is required — packages install it automatically.

Requirements

GTK4 4.14+ and libadwaita 1.5+ (Ubuntu 24.04+, Debian 12+, Fedora 40+, Arch). OpenVPN, WireGuard, or Tailscale installed for the protocols you use. The vpn-managerd daemon ships inside the .deb/.rpm packages and is required for operation.

Questions, answered

What VPN protocols are supported?

OpenVPN — import any .ovpn configuration file via drag & drop, with credentials and OTP support.

WireGuard — import .conf files, managed through wg-quick, with interface stats read from the kernel.

Tailscale — zero-config mesh VPN with exit nodes (including a Mullvad filter), Taildrop file transfer, and advanced options like Shields Up and Tailscale SSH.

Does it work with my VPN provider?

Yes — any provider that hands you an OpenVPN (.ovpn) or WireGuard configuration file works: ProtonVPN, Mullvad, NordVPN, ExpressVPN, Surfshark, Private Internet Access, IVPN, and everyone else.

Download the config file from your provider and import it.

Which Linux distributions are supported?

Officially: Ubuntu 24.04+, Debian 12+, Fedora 40+, and Arch Linux. The real requirement is GTK4 4.14+ and libadwaita 1.5+ — any distro that ships them can build from source.

Does it need root or sudo access?

The app itself runs as a normal user. Privileged operations — network interfaces, firewall rules, the kill switch — are handled by a separate daemon (vpn-managerd) running as a systemd service.

In practice: no sudo, no password prompts during normal use, and a real privilege boundary between the UI and the network stack.

Does the kill switch work if the app crashes?

Yes. Kill switch state is saved to disk, firewall rules persist independently of the app process, and an optional systemd service keeps protection active across reboots. If you ever need out, the tray menu has a one-click disable.

Are my credentials stored securely?

Credentials go to your system keyring (GNOME Keyring or KWallet via the Secret Service API), encrypted at rest. Where no keyring exists, the fallback is AES-256-GCM with a random per-install key stored with owner-only permissions. Nothing is ever written in plain text.

Does it work on desktops other than GNOME?

Yes. It's designed for GNOME but runs on any desktop with GTK4 support — KDE Plasma, XFCE, Cinnamon, and others — and adapts to your system theme.

Is it really free? Any telemetry?

100% free and open source under the MIT license. No telemetry, no analytics, no data collection, no premium tier. The full source is on GitHub for anyone to audit.

Free. Open source.
No telemetry.

MIT-licensed and built in the open for the Linux community. Privacy is the default here, not a plan you pay for.

GitHub stars
Forks
Downloads
Releases

MIT license last commit open issues

Contributors

Loading contributors…
View all contributors