Cross-platform split tunneling companion for Kerio Control VPN.
Kerio’s official client often installs full-tunnel routes (0.0.0.0/1 + 128.0.0.0/1). Kerio Split waits for a real tunnel, then replaces that with only the routes you configure — so LAN and the rest of the internet stay local.
| What it is | Route companion after the official VPN client is up |
| What it is not | A Kerio protocol client (why) |
| Platforms | macOS · Linux · Windows |
| License | MIT |
| Platform | Deliverable | Maturity | Notes |
|---|---|---|---|
| macOS | Native SwiftUI app + menu bar | Stable | Connect All / Disconnect All via official Kerio client; passwordless route helper |
| Linux | Portable CLI (ip route) |
Early preview | Works against real ip; needs more testing with live Kerio (kerio-kvc) |
| Windows | Portable CLI package | Early preview | Shared CLI + dry-run today; WinAPI route engine still stubbed |
Same config shape on every OS: config/config.example.json.
macOS also offers Outbound (built-in sing-box or external V2Box/Clash), Kerio pin/ignore, and route guard so a second VPN does not steal corporate CIDRs.
We need your help on Linux & Windows. Those builds are not battle-tested enough yet. If you try a release archive, please open a feedback issue — OS version, what you ran, and what worked or broke.
Get the latest build from Releases.
| File | Use on |
|---|---|
KerioSplit.pkg / KerioSplit.dmg |
macOS (Apple Silicon) |
KerioSplit-Uninstall.pkg |
macOS removal |
keriosplit-*-linux.tar.gz |
Linux |
keriosplit-*-windows.zip |
Windows |
Native app for macOS 13+ (arm64).
- Install the
.pkg(unsigned builds: right-click → Open) - Launch Kerio Split → Install route helper (one admin password)
- Connect All — starts Kerio, waits for the tunnel, applies split
- Manage routes under VPN Routes / Bypass / Settings
Runtime config:
~/Library/Application Support/KerioSplit/Config/config.json
Build from source:
make release-macos
open dist/KerioSplit.pkgDetails: platforms/macos
CLI that applies/restores split routes with iproute2 after Kerio (or another tunnel) is up.
Preview status: CI runs unit dry-run + a Docker ip route smoke test. Real Kerio on bare metal/VM still needs community validation.
# from a release archive
tar -xzf keriosplit-*-linux.tar.gz && cd keriosplit-*-linux
./bin/keriosplit ping
sudo ./bin/keriosplit apply -v
sudo ./bin/keriosplit restore
./bin/keriosplit statusFrom this repo:
make release-linux
make test-linux-docker # fake tunnel smoke, no Kerio binaryRequirements: Python 3.9+, ip (iproute2), root for apply/restore.
Docs: platforms/linux/README.md · testing notes: docs/ports.md
CLI package aimed at the same workflow as Linux. The route engine is still a stub; shared config parsing and --platform dry-run work today.
Preview status: not enough real Windows + Kerio testing yet — please report anything you try.
REM from a release zip
set PYTHONPATH=%CD%\lib
python -m keriosplit ping --platform dry-runFrom this repo:
make release-windowsDocs: platforms/windows/README.md
All platforms share one Python core for config + engine contract + dry-run:
core/keriosplit/ config, CLI, dry-run engine
platforms/macos/ SwiftUI app + helper packaging
platforms/linux/ iproute2 adapter + Docker smoke
platforms/windows/ Windows adapter (stub → WinAPI)
config/ example config.json
make test-core
PYTHONPATH=core:platforms/linux:platforms/windows \
python3 -m keriosplit status --platform dry-runArchitecture: docs/architecture.md
Official Kerio client (or IPsec / OpenVPN)
↓ tunnel is up
Kerio Split engine
↓ remove full-tunnel hijack (optional)
↓ add VPN + bypass CIDRs from config
Done — only your networks go through the VPN
- Branches:
main(stable / releases),develop(integration) - macOS packaging and Linux/Windows CLI: see CONTRIBUTING.md
- Port feedback template: Issues
- Security: SECURITY.md
make help
make release-all # macOS pkg/DMG + Linux tar.gz + Windows zipMIT © Ehsan Akbari
Kerio® is a trademark of its owners. This project is not affiliated with GFI / Kerio.
