Release Notes
Upgrading from 0.4.3
The first sudo vortix after upgrading shows what to do, once, and lists only the steps your machine needs. In short:
- If a VPN or the kill switch was on when you upgraded, restart your computer. 0.4.3's tunnel and firewall rules can outlive it, and 0.5.0 cannot remove them; on a Mac they can keep blocking your internet. Best of all, before upgrading run
sudo vortix downandsudo vortix killswitch offwith 0.4.3. - Linux: the kill switch now needs
nftables(iptables support is gone). - Profiles that run scripts (WireGuard
PreUp/PostUp/PreDown/PostDown, OpenVPNup/down/route-upand similar) no longer connect. Move the commands to[[hooks]]insettings.toml. vortix daemonis gone. If you installed it as a service, remove the service.
Commands for each system are in Upgrading from 0.4.3 to 0.5.0.
Highlights
- Linux works end to end. On Debian and Ubuntu, AppArmor stopped
wg-quickreading Vortix's configs, so every WireGuard connect timed out; configs are now staged in/etc/wireguard/vortix/. Verified on Ubuntu, Fedora 44, Arch and CachyOS. (#292) - Several VPNs at once behave correctly. A full tunnel and a split tunnel run side by side. A second connect no longer drops the first tunnel's DNS. Switching brings the new tunnel up before stopping the old one, and a route conflict offers Switch or Cancel instead of an error. (#296, #300, #303, #307, #327)
- The kill switch fails closed and reports what the firewall is really doing. On macOS it lives in its own pf anchor and never replaces your pf rules; on Linux it uses nftables. If the rules cannot be verified it says Degraded, never Off, and tells you how to fix it. (#281, #292, #325)
- See why an OpenVPN connection failed. In the Logs panel,
fnow steps through each OpenVPN tunnel's own log, marked live or last session. (#319) - Profile files can no longer run commands as root. Script directives are refused with an explanation; automation moves to
[[hooks]], which run without root and cannot block a connect. (#264) - A third smaller: the macOS release binary is 4.1 MB, down from 6.1 MB. (#284, #305)
Fixed
- Disconnect and reconnect finish cleanly. A disconnect no longer bounces back to Connected, Disconnect All no longer times out, and a reconnect on slower Linux hosts re-applies DNS instead of failing. (#253, #298, #301, #318)
- Connecting and Disconnecting show in the header long enough to read, instead of skipping straight to the result. (#327)
- Switching always leaves one tunnel. Switching between two tunnels that carry the same networks works on Linux (it failed with "RTNETLINK answers: File exists"). When a server pushes a full-traffic route after connecting, Vortix now asks: Cancel disconnects the new tunnel, Switch stops the old one, and
vortix upwithout--yesrefuses with exit 4 and keeps the old tunnel. (#327) - Switching between two tunnels on the same server keeps the new one working, instead of leaving it Connected with no internet on macOS. (#321)
- Leftover routes and DNS from a tunnel that died while Vortix was closed are removed the next time it starts. (#318)
- The exit IP and leak display are accurate. Right after connecting it shows the VPN's address, and the false "matches the pre-VPN address" warning is gone. (#307, #321)
- Credentials. A wrong OpenVPN password is never saved, Ctrl+R shows the password while you type, Ctrl+U clears a field instead of typing a "u", and a saved-credential file Vortix refuses now says why. (#284, #321)
- IPv6 and unusual gateways. IPv6 VPN servers are pinned to the physical gateway,
redirect-gateway localworks, and IPv6 routes apply on macOS. (#318) - Another WireGuard network on the machine (Tailscale, a corporate mesh) no longer stops Vortix from starting, and the orphan warning lists only processes Vortix started. (#303, #320)
- Files stay yours under
sudo. Every file Vortix writes is private and owned by you, including logs and session journals, which now live in~/.config/vortix. (#292, #318, #321) - CLI.
up --yesreally switches tunnels, a missing VPN tool exits 5 with the install command, andstatuswithout root says it cannot see WireGuard instead of claiming Disconnected. (#321) - TUI. Profile names are readable at 80×24, a VPN Vortix did not start shows as "UNMANAGED VPN" instead of DISCONNECTED, and large imports finish instead of timing out. (#283, #321)
- Messages say what broke and what to do, and claim only what happened:
release-killswitchno longer says "Internet access restored" without checking. A second instance, or starting without a terminal, now exits with a clear sentence. (#279, #292)
Changed
- WireGuard shows Connected only after a real handshake with the peer. The timeout and staleness are
wireguard_handshake_timeout_secsandwireguard_handshake_stale_secsinconfig.toml; probe targets are[engine].wireguard_health_targetsinsettings.toml. (#264) - Vortix writes every OpenVPN route itself. Route directives it cannot apply safely, and TAP (
dev tap) profiles, are refused. (#307, #318) - TUI keys. In the sidebar
ddisconnects the selected profile andDall of them; a route conflict opens one Switch or Cancel dialog;pcycles seven color themes;ycopies through the terminal (works over SSH). (#279, #282, #300) vortix upwaits as long as the protocol needs (about 22 s for WireGuard, 37 s for OpenVPN);--timeoutstill overrides it. (#264)settings.tomlis read from the Vortix config directory, the one--config-dirselects. (#264)
Removed
vortix daemon,vortix status --no-daemonandVORTIX_DAEMON_SOCKET. The CLI and TUI run the engine themselves. (#296, #297)- The iptables kill-switch backend. Linux needs
nft; 0.4.3's iptables rules are removed when you turn the kill switch off. (#307)
Security
- Profile directives that could run commands as root are refused. (#264)
- Vortix directories are no longer group-writable, which had let a group member replace a profile. (#292)
- Bumped
rustls0.23.40 → 0.23.45 for RUSTSEC-2026-0285. (#292)
Install vortix 0.5.0
Install prebuilt binaries via shell script
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/Harry-kp/vortix/releases/download/v0.5.0/vortix-installer.sh | shInstall prebuilt binaries via Homebrew
brew install Harry-kp/tap/vortixInstall prebuilt binaries into your npm project
npm install @harry-kp/vortix@0.5.0Download vortix 0.5.0
| File | Platform | Checksum |
|---|---|---|
| vortix-aarch64-apple-darwin.tar.xz | Apple Silicon macOS | checksum |
| vortix-x86_64-apple-darwin.tar.xz | Intel macOS | checksum |
| vortix-aarch64-unknown-linux-gnu.tar.xz | ARM64 Linux | checksum |
| vortix-x86_64-unknown-linux-gnu.tar.xz | x64 Linux | checksum |
| vortix-aarch64-unknown-linux-musl.tar.xz | ARM64 MUSL Linux | checksum |
| vortix-x86_64-unknown-linux-musl.tar.xz | x64 MUSL Linux | checksum |