4.8 KiB
4.8 KiB
name, description
| name | description |
|---|---|
| nordvpn-client | Use when managing NordVPN on macOS or Linux, including install/bootstrap, login, connect, disconnect, status checks, or verifying a VPN location before running another skill. |
NordVPN Client
Cross-platform NordVPN lifecycle management for macOS and Linux hosts.
Use This Skill For
- probing whether NordVPN automation is ready
- bootstrapping missing backend dependencies
- validating auth
- connecting to a country or city
- verifying the public exit location
- disconnecting and restoring the normal network state
Command Surface
node scripts/nordvpn-client.js status
node scripts/nordvpn-client.js install
node scripts/nordvpn-client.js login
node scripts/nordvpn-client.js verify
node scripts/nordvpn-client.js verify --country "Germany"
node scripts/nordvpn-client.js verify --country "Japan" --city "Tokyo"
node scripts/nordvpn-client.js connect --country "Germany"
node scripts/nordvpn-client.js connect --country "Japan" --city "Tokyo"
node scripts/nordvpn-client.js disconnect
node scripts/nordvpn-client.js status --debug
Backend Model
- Linux:
- use the official
nordvpnCLI installuses the official NordVPN installer- token login is supported
- use the official
- macOS:
- use NordLynx/WireGuard through
wireguard-goandwireguard-tools installbootstraps them with Homebrewloginvalidates the token for the WireGuard backend- the generated WireGuard config stays free of
DNS = ... connectnow requires a bounded persistence gate plus a verified exit before success is declared- the skill snapshots and applies NordVPN DNS only to eligible physical services while connected
- NordVPN DNS is applied only after the tunnel remains up, the final liveness check still shows the requested exit, and system hostname resolution still works afterward
disconnectrestores the saved DNS/search-domain state even if the tunnel state is stale- Tailscale is suspended before connect and resumed after disconnect or failed connect
- the skill writes a short-lived Tailscale suppression marker during VPN connect so host watchdogs do not immediately re-run
tailscale up NordVPN.appmay remain installed but is only the manual fallback
- use NordLynx/WireGuard through
Credentials
Default OpenClaw credential paths:
- token:
~/.openclaw/workspace/.clawdbot/credentials/nordvpn/token.txt - password:
~/.openclaw/workspace/.clawdbot/credentials/nordvpn/password.txt
Supported env vars:
NORDVPN_TOKENNORDVPN_TOKEN_FILENORDVPN_USERNAMENORDVPN_PASSWORDNORDVPN_PASSWORD_FILE
macOS Requirements
Automated macOS connects require all of:
wireguard-gowireguard-toolsNORDVPN_TOKENor the default token file- non-interactive
sudofor the installed helper script:~/.openclaw/workspace/skills/nordvpn-client/scripts/nordvpn-wireguard-helper.sh
Exact visudo rule for the installed OpenClaw skill:
stefano ALL=(root) NOPASSWD: /Users/stefano/.openclaw/workspace/skills/nordvpn-client/scripts/nordvpn-wireguard-helper.sh probe, /Users/stefano/.openclaw/workspace/skills/nordvpn-client/scripts/nordvpn-wireguard-helper.sh up, /Users/stefano/.openclaw/workspace/skills/nordvpn-client/scripts/nordvpn-wireguard-helper.sh down
Operational note:
- the persistence gate reuses the already-allowed
probeaction to confirm the liveutun*WireGuard runtime and does not require extra sudoers actions beyondprobe,up, anddown
Agent Guidance
- run
statusfirst when the machine state is unclear - on macOS, if tooling is missing, run
install - if auth is unclear, run
login - use
connectbefore location-sensitive skills such asweb-automation - use
verifyafter connect when you need an explicit location check - use
disconnectafter the follow-up task - if
connectfails its persistence or final verification gate, treat that as a safe rollback, not a partial success
Output Rules
- normal JSON output redacts local path metadata and helper-hardening diagnostics
- use
--debugonly when deeper troubleshooting requires internal local paths and helper/config metadata
Troubleshooting Cues
Invalid authorization header:- token file exists but the token is invalid; replace the token and rerun
login
- token file exists but the token is invalid; replace the token and rerun
sudoReady: false:- the helper is not allowed in sudoers; add the
visudorule above
- the helper is not allowed in sudoers; add the
- connect succeeds but final state looks inconsistent:
- rely on the verified public IP/location first
- then inspect
status --debug
verified: truebutpersistence.stable: falseshould not happen anymore; if it does, the skill should roll back instead of pinning DNS- disconnect should leave:
- normal public IP restored
- no active WireGuard state
- Tailscale resumed if the skill suspended it
For full operator setup and troubleshooting, see:
docs/nordvpn-client.md