Desktop VPN client for Arch Linux and CachyOS with OpenVPN, L2TP/IPsec, and PPTP support through NetworkManager.
Python
0
5 commits
updated Sep 8, 2026
Cuniculum is a desktop VPN client for Arch Linux and CachyOS. It manages OpenVPN (.ovpn), L2TP/IPsec, and PPTP tunnels from one window, installs the packages those protocols need, and connects through NetworkManager.
Built by Amirhossein Ehsani
Most VPN providers hand you a config file or a set of credentials and expect you to wire them up with nmcli, extra packages, and sometimes an AUR helper. Cuniculum is meant to sit on an Arch-based desktop (CachyOS included) and do that work in a GUI:
.ovpn file, with optional username, password, and key secretIt is a local client. It does not sell VPN service, and it does not route traffic through a built-in server.
| Area | Behavior |
|---|---|
| OpenVPN | Copies the .ovpn file, imports it into NetworkManager, stores credentials on the connection, and brings it up. If NetworkManager cannot activate it, Cuniculum starts the openvpn binary through a small privileged helper. |
| L2TP / IPsec | Creates a NetworkManager L2TP connection. IPsec is on by default and can use a pre-shared key. |
| PPTP | Creates a NetworkManager PPTP connection. PPTP is legacy; prefer OpenVPN or L2TP when the provider allows it. |
| Packages | Checks networkmanager, openvpn, networkmanager-openvpn, xl2tpd, strongswan, networkmanager-l2tp, pptpclient, networkmanager-pptp, polkit, and git. Official repos first, AUR second. |
| Privileges | Package install and the OpenVPN helper use polkit. A session rule is installed so NetworkManager connect/disconnect should not ask for a password on every click. |
| Profiles | Stored in ~/.config/cuniculum/profiles.json (mode 600). Imported .ovpn files live in ~/.config/cuniculum/ovpn/. |
Once a tunnel has credentials or an .ovpn file, its protocol is locked. Add a new tunnel to use a different protocol.
On CachyOS or Arch:
chmod +x install.sh run.sh
./install.sh
cuniculum
install.sh installs python, python-pyqt6, qt6-svg, networkmanager, and polkit if they are missing, copies Cuniculum to /usr/share/cuniculum, and installs the launcher, icons, desktop entry, and polkit policy.
From the source tree without a system install:
sudo pacman -S --needed python python-pyqt6 qt6-svg networkmanager polkit
./run.sh
As an Arch package:
makepkg -si
After the first launch, use Install missing if VPN packages are not present. Confirm the polkit prompt for that install.
.ovpn file. Fill in username, password, and secret only if the profile needs them.Cuniculum is released under the MIT License. See LICENSE.
5 commits
Python
91.5%
Shell
8.5%
Desktop VPN client for Arch Linux and CachyOS with OpenVPN, L2TP/IPsec, and PPTP support through NetworkManager.
Python
0
5 commits
updated Sep 8, 2026
Cuniculum is a desktop VPN client for Arch Linux and CachyOS. It manages OpenVPN (.ovpn), L2TP/IPsec, and PPTP tunnels from one window, installs the packages those protocols need, and connects through NetworkManager.
Built by Amirhossein Ehsani
Most VPN providers hand you a config file or a set of credentials and expect you to wire them up with nmcli, extra packages, and sometimes an AUR helper. Cuniculum is meant to sit on an Arch-based desktop (CachyOS included) and do that work in a GUI:
.ovpn file, with optional username, password, and key secretIt is a local client. It does not sell VPN service, and it does not route traffic through a built-in server.
| Area | Behavior |
|---|---|
| OpenVPN | Copies the .ovpn file, imports it into NetworkManager, stores credentials on the connection, and brings it up. If NetworkManager cannot activate it, Cuniculum starts the openvpn binary through a small privileged helper. |
| L2TP / IPsec | Creates a NetworkManager L2TP connection. IPsec is on by default and can use a pre-shared key. |
| PPTP | Creates a NetworkManager PPTP connection. PPTP is legacy; prefer OpenVPN or L2TP when the provider allows it. |
| Packages | Checks networkmanager, openvpn, networkmanager-openvpn, xl2tpd, strongswan, networkmanager-l2tp, pptpclient, networkmanager-pptp, polkit, and git. Official repos first, AUR second. |
| Privileges | Package install and the OpenVPN helper use polkit. A session rule is installed so NetworkManager connect/disconnect should not ask for a password on every click. |
| Profiles | Stored in ~/.config/cuniculum/profiles.json (mode 600). Imported .ovpn files live in ~/.config/cuniculum/ovpn/. |
Once a tunnel has credentials or an .ovpn file, its protocol is locked. Add a new tunnel to use a different protocol.
On CachyOS or Arch:
chmod +x install.sh run.sh
./install.sh
cuniculum
install.sh installs python, python-pyqt6, qt6-svg, networkmanager, and polkit if they are missing, copies Cuniculum to /usr/share/cuniculum, and installs the launcher, icons, desktop entry, and polkit policy.
From the source tree without a system install:
sudo pacman -S --needed python python-pyqt6 qt6-svg networkmanager polkit
./run.sh
As an Arch package:
makepkg -si
After the first launch, use Install missing if VPN packages are not present. Confirm the polkit prompt for that install.
.ovpn file. Fill in username, password, and secret only if the profile needs them.Cuniculum is released under the MIT License. See LICENSE.
5 commits
Python
91.5%
Shell
8.5%