Amir-Ehsani/cuniculum

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

See the code

See what people are saying (1)

SourceMessageScoreDate

I built a small VPN manager for Arch because I was tired of doing everything manually (r/SideProject)

I started Cuniculum as a small side project because I wanted an easier way to manage VPN connections on Arch without messing with config files and terminal commands every time. It’s a simple open-source GUI for OpenVPN, L2TP/IPsec and PPTP using NetworkManager. You can import and save profiles,…

1

Sep 21, 2026

README

Cuniculum

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

Purpose

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:

  • Import an OpenVPN profile from an .ovpn file, with optional username, password, and key secret
  • Create L2TP/IPsec or PPTP tunnels from server, username, password, and pre-shared key
  • Detect missing VPN packages, install them from official repositories, and build from the AUR when a package is not in the repos
  • Ask before resolving pacman conflicts or overwriting files
  • Keep named tunnel profiles on disk and connect or disconnect without editing NetworkManager by hand

It is a local client. It does not sell VPN service, and it does not route traffic through a built-in server.

Details

AreaBehavior
OpenVPNCopies 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 / IPsecCreates a NetworkManager L2TP connection. IPsec is on by default and can use a pre-shared key.
PPTPCreates a NetworkManager PPTP connection. PPTP is legacy; prefer OpenVPN or L2TP when the provider allows it.
PackagesChecks networkmanager, openvpn, networkmanager-openvpn, xl2tpd, strongswan, networkmanager-l2tp, pptpclient, networkmanager-pptp, polkit, and git. Official repos first, AUR second.
PrivilegesPackage 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.
ProfilesStored 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.

Install

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.

Usage

  1. Create a tunnel in the sidebar.
  2. Choose OpenVPN, L2TP / IPsec, or PPTP before entering data.
  3. For OpenVPN, drop or browse an .ovpn file. Fill in username, password, and secret only if the profile needs them.
  4. For L2TP or PPTP, enter the gateway, username, and password. L2TP can take an IPsec pre-shared key.
  5. Save, then Connect.

License

Cuniculum is released under the MIT License. See LICENSE.

Contributors

Amir-Ehsani

5 commits

Amir-Ehsani/cuniculum

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

See the code

See what people are saying (1)

SourceMessageScoreDate

I built a small VPN manager for Arch because I was tired of doing everything manually (r/SideProject)

I started Cuniculum as a small side project because I wanted an easier way to manage VPN connections on Arch without messing with config files and terminal commands every time. It’s a simple open-source GUI for OpenVPN, L2TP/IPsec and PPTP using NetworkManager. You can import and save profiles,…

1

Sep 21, 2026

README

Cuniculum

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

Purpose

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:

  • Import an OpenVPN profile from an .ovpn file, with optional username, password, and key secret
  • Create L2TP/IPsec or PPTP tunnels from server, username, password, and pre-shared key
  • Detect missing VPN packages, install them from official repositories, and build from the AUR when a package is not in the repos
  • Ask before resolving pacman conflicts or overwriting files
  • Keep named tunnel profiles on disk and connect or disconnect without editing NetworkManager by hand

It is a local client. It does not sell VPN service, and it does not route traffic through a built-in server.

Details

AreaBehavior
OpenVPNCopies 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 / IPsecCreates a NetworkManager L2TP connection. IPsec is on by default and can use a pre-shared key.
PPTPCreates a NetworkManager PPTP connection. PPTP is legacy; prefer OpenVPN or L2TP when the provider allows it.
PackagesChecks networkmanager, openvpn, networkmanager-openvpn, xl2tpd, strongswan, networkmanager-l2tp, pptpclient, networkmanager-pptp, polkit, and git. Official repos first, AUR second.
PrivilegesPackage 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.
ProfilesStored 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.

Install

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.

Usage

  1. Create a tunnel in the sidebar.
  2. Choose OpenVPN, L2TP / IPsec, or PPTP before entering data.
  3. For OpenVPN, drop or browse an .ovpn file. Fill in username, password, and secret only if the profile needs them.
  4. For L2TP or PPTP, enter the gateway, username, and password. L2TP can take an IPsec pre-shared key.
  5. Save, then Connect.

License

Cuniculum is released under the MIT License. See LICENSE.

Contributors

Amir-Ehsani

5 commits

Languages

Python

91.5%

Shell

8.5%