A cross-platform desktop VPN client for OpenVPN and FortiGate SSL-VPN, built with Tauri, Rust, and React.
A unified desktop VPN manager that lets you connect to OpenVPN and FortiGate SSL-VPN servers from a single application. No more juggling between different VPN clients — import your .ovpn configurations, store credentials securely in your OS keychain, and manage all your VPN profiles in one place.
- Dual VPN Protocol Support — Connect to both OpenVPN and FortiGate SSL-VPN servers from one app
- Cross-Platform — Native desktop application for macOS, Linux, and Windows
- Secure Credential Storage — Passwords stored in your OS native keychain (macOS Keychain, GNOME Keyring / KWallet, Windows Credential Manager)
- Encrypted Vault — Optional AES-256-GCM encrypted vault as an alternative credential store
- Profile Import/Export — Import
.ovpnconfiguration files; export encrypted profile bundles for machine migration - Multi-Factor Authentication — Full MFA/OTP support for FortiGate SSL-VPN connections
- Bulk Migration — Export all profiles as an encrypted
.vpnbundleand import on a new machine - System Tray Integration — Quick connect/disconnect from the system tray without opening the full window
- Real-Time Status — Live connection status with bandwidth monitoring, elapsed time, and assigned IP
- Accessible UI — WCAG 2.1 AA compliant with full keyboard navigation and screen reader support
Screenshots will be added after the first stable release.
Download the latest release for your platform from the Releases page:
| Platform | Format |
|---|---|
| macOS | .dmg |
| Linux | .deb, .AppImage |
| Windows | .msi, .exe (NSIS) |
This application is a GUI that orchestrates existing VPN backends. You need to install them separately:
# macOS
brew install openvpn openfortivpn
# Debian/Ubuntu
sudo apt install -y openvpn openfortivpn
# Windows (OpenVPN only — FortiGate SSL-VPN is not supported on Windows)
# Download from https://openvpn.net/community-downloads/The application will detect which backends are installed and show their availability status on launch.
- Launch the application
- Import your
.ovpnconfiguration file using the Import button - Connect by clicking the Connect button next to your profile
- Enter credentials if prompted (username/password or MFA token)
- Monitor your connection status in real-time
- Disconnect when done with a single click
| Feature | macOS | Linux | Windows |
|---|---|---|---|
| OpenVPN connections | Yes | Yes | Yes |
| FortiGate SSL-VPN | Yes | Yes | No* |
| OS keychain storage | Yes | Yes | Yes |
| Encrypted vault | Yes | Yes | Yes |
| System tray | Yes | Yes | Yes |
| Profile export/import | Yes | Yes | Yes |
* FortiGate SSL-VPN is not available on Windows because the openfortivpn backend has no Windows build.
- Rust 1.77+ — install via rustup
- Node.js 20+ with npm
- Platform-specific build dependencies (see CONTRIBUTING.md)
git clone https://github.com/Wissem-Grassi/openvpn-fortigate-client.git
cd openvpn-fortigate-client
# Install frontend dependencies
npm install
# Development mode (with hot reload)
cargo tauri dev
# Production build
cargo tauri buildBuild output locations:
- macOS:
src-tauri/target/release/bundle/dmg/ - Linux:
src-tauri/target/release/bundle/deb/andappimage/ - Windows:
src-tauri/target/release/bundle/msi/andnsis/
openvpn-fortigate-client/
├── src/ # React/TypeScript frontend
│ ├── components/ # UI components
│ ├── stores/ # Zustand state management
│ ├── hooks/ # Custom React hooks
│ └── lib/ # Shared utilities
├── src-tauri/ # Rust backend (Tauri)
│ └── src/
│ ├── commands/ # Tauri IPC command handlers
│ ├── vpn/ # VPN backend orchestration
│ ├── crypto/ # AES-256-GCM encryption
│ ├── credentials/ # OS keychain integration
│ ├── config/ # Profile storage & .ovpn parsing
│ └── models/ # Shared data structures
├── src-tauri-helper/ # Privileged helper daemon
├── tests/e2e/ # Playwright end-to-end tests
└── specs/ # SpecKit feature specifications
Contributions are welcome! Please read our Contributing Guide for details on:
- Development environment setup
- Spec-driven development workflow with SpecKit
- Branch naming and commit message conventions
- Pull request process and code review expectations
This project is licensed under the GNU General Public License v3.0 — see the LICENSE file for details.
GPL-3.0 was chosen for compatibility with OpenVPN (GPL-2.0) and openfortivpn (GPL-3.0).
- OpenVPN — Open-source VPN protocol and software
- openfortivpn — Open-source FortiGate SSL-VPN client
- Tauri — Framework for building lightweight desktop applications
- React — UI component library
- Tailwind CSS — Utility-first CSS framework