ivpn
desktop-app
Go

Official IVPN Desktop app

Last updated Jul 6, 2026
494
Stars
59
Forks
67
Issues
+2
Stars/day
Attention Score
89
Language breakdown
No language data available.
โ–ธ Files click to expand
README

IVPN for Desktop (Windows/macOS/Linux)

CodeQL Security Scan (gosec) CI ivpn

IVPN for Desktop is the official IVPN app for desktop platforms. Some of the features include: multiple protocols (OpenVPN, WireGuard), Kill-switch, Multi-Hop, Trusted Networks, AntiTracker, Custom DNS, Dark mode, and more. IVPN Client app is distributed on the official site www.ivpn.net.

IVPN application image IVPN application image

* Requirements * Windows * macOS * Linux * Compilation * Windows * macOS * Linux

About this Repo

This is the official Git repo of the IVPN for Desktop app.

The project is divided into three parts:

  • daemon: Core module of the IVPN software built mostly using the Go language. It runs with privileged rights as a system service/daemon.
  • UI: Graphical User Interface built using Electron.
  • CLI: Command Line Interface.

Installation

These instructions enable you to get the project up and running on your local machine for development and testing purposes.

Requirements

Windows

Go 1.26+; Git; npm; Node.js (22.12.0); nsis3; Visual Studio 2022 with 'Windows 10 SDK 10.0.19041.0', 'Windows 11 SDK 10.0.22000.0', 'MSVC v143 C++ x64 build tools', 'C++ ATL for latest v143 build tools'; gcc compiler (e.g. MSYS2 MinGW-w64 UCRT).

Additional requirements for ARM64 builds: Visual Studio 2022 individual components (VS Installer > Modify > Individual components):

  • 'MSVC v143 - VS 2022 C++ ARM64 build tools (Latest)'
  • 'C++ ATL for latest v143 build tools (ARM64/ARM64EC)' - required for native DLL (IVPN Helpers Native) ARM64 build
llvm-mingw x8664-hosted cross-compiler (llvm-mingw-YYYYMMDD-ucrt-x8664.zip) - required for CGO cross-compilation of the daemon (wifiNotifier) targeting ARM64; set the LLVMMINGW environment variable to its root folder.

macOS

Go 1.26+; Git; npm; Node.js (22.12.0); Xcode Command Line Tools. To compile the OpenVPN/OpenSSL binaries locally, additional packages are required:

brew install autoconf automake libtool
To compile liboqs, additional packages are required:

brew install cmake ninja openssl@1.1 wget doxygen graphviz astyle valgrind
pip3 install pytest pytest-xdist pyyaml

Linux

Go 1.26+; Git; npm; Node.js (22.12.0); gcc; make; FPM; curl; rpm; libiw-dev.

To compile liboqs, additional packages are required: sudo apt install astyle cmake gcc ninja-build libssl-dev python3-pytest python3-pytest-xdist unzip xsltproc doxygen graphviz python3-yaml valgrind

Additional requirements for ARM64 cross-compilation (on x86_64 host):

sudo apt-get install gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu sudo dpkg --add-architecture arm64 && sudo apt-get update sudo apt-get install libssl-dev:arm64 liblz4-dev:arm64 liblzo2-dev:arm64 libpam0g-dev:arm64

Compilation

Windows

Instructions to build installer of IVPN Client (daemon + CLI + UI): Use Developer PowerShell for VS 2022 (required for building native sub-projects).

git clone https://github.com/ivpn/desktop-app.git
cd desktop-app/ui/References/Windows

Compile all binaries (no signing, no installer)

.\build.bat

Build unsigned installer

.\package-release.ps1

Compiled installer can be found at: ui/References/Windows/bin

macOS

Instructions to build DMG package of IVPN Client (daemon + CLI + UI):

git clone https://github.com/ivpn/desktop-app.git
cd desktop-app/ui/References/macOS

Build for Apple Silicon (arm64):

ARCHTARGET=arm64 ./build.sh -c <APPLEDevID_CERTIFICATE>

Build for Intel (x86_64):

ARCHTARGET=x8664 ./build.sh -c <APPLEDevIDCERTIFICATE>

Compiled DMG files can be found at: ui/References/macOS/_compiled/

  • IVPN-X.X.X-arm64.dmg โ€” Apple Silicon (M1/M2/M3)
  • IVPN-X.X.X.dmg โ€” Intel (x86_64)
(some info about Apple Developer ID)

Linux

# get sources
git clone https://github.com/ivpn/desktop-app.git
cd desktop-app

Base package (daemon + CLI):

# native build (host architecture)
./cli/References/Linux/build.sh

ARM64 cross-compile (on x86_64 host)

ARCH_TARGET=arm64 ./cli/References/Linux/build.sh

Compiled DEB/RPM packages can be found at cli/References/Linux/outbin/<arch>/ Note: You can refer to manual installation guide for Linux.

Graphical User Interface (UI):

# native build
./ui/References/Linux/build.sh

ARM64 cross-compile

ARCH_TARGET=arm64 ./ui/References/Linux/build.sh

Compiled DEB/RPM packages can be found at ui/References/Linux/outbin/<arch>/ Note: It is required to have installed IVPN Daemon before running IVPN UI.

Versioning

Project is using Semantic Versioning (SemVer) for creating release versions.

SemVer is a 3-component system in the format of x.y.z where:

x stands for a major version y stands for a minor version z stands for a patch

So we have: Major.Minor.Patch

Contributing

If you are interested in contributing to IVPN for Desktop project, please read our Contributing Guidelines.

Security Policy

If you want to report a security problem, please read our Security Policy.

License

This project is licensed under the GPLv3 - see the License file for details.

Authors

See the Authors file for the list of contributors who participated in this project.

Acknowledgements

See the Acknowledgements file for the list of third party libraries used in this project.

๐Ÿ”— More in this category

ยฉ 2026 GitRepoTrend ยท ivpn/desktop-app ยท Updated daily from GitHub