feat: add mac wireguard nordvpn backend
This commit is contained in:
34
docs/plans/2026-03-11-nordvpn-wireguard-macos-design.md
Normal file
34
docs/plans/2026-03-11-nordvpn-wireguard-macos-design.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# NordVPN macOS WireGuard Backend Design
|
||||
|
||||
## Goal
|
||||
Replace the current macOS app-manual fallback in `nordvpn-client` with a scripted WireGuard/NordLynx backend inspired by `wg-nord` and `wgnord`, while preserving the official Linux `nordvpn` CLI backend.
|
||||
|
||||
## Key decisions
|
||||
- Keep Linux on the official `nordvpn` CLI.
|
||||
- Prefer a native macOS WireGuard backend over the GUI app.
|
||||
- Do not vendor third-party scripts directly; reimplement the needed logic in our own JSON-based Node skill.
|
||||
- Do not require uninstalling the Homebrew `nordvpn` app. The new backend can coexist with it.
|
||||
|
||||
## macOS backend model
|
||||
- Bootstrap via Homebrew:
|
||||
- `wireguard-tools`
|
||||
- `wireguard-go`
|
||||
- Read NordVPN token from existing env/file inputs.
|
||||
- Discover a WireGuard-capable NordVPN server via the public Nord API.
|
||||
- Generate a private key locally.
|
||||
- Exchange the private key for Nord-provided interface credentials using the token.
|
||||
- Materialize a temporary WireGuard config under a skill-owned state directory.
|
||||
- Connect and disconnect via `wg-quick`.
|
||||
- Verify with public IP/geolocation after connect.
|
||||
|
||||
## Data/state
|
||||
- Keep state under a skill-owned directory in the user's home, not `/etc`.
|
||||
- Persist only what is needed for reconnect/disconnect/status.
|
||||
- Never store secrets in docs.
|
||||
|
||||
## Rollout
|
||||
1. Implement the macOS WireGuard backend in the skill.
|
||||
2. Update status output so backend selection is explicit.
|
||||
3. Update skill docs and repo docs.
|
||||
4. Verify non-destructive flows on this host.
|
||||
5. Commit, push, and then decide whether to run a live connect test.
|
||||
Reference in New Issue
Block a user