Co-authored-by: Cursor <cursoragent@cursor.com>
Navis
Клиент NaiveProxy + Hysteria 2 + AmneziaWG 2.0 + Xray (VLESS / VMess / Trojan) с профилями, пингом, URL-подпиской / Remnawave API и автообновлением.
Платформы
| OS | Артефакты | UI |
|---|---|---|
| Windows amd64 | Navis.exe |
GUI (WebView2) |
| macOS universal | Navis.dmg · Navis.app.zip |
GUI (как Windows) |
| macOS arm64 / amd64 | Navis · DMG · Navis-cli |
GUI + CLI |
| Android | Navis.apk |
GUI (VpnService) |
Скачать macOS прямо с git
Репозиторий: https://git.evilfox.cc/test2/navi
Быстрая установка (автовыбор архитектуры)
curl -fsSL "https://git.evilfox.cc/test2/navi/raw/branch/main/scripts/install-macos.sh" | bash
Скрипт скачает универсальный DMG (работает на Intel и Apple Silicon) и откроет его.
Универсальный DMG (рекомендуется)
Подходит для всех Mac — M1/M2/M3/M4 и Intel:
cd ~/Downloads
curl -fL -o Navis.dmg \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/universal/Navis.dmg"
open Navis.dmg
1. Узнайте архитектуру Mac (если нужна отдельная сборка)
В Терминале:
uname -m
arm64→ Apple Silicon (M1/M2/M3/M4) → папка macos/arm64x86_64→ Intel → папка macos/amd64
Важно: на Mac M4 нельзя ставить сборку из
macos/amd64— иконка будет с перечёркиванием. Используйте macos/universal или macos/arm64.
2a. Скачать DMG для конкретной архитектуры
Apple Silicon:
cd ~/Downloads
curl -fL -o Navis.dmg \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis.dmg"
open Navis.dmg
Intel:
cd ~/Downloads
curl -fL -o Navis.dmg \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis.dmg"
open Navis.dmg
Откроется диск с Navis.app — перетащите в Программы (Applications).
Если Gatekeeper ругается:
xattr -dr com.apple.quarantine /Applications/Navis.app
Запуск CLI из .app:
/Applications/Navis.app/Contents/MacOS/Navis init
/Applications/Navis.app/Contents/MacOS/Navis install-core
/Applications/Navis.app/Contents/MacOS/Navis connect
Альтернатива DMG — zip с тем же .app:
# arm64
curl -fL -o Navis.app.zip \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis.app.zip"
# amd64
curl -fL -o Navis.app.zip \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis.app.zip"
unzip Navis.app.zip
2b. Скачать CLI-бинарник одной командой
Apple Silicon (arm64):
mkdir -p ~/Navis && cd ~/Navis
curl -fL -o Navis \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/arm64/Navis"
chmod +x Navis
Intel (amd64):
mkdir -p ~/Navis && cd ~/Navis
curl -fL -o Navis \
"https://git.evilfox.cc/test2/navi/raw/branch/main/dist/navis-release/macos/amd64/Navis"
chmod +x Navis
Проверка версии / обновлений:
./Navis check-update
3. Первый запуск (CLI)
cd ~/Navis
./Navis init
./Navis install-core
./Navis set-proxy 'hysteria2://PASSWORD@HOST:PORT/?sni=...#name'
# или naive+https://user:pass@host
./Navis connect
Полезные флаги:
./Navis connect -no-sysproxy # только локальный SOCKS/HTTP, без networksetup
./Navis connect -probe # проверка туннеля после коннекта
Локальные прокси после connect:
- SOCKS5:
127.0.0.1:1080 - HTTP:
127.0.0.1:1081
Системный прокси на macOS выставляется через networksetup (может запросить права администратора).
4. Если macOS блокирует запуск
“Navis” cannot be opened because it is from an unidentified developer
xattr -dr com.apple.quarantine ~/Navis/Navis
# или для .app:
xattr -dr com.apple.quarantine /Applications/Navis.app
Затем: Системные настройки → Конфиденциальность и безопасность → Всё равно открыть.
5. Обновление с git
cd ~/Navis
./Navis check-update
./Navis apply-update
# закройте процесс Navis — бинарник подменится сам
Или скачайте DMG/бинарник заново.
Прямые ссылки (raw):
| Архитектура | CLI | DMG | ZIP (.app) |
|---|---|---|---|
| universal | Navis | Navis.dmg | Navis.app.zip |
| arm64 | Navis | Navis.dmg | Navis.app.zip |
| amd64 | Navis | Navis.dmg | Navis.app.zip |
| манифест | update.json |
Android APK
Сборка: build-android.bat → dist/navis-release/android/Navis.apk
Установка: скопируйте APK на телефон → разрешите установку из неизвестных источников.
В APK: подписка, компактный список нод, пинг, «Лучший», автоподключение. Протоколы VLESS/VMess/Trojan (Xray) и Hysteria 2. Naive/AWG — импорт в UI, полный туннель дорабатывается.
Подробнее: android/README.md
Сборка Windows
build.bat
Артефакты релиза: dist/navis-release/windows/Navis.exe (+ vpnclient.exe).
или:
go build -ldflags="-H windowsgui -s -w" -o Navis.exe ./cmd/vpnapp
Microsoft Store (MSIX)
Navis — Win32 + WebView2 VPN/прокси-клиент (системный прокси, локальные cores). PWA в Store не подходит как замена: без Desktop Bridge нельзя дать те же возможности. Для Store используется MSIX full-trust поверх того же Navis.exe.
build.bat
.\scripts\pack-msix.ps1 -Version 3.9.0.1
Нужен Windows SDK (MakeAppx.exe). Перед публикацией подставьте Identity Name / Publisher из Partner Center (см. packaging/msix/AppxManifest.xml и packaging/msix/README.md).
Сборка из Store не самообновляется через in-app updater (детект MSIX package identity) — только обновления Microsoft Store.
Remnawave
Импорт нод из панели Remnawave:
| Способ | Что указать |
|---|---|
| Публичная подписка | https://<panel>/api/sub/<shortUuid> в поле «URL подписки» |
| Панель + short UUID | блок Remnawave API → URL панели + short UUID → «Синхронизировать» |
| С API token | токен из панели → API Tokens (для /api/subscriptions/…, /api/users/…) |
| Caddy auth | опциональный X-Api-Key |
Токены хранятся только локально в configs/config.json (не коммитьте).
Выдача доступа из приложения (admin API)
Приложение умеет само создавать пользователей в панели Remnawave и сразу импортировать их конфиги (панель «Выдать доступ» в интерфейсе). Для этого нужен отдельный файл с админ-ключом:
- Скопируйте
configs/remnawave-api.example.json→configs/remnawave-api.json. - Вставьте
panel_urlиapi_token(панель → API Tokens).caddy_api_key— только если панель за Caddy-auth. - Перезапустите Navis — появится панель «Выдать доступ».
Файл читается в рантайме из папки configs рядом с config.json — пересборка (repack) не требуется, достаточно положить файл и перезапустить приложение.
Тариф по умолчанию (настраивается в блоке provision):
| Поле | Значение по умолчанию |
|---|---|
traffic_gb |
50 ГБ |
days |
30 дней (expireAt = сейчас + days) |
strategy |
MONTH (сброс трафика; также NO_RESET / DAY / WEEK) |
hwid_device_limit |
0 = без лимита устройств |
Логика: GET /api/users/by-username/{username} — если пользователь есть, берётся его subscriptionUrl; иначе POST /api/users с тарифом выше, затем подписка импортируется в приложение автоматически.
configs/remnawave-api.json в .gitignore — никогда не коммитьте реальный ключ, в репозитории только remnawave-api.example.json.
Сборка macOS (кросс с Windows / Linux)
build-macos.bat
Артефакты: dist/navis-release/macos/{arm64,amd64,universal}/.
или:
CGO_ENABLED=0 GOOS=darwin GOARCH=arm64 go build -o dist/navis-release/macos/arm64/Navis ./cmd/vpnclient
CGO_ENABLED=0 GOOS=darwin GOARCH=amd64 go build -o dist/navis-release/macos/amd64/Navis ./cmd/vpnclient
Обновления
Манифест: https://git.evilfox.cc/test2/navi/raw/branch/main/dist/update.json
Релизный layout (с 2.8.0):
dist/navis-release/windows/ Navis.exe, vpnclient.exe
dist/navis-release/macos/arm64|amd64|universal/
dist/navis-release/android/ Navis.apk
Формат (multi-platform):
{
"version": "2.8.0",
"notes": "…",
"platforms": {
"windows-amd64": { "url": "…/windows/Navis.exe", "sha256": "…" },
"darwin-arm64": { "url": "…/macos/arm64/Navis", "sha256": "…" },
"darwin-amd64": { "url": "…/macos/amd64/Navis", "sha256": "…" },
"darwin-universal": { "url": "…/macos/universal/Navis", "sha256": "…" },
"android": { "url": "…/android/Navis.apk", "sha256": "…" }
}
}
Клиент выбирает только ключ GOOS-GOARCH (на Mac — fallback на darwin-universal). Чужой OS в ленте не считается доступным обновлением. Android пока не использует этот in-app feed (APK отдельно).
Купить доступ
Антивирусы (ложные срабатывания)
Некоторые AV (Bkav, Microsoft Wacapew/Wacatac, Ikarus Trojan.WinGo.Agent, Google, Trapmine) часто помечают любые неподписанные Go-бинарники с сетью и сменой системного прокси.
В 3.9.0:
- выдача конфигов через Remnawave API (
/api/sub/{shortUuid}, опционально Bearer token); - UI в стиле Remnawave (тёмная тема по умолчанию, cyan accent), флаги стран у серверов;
- MSIX / Store prep для
3.9.0.1.
В 2.9.0:
- светлая / тёмная тема с переключателем (preference в localStorage, по умолчанию — системная);
- подготовка к Microsoft Store: MSIX-манифест,
scripts/pack-msix.ps1, отключение in-app updater в MSIX-сборке.
В 2.8.0:
- релизы разложены по папкам
windows/·macos/·android/; - обновления строго по платформе (Windows не получит Mac-сборку и наоборот).
В 2.7.2:
- убран вечный цикл обновления (проверка больше не устанавливает сама; только кнопка «Обновить»);
- номер сборки в версии (
2.7.2+N/ FileVersion2.7.2.N); сравнение обновлений только по product semver.
В 2.7.1:
- обновление только по кнопке «Обновить»; можно «Пропустить эту версию» (следующую всё равно предложит).
В 2.7.0:
- GUI на macOS (тот же интерфейс, что на Windows): DMG → Navis.app открывает окно клиента; CLI лежит как
Navis-cli.
В 2.6.2:
- быстрое отключение AWG: принудительно закрываются прокси-соединения, UI больше не зависает.
В 2.6.1:
- AmneziaWG: перед подключением Endpoint-хост резолвится в IP (предпочтительно IPv4) — обход сбоя IpcSet на Windows («No such host is known»).
В 2.6.0:
- исправлен разбор AmneziaWG: ключ в
awg://KEY@host, JSON/vpn://, пробелы в именах полей, URL-safe base64.
В 2.3.0:
- Android APK: подписка, список нод, пинг, автолучший; VLESS/VMess/Trojan (Xray) и Hysteria 2 через VpnService.
В 2.2.1:
- универсальный macOS DMG (Intel + Apple Silicon), скрипт автоустановки, предупреждения при неверной архитектуре.
В 2.2.0:
- компактный список нод с пингом (как в Happ);
- параллельный пинг, кнопка «Лучший», автоподключение к серверу с минимальной задержкой после подписки.
В 2.1.0:
- вторичные кнопки перекрашены (не белые), чтобы не путать с основным действием.
В 2.0.0:
- новый интерфейс (connect-first), обновлённая иконка и типографика;
- чище UX: протокол-бейдж, сворачиваемые сервисные действия, статус-карточка.
В 1.9.0:
- VLESS / VMess / Trojan через официальный Xray-core (кнопка «Установить cores»).
В 1.8.0:
- автопроверка обновлений при старте и установка с автоперезапуском;
- AmneziaWG 2.0: вставьте полный
.conf(Jc/Jmin/Jmax, S1–S4, H1–H4, I1–I5) илиawg://…— встроенный userspace-туннель + локальный SOCKS/HTTP.
В 1.7.1 дополнительно:
- обновление только скачивается в
Downloads(без самозамены exe); - нет автопроверки обновлений и тихой загрузки cores при старте;
- нет вызова
netsh winhttp; - Windows manifest + metadata EvilFox.
Если всё ещё ругается — отправьте файл как False Positive:
- Microsoft: https://www.microsoft.com/wdsi/filesubmission
- Google: https://safebrowsing.google.com/safebrowsing/report_error/
- VirusTotal community vote: «False positive»
Полностью убрать ML-детекты обычно можно только с Authenticode (code signing).