AWG Split Tunnel is a VPN client for Windows and macOS that routes application traffic through different VPN tunnels based on per-process rules. Unlike traditional VPN clients that capture all system traffic, AWG Split Tunnel lets you choose exactly which apps go through which tunnel — and which stay on your direct connection.
Run multiple tunnels simultaneously, set fallback policies, prioritize latency-sensitive traffic, and route by domain — all from a single lightweight GUI.
| Connections | Rules |
|---|---|
![]() |
![]() |
| Domain Routing | About |
|---|---|
![]() |
![]() |
| Protocol | Status | Description |
|---|---|---|
| AmneziaWG | Active | WireGuard with traffic obfuscation (DPI bypass) |
| WireGuard | Active | Standard WireGuard tunnels |
| VLESS | Active | XTLS-Reality proxy protocol with subscription support |
Route each application through its own tunnel with flexible pattern matching:
rules:
- pattern: "firefox.exe" # Exact executable name
tunnel_id: awg-germany
fallback: block # Kill switch — block if tunnel is down
- pattern: "chrome" # Partial name match
tunnel_id: awg-riga
fallback: allow_direct # Fall back to direct connection
- pattern: 'C:\Games\*' # Directory glob
tunnel_id: awg-germany
fallback: allow_direct
- pattern: "discord.exe"
tunnel_id: awg-germany
priority: realtime # Low-latency queue for voice/video| Policy | Behavior |
|---|---|
allow_direct |
Route via real NIC if tunnel is unavailable |
block |
Kill switch — drop all traffic if tunnel is down |
drop |
Permanently drop traffic |
next_rule |
Try the next matching rule in chain |
Assign scheduling priority to rules for QoS-like behavior:
- Realtime — voice, video, gaming (minimal latency)
- Normal — standard traffic
- Low — bulk downloads yield to interactive traffic
- Auto — classifies packets automatically (small UDP → high, DNS → high, bulk → normal)
Route traffic by domain using GeoSite/GeoIP databases:
domain_rules:
- pattern: "geosite:youtube" # GeoSite category
action: tunnel
tunnel_id: awg-germany
- pattern: "geosite:category-ru" # Route Russian sites directly
action: direct- Per-process DNS routing through VPN tunnels
- Local DNS resolver with caching (
10.255.0.1:53) - DNS leak protection via Windows Filtering Platform (WFP)
- Parallel queries to multiple upstream servers
- Multiple simultaneous tunnels with real-time TX/RX statistics
- VLESS subscriptions with auto-refresh
- Auto-reconnect with configurable retry intervals
- Global IP/app exclusions — bypass VPN for specific IPs or apps
- Per-tunnel filters — allowed/disallowed IPs and apps per tunnel
- Local network bypass — RFC 1918 / link-local automatically excluded
- Auto-update — periodic checks against GitHub Releases
- Windows Service mode — run headless via SCM
- Hot config reload — apply YAML changes without restart
- Bilingual UI — English and Russian
- Download awg-split-tunnel-ui-amd64-installer.exe from the latest release
- Run the installer
- Launch AWG Split Tunnel from the Start Menu
- Download awg-split-tunnel-*-windows-amd64.zip from the latest release
- Extract to any directory
- Run
awg-split-tunnel.exe
- Download AWG-Split-Tunnel-*-darwin-universal.dmg from the latest release
- Open the DMG and drag AWG Split Tunnel to Applications
- The GUI runs as a menu bar app and communicates with the daemon via gRPC
The daemon must be installed separately (see below). The GUI is a menu bar application — it does not appear in the Dock.
One-line install (auto-detects architecture, downloads latest release, installs daemon):
curl -fsSL https://raw.githubusercontent.com/Fokir/Ianus-Split-Tunnel-VPN/master/scripts/install-macos.sh | sudo bashThen edit your config and restart:
sudo nano /etc/awg-split-tunnel/config.yaml
sudo launchctl kickstart -k system/com.awg.split-tunnelManual install
Download the appropriate tarball from the latest release:
| File | Architecture |
|---|---|
awg-split-tunnel-*-darwin-universal.tar.gz |
Apple Silicon + Intel |
awg-split-tunnel-*-darwin-arm64.tar.gz |
Apple Silicon (M1/M2/M3/M4) |
awg-split-tunnel-*-darwin-amd64.tar.gz |
Intel Mac |
# Download and extract (universal example)
curl -fsSL https://github.com/Fokir/Ianus-Split-Tunnel-VPN/releases/latest/download/awg-split-tunnel-vX.Y.Z-darwin-universal.tar.gz | tar xz
# Install daemon (copies binary, creates LaunchDaemon, starts service)
sudo ./install-daemon.sh
# Edit config
sudo nano /etc/awg-split-tunnel/config.yaml
# Restart after config changes
sudo launchctl kickstart -k system/com.awg.split-tunnelManage the daemon:
# Status
sudo launchctl print system/com.awg.split-tunnel
# Logs
tail -f /var/log/awg-split-tunnel.log
# Stop
sudo launchctl bootout system/com.awg.split-tunnel
# Uninstall
sudo ./uninstall-daemon.sh# Run with custom config
awg-split-tunnel -config path/to/config.yaml
# Install as Windows Service
awg-split-tunnel install -config path/to/config.yaml
# Service management
awg-split-tunnel start
awg-split-tunnel stop
awg-split-tunnel uninstallNote: Administrator/root privileges are required — the application manages network adapters and firewall filters.
AWG Split Tunnel uses a single YAML configuration file. See config.example.yaml for the full reference.
tunnels:
- id: awg-germany
protocol: amneziawg
name: "AWG Germany"
settings:
config_file: "germany.conf"
rules:
- pattern: "firefox.exe"
tunnel_id: awg-germany
fallback: block
dns:
tunnel_id: awg-germany
servers:
- "1.1.1.1"
- "8.8.8.8"| Section | Purpose |
|---|---|
global |
IP/app filters applied to all tunnels |
tunnels |
VPN tunnel definitions (protocol, config file, filters) |
rules |
Process → tunnel routing rules with fallback policies |
domain_rules |
Domain-based routing via GeoSite/GeoIP |
dns |
DNS resolver settings, cache, leak protection |
subscriptions |
VLESS subscription URLs with auto-refresh |
logging |
Log levels (global and per-component) |
gui |
UI preferences, auto-connect, reconnect settings |
update |
Auto-update check interval |
┌─────────────────────────────────────────────────────────┐
│ GUI (Svelte) │
│ Wails v3 ←→ gRPC bindings │
└──────────────────────┬──────────────────────────────────┘
│
┌──────────────────────▼──────────────────────────────────┐
│ Core Service │
│ ConfigManager · EventBus · TunnelRegistry · RuleEngine │
└──────┬────────────┬────────────────┬────────────────────┘
│ │ │
┌──────▼──────┐ ┌───▼─────────┐ ┌───▼──────────────┐
│ Gateway │ │ Providers │ │ Proxy Layer │
│ │ │ │ │ │
│ WinTUN │ │ AmneziaWG │ │ TCP Transparent │
│ WFP Manager │ │ WireGuard │ │ UDP Transparent │
│ Flow Table │ │ VLESS │ │ SNI Extraction │
│ DNS Resolver│ │ Direct │ │ Fallback Router │
│ Route Mgr │ │ │ │ │
│ IP Filter │ │ │ │ │
└─────────────┘ └─────────────┘ └──────────────────┘
How it works:
- A WinTUN virtual adapter captures all routed traffic
- WFP filters block per-process access to the real NIC, forcing traffic through TUN
- The packet router identifies the source process for each packet
- The rule engine matches the process against routing rules
- Matched traffic is raw-forwarded to the appropriate VPN tunnel
- Unmatched traffic follows the fallback policy (direct, block, or next rule)
- DNS queries are intercepted and routed per-process through VPN resolvers
- Go 1.25+
- Wails v3 (for GUI)
- Node.js 18+ (for frontend)
- Windows SDK (for WFP headers)
# Backend only (headless service)
make build
# GUI application
cd ui && wails3 build
# All binaries (service + updater + diagnostics)
make all| Layer | Technology |
|---|---|
| Backend | Go 1.25 |
| Frontend | Svelte + Tailwind CSS |
| Desktop Framework | Wails v3 |
| IPC | gRPC + Protocol Buffers |
| VPN Protocol | AmneziaWG / WireGuard (netstack) |
| Proxy Protocol | VLESS (via xray-core) |
| Network | WinTUN adapter + WFP (Windows Filtering Platform) |
| NAT | 64-shard concurrent flow tables |
This project is licensed under CC BY-NC-SA 4.0.
AWG Split Tunnel — VPN-клиент для Windows и macOS с раздельной маршрутизацией трафика по процессам. В отличие от обычных VPN-клиентов, которые захватывают весь системный трафик, AWG Split Tunnel позволяет точно выбирать, какие приложения идут через какой туннель, а какие остаются на прямом подключении.
Запускайте несколько туннелей одновременно, настраивайте политики отката, приоритизируйте чувствительный к задержкам трафик и маршрутизируйте по доменам — всё из одного компактного интерфейса.
| Протокол | Статус | Описание |
|---|---|---|
| AmneziaWG | Активен | WireGuard с обфускацией трафика (обход DPI) |
| WireGuard | Активен | Стандартные WireGuard-туннели |
| VLESS | Активен | Прокси-протокол XTLS-Reality с поддержкой подписок |
Направляйте каждое приложение через свой туннель с гибким сопоставлением:
rules:
- pattern: "firefox.exe" # Точное имя исполняемого файла
tunnel_id: awg-germany
fallback: block # Kill switch — блокировать при недоступности туннеля
- pattern: "chrome" # Частичное совпадение
tunnel_id: awg-riga
fallback: allow_direct # Прямое подключение как запасной вариант
- pattern: 'C:\Games\*' # Шаблон по каталогу
tunnel_id: awg-germany
- pattern: "discord.exe"
tunnel_id: awg-germany
priority: realtime # Очередь с низкой задержкой для голоса/видео| Политика | Поведение |
|---|---|
allow_direct |
Маршрутизация через реальный адаптер при недоступности туннеля |
block |
Kill switch — сбросить весь трафик при недоступности туннеля |
drop |
Безусловная блокировка трафика |
next_rule |
Перейти к следующему совпадающему правилу |
- Realtime — голос, видео, игры (минимальная задержка)
- Normal — обычный трафик
- Low — массовые загрузки уступают интерактивному трафику
- Auto — автоматическая классификация пакетов
Маршрутизация трафика по доменам через базы GeoSite/GeoIP:
domain_rules:
- pattern: "geosite:youtube" # Категория GeoSite
action: tunnel
tunnel_id: awg-germany
- pattern: "geosite:category-ru" # Российские сайты напрямую
action: direct- Маршрутизация DNS-запросов по процессам через VPN-туннели
- Локальный DNS-резолвер с кэшированием (
10.255.0.1:53) - Защита от DNS-утечек через Windows Filtering Platform (WFP)
- Параллельные запросы к нескольким серверам
- Несколько туннелей одновременно со статистикой TX/RX в реальном времени
- Подписки VLESS с автообновлением
- Автопереподключение с настраиваемыми интервалами
- Глобальные исключения по IP и приложениям
- Фильтры на туннель — разрешённые/запрещённые IP и приложения
- Обход локальной сети — RFC 1918 / link-local исключаются автоматически
- Автообновление — периодическая проверка релизов на GitHub
- Режим службы Windows — работа через SCM без GUI
- Горячая перезагрузка конфигурации — применение изменений YAML без перезапуска
- Двуязычный интерфейс — английский и русский
- Скачайте awg-split-tunnel-ui-amd64-installer.exe из последнего релиза
- Запустите установщик
- Откройте AWG Split Tunnel из меню «Пуск»
- Скачайте awg-split-tunnel-*-windows-amd64.zip из последнего релиза
- Распакуйте в любую папку
- Запустите
awg-split-tunnel.exe
- Скачайте AWG-Split-Tunnel-*-darwin-universal.dmg из последнего релиза
- Откройте DMG и перетащите AWG Split Tunnel в Applications
- GUI работает как приложение в меню баре и связывается с daemon через gRPC
Daemon нужно установить отдельно (см. ниже). GUI отображается только в меню баре, не в Dock.
Установка одной командой (автоопределение архитектуры, скачивание последнего релиза, установка daemon):
curl -fsSL https://raw.githubusercontent.com/Fokir/Ianus-Split-Tunnel-VPN/master/scripts/install-macos.sh | sudo bashЗатем отредактируйте конфиг и перезапустите:
sudo nano /etc/awg-split-tunnel/config.yaml
sudo launchctl kickstart -k system/com.awg.split-tunnelРучная установка
Скачайте подходящий архив из последнего релиза:
| Файл | Архитектура |
|---|---|
awg-split-tunnel-*-darwin-universal.tar.gz |
Apple Silicon + Intel |
awg-split-tunnel-*-darwin-arm64.tar.gz |
Apple Silicon (M1/M2/M3/M4) |
awg-split-tunnel-*-darwin-amd64.tar.gz |
Intel Mac |
# Скачать и распаковать (пример для universal)
curl -fsSL https://github.com/Fokir/Ianus-Split-Tunnel-VPN/releases/latest/download/awg-split-tunnel-vX.Y.Z-darwin-universal.tar.gz | tar xz
# Установить daemon (копирует бинарник, создаёт LaunchDaemon, запускает сервис)
sudo ./install-daemon.sh
# Отредактировать конфиг
sudo nano /etc/awg-split-tunnel/config.yaml
# Перезапустить после изменения конфига
sudo launchctl kickstart -k system/com.awg.split-tunnelУправление daemon:
# Статус
sudo launchctl print system/com.awg.split-tunnel
# Логи
tail -f /var/log/awg-split-tunnel.log
# Остановить
sudo launchctl bootout system/com.awg.split-tunnel
# Удалить
sudo ./uninstall-daemon.sh# Запуск с пользовательским конфигом
awg-split-tunnel -config path/to/config.yaml
# Установка как служба Windows
awg-split-tunnel install -config path/to/config.yaml
# Управление службой
awg-split-tunnel start
awg-split-tunnel stop
awg-split-tunnel uninstallПримечание: Требуются права администратора/root — приложение управляет сетевыми адаптерами и правилами фаервола.
AWG Split Tunnel использует единый YAML-файл конфигурации. Полный пример — config.example.yaml.
tunnels:
- id: awg-germany
protocol: amneziawg
name: "AWG Germany"
settings:
config_file: "germany.conf"
rules:
- pattern: "firefox.exe"
tunnel_id: awg-germany
fallback: block
dns:
tunnel_id: awg-germany
servers:
- "1.1.1.1"
- "8.8.8.8"| Секция | Назначение |
|---|---|
global |
IP/app-фильтры, применяемые ко всем туннелям |
tunnels |
Определения VPN-туннелей (протокол, конфиг, фильтры) |
rules |
Правила маршрутизации процесс → туннель с политиками отката |
domain_rules |
Доменная маршрутизация через GeoSite/GeoIP |
dns |
Настройки DNS-резолвера, кэш, защита от утечек |
subscriptions |
URL подписок VLESS с автообновлением |
logging |
Уровни логирования (глобально и по компонентам) |
gui |
Настройки интерфейса, автоподключение, реконнект |
update |
Интервал проверки автообновлений |
Проект распространяется под лицензией CC BY-NC-SA 4.0.



