Supported Operating Systems
Windows
- Windows 10
- Windows 11
macOS
- The three latest major releases
Linux
Linux testing is performed using the Gnome desktop environment. Other desktop environments should work but are not regularly tested.
Architecture
The desktop application consists of three main components:System Service (mullvad-daemon)
The core VPN service that runs with system privileges:- Location: Runs as a system service/daemon
- Privileges: Requires administrator/root access
- Always Running: Operates continuously in the background, even when GUI is closed
- Management Interface: Exposes control via Unix domain sockets (Linux/macOS) or named pipes (Windows)
- Responsibilities:
- Tunnel management
- Firewall rule configuration
- DNS settings management
- Kill switch enforcement
- API communication
Graphical User Interface (GUI)
An Electron-based desktop application:- Technology: Built with Electron + React
- Security: Only loads local resources, never remote content
- Communication: Connects exclusively to
mullvad-daemonvia management interface - Per-User Settings: Stores GUI preferences separately for each user
- Location:
- Linux:
$XDG_CONFIG_HOME/Mullvad VPN/gui_settings.json - macOS:
~/Library/Application Support/Mullvad VPN/gui_settings.json - Windows:
%LOCALAPPDATA%\Mullvad VPN\gui_settings.json
- Linux:
Command-Line Interface (CLI)
A Rust-based terminal interface:- Binary Name:
mullvad - Full Control: Access to all daemon functionality
- Automation: Ideal for scripts and automation
- See: CLI documentation for complete reference
Installation
Windows
- Download the installer from mullvad.net/download
- Run the
.exeinstaller - The installer will:
- Install the system service
- Configure Windows Firewall Integration (WFP)
- Create Start Menu shortcuts
- Set up auto-start (optional)
macOS
- Download the
.pkginstaller from mullvad.net/download - Open and run the installer package
- The installer will:
- Install the system service as a LaunchDaemon
- Configure Packet Filter (PF) integration
- Install the application to
/Applications
Linux
Debian/Ubuntu
Fedora
Arch Linux
Available in the AUR:- Systemd service:
mullvad-daemon.service - nftables firewall integration
- Desktop entry for application menu
Features
Firewall Integration
Desktop platforms have direct firewall access for maximum security:- Windows: Windows Filtering Platform (WFP)
- macOS: Packet Filter (PF)
- Linux: nftables
Kill Switch
Always-on kill switch prevents leaks:- Automatic: Enabled by default, cannot be disabled
- Blocks All Traffic: When connecting, disconnecting, or in error state
- No Leak Windows: Atomic firewall transactions prevent gaps
- See: Security documentation for details
Lockdown Mode
Blocks all network access when disconnected:- Purpose: Ensures device can only communicate via VPN
- Setting: Enable in app settings
- Effect: Applies firewall rules even in disconnected state
Split Tunneling
Allow specific applications to bypass the VPN:- Platform Support: Windows, macOS, and Linux
- Use Cases:
- Local network services
- Applications requiring direct internet access
- Performance-sensitive applications
- Configuration: Available in app settings or via CLI
Custom DNS
Configure custom DNS servers:- Default: Uses VPN server’s DNS
- Custom Options:
- Custom DNS servers (through tunnel)
- DNS content blocking (ads, trackers, malware)
- Leak Protection: DNS queries always go through tunnel
Local Network Sharing
Allow access to local network devices:- When Enabled: Traffic to private IP ranges is allowed
- Use Cases:
- Printers
- File shares
- IoT devices
- IP Ranges:
10.0.0.0/8,172.16.0.0/12,192.168.0.0/16, link-local addresses
WireGuard Features
All desktop platforms support advanced WireGuard features:- Multihop: Route through two VPN servers
- Quantum-Resistant: Post-quantum cryptography support
- Transport Options: TCP, Shadowsocks, QUIC obfuscation
- DAITA: Defense Against AI-Guided Traffic Analysis
- LWO: Lightweight WireGuard Obfuscation
System Service Management
Windows
Manage via Services or command line:macOS
Manage via launchctl:Linux
Manage via systemd:File Locations
Settings
Logs
Cache
Tray Icon (Linux)
The tray icon may require additional setup on some Linux desktop environments:GNOME
Install the AppIndicator extension:- Visit GNOME Extensions
- Install “AppIndicator and KStatusNotifierItem Support”
Other Desktop Environments
Install one of these packages:libappindicator3-1libappindicator1libappindicator
Environment Variables
The daemon supports several environment variables for advanced configuration:Common Variables
TALPID_FORCE_USERSPACE_WIREGUARD: Force userspace WireGuard implementationTALPID_DISABLE_OFFLINE_MONITOR: Always assume host is onlineMULLVAD_MANAGEMENT_SOCKET_GROUP: (Linux/macOS) Restrict management interface access to specific group
Setting Environment Variables
Windows
Linux
macOS
Troubleshooting
Connection Issues
- Check daemon status using system service commands
- Review logs in the log directory for your platform
- Try connecting via CLI:
mullvad connect - Check firewall rules aren’t conflicting
Firewall Issues
If experiencing network issues:- Windows: Ensure WFP isn’t blocked by other security software
- macOS: Check PF isn’t disabled or conflicting with other rules
- Linux: Verify nftables is installed and no conflicting iptables rules exist
GUI Not Connecting
If GUI cannot connect to daemon:- Ensure daemon service is running
- Check management interface socket/pipe permissions
- Verify no other security software is blocking communication
Next Steps
CLI Reference
Learn to use the command-line interface
Security Architecture
Understand the security model
Troubleshooting
Common issues and solutions
Settings
Configure advanced settings