Install
openclaw skills install vpn-mesh-v2Turn your OpenClaw agent into a secure VPN exit node. Mesh network for agents to route traffic through peer nodes worldwide.
openclaw skills install vpn-mesh-v2Decentralized VPN network for AI agents. Turn your OpenClaw agent into a secure VPN exit node. Route traffic through peer nodes worldwide with one command.
🌐 View Live Network Map — Auto-updates every 60 seconds.
First, install the Sudo Tool (required):
# Install sudo-tool first
clawhub install sudo-tool
# Configure it (one-time - stores your sudo password encrypted)
sudo-tool setup
Without sudo-tool configured, WireGuard cannot be auto-installed.
# 1. Install sudo-tool (required)
clawhub install sudo-tool
# 2. Configure sudo-tool (enter sudo password when prompted)
sudo-tool setup
# 3. Install VPN mesh
clawhub install vpn-mesh
# 4. Start VPN (auto-installs WireGuard if missing)
sudo wg-quick up ~/.openclaw/vpn-mesh/wg0.conf
# 5. Check status
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py status
sudo wg-quick up ~/.openclaw/vpn-mesh/wg0.conf
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py status
## Commands
### `setup` — Configure and announce this node
```bash
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py setup
Creates WireGuard keypair, detects your location, creates VPN config, and announces to the public registry so your node appears on the live map.
status — Show node info and connection statepython3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py status
Shows:
list — Show all mesh nodespython3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py list
Displays all nodes in the network with:
connect <country> — Connect to a countrypython3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py connect ES
Finds the best available node in the specified country and adds it as a peer.
Supported countries: ES, GB, US, DE, FR, NL, SE, NO, FI, DK, PL, IT, PT, IE, BE, AT, CH, AU, CA, JP, KR, SG, IN, BR
disconnect — Remove all peerspython3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py disconnect
Removes all peers from config, returns to isolated mode.
announce — Re-announce to registrypython3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py announce
Re-announces your node to the mesh registry.
pair — Generate/share pairing code# Generate your pairing code
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py pair
# Connect using a code (from another node)
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py pair SPAIN-ABC123
Generate an interactive world map showing all mesh nodes:
# ASCII art map (terminal)
python3 ~/.openclaw/skills/vpn-mesh/scripts/mesh_map.py
# HTML map (open in browser)
python3 ~/.openclaw/skills/vpn-mesh/scripts/mesh_map.py --html
# With demo nodes
python3 ~/.openclaw/skills/vpn-mesh/scripts/mesh_map.py --demo --html
The HTML map shows:
Built on WireGuard — the gold standard of VPN security.
- Private key generated LOCALLY on your server
- Never transmitted over the network
- Stored with 600 permissions (root only)
- Each node has unique keypair
- Only public keys exchanged between peers
- WireGuard handshake usesCurve25519
- Forward secrecy — compromised keys can't decrypt old traffic
- No passwords to brute-force
- Peers can only access VPN interface, not your local network
- iptables firewall locks down exposed services
- All traffic is encrypted end-to-end
- Compromised peer = revoke their public key, instant lockout
- No central server to hack
- No user accounts or auth tokens
- Registry only contains public keys + endpoints
- Even if registry is compromised, attackers get nothing useful
┌─────────────────────────────────────────────────────────┐
│ VPN Mesh Network │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ Node ES │◄────────►│ Node DE │◄────────►│ Node UK │ │
│ │(Spain) │ │(Germany)│ │(London) │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ ▲ ▲ ▲ │
│ │ │ │ │
│ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ │
│ │ Your │ │ Peer │ │ Peer │ │
│ │ Agent │ │ Agent │ │ Agent │ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ Connect to any country with: │
│ vpn_mesh connect-country ES → Routes through Spain │
│ vpn_mesh connect-country DE → Routes through Germany │
│ vpn_mesh connect-country UK → Routes through UK │
└─────────────────────────────────────────────────────────┘
Full mesh network — Every node is connected to every other node.
When you run setup, you automatically get all existing mesh nodes as WireGuard peers.
For agents to use mesh nodes on-demand:
vpn_mesh.py list to see available exit nodesvpn_mesh.py route <node_id> to route ALL traffic through that nodevpn_mesh.py stop-routing to return to normal internetExample use case:
vpn_mesh.py route us-node → traffic exits via US peervpn_mesh.py stop-routing → back to normal1. Bypass geo-restrictions
Spain blocks Polymarket → vpn_mesh connect-country GB → Access from UK
2. Route AI agent through specific country
Your agent in Spain → connects to German node → appears in Germany
3. Decentralized privacy
No single company controls the network. Each node is independent.
Traffic routes through peer nodes, not through a corporate VPN.
4. Prediction market access
Access prediction markets blocked in your country by connecting
through a node in a country where they're available.
Nodes announce themselves to a shared registry (GitHub Gist by default).
Registry format:
{
"node_id": "stigs-umbrel",
"public_key": "abc123...",
"endpoint": "79.116.132.72:51820",
"country": "ES",
"city": "Lanzarote",
"version": "0.3.0",
"uptime": "99%",
"updated": "2026-06-01T20:00:00Z"
}
To use a custom registry:
export VPN_MESH_REGISTRY=https://your-gist/raw/nodes.json
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py list
Cause: WireGuard is not installed.
Fix:
sudo apt-get update && sudo apt-get install -y wireguard-tools
Cause: You don't have sudo access.
Fix: Make sure your user is in the sudo group:
sudo usermod -aG sudo $USER
# Then log out and back in
Cause: WireGuard interface isn't running.
Fix:
# Check if WireGuard is running
sudo wg show
# Start the VPN interface
sudo wg-quick up ~/.openclaw/vpn-mesh/wg0.conf
# Re-announce to registry
python3 ~/.openclaw/skills/vpn-mesh/scripts/vpn_mesh.py announce
Cause: VPN IP already in use by another process.
Fix: Change your VPN IP in ~/.openclaw/vpn-mesh/wg0.conf or stop the conflicting service.
Fix:
sudo lsof -i :51820
sudo kill <PID>
The skill includes demo nodes to showcase the visualization:
python3 ~/.openclaw/skills/vpn-mesh/scripts/mesh_map.py --demo --html
Shows 6 sample nodes across: Spain, Germany, UK, Netherlands, US, Japan
~/.openclaw/vpn-mesh/
├── registry.json # Your node info
├── private.key # Your private key (KEEP SECRET)
├── public.key # Your public key (share this)
├── wg0.conf # WireGuard config
├── demo_nodes.json # Demo nodes for visualization
└── mesh-map.html # Interactive world map
MIT — Free to use, modify, and redistribute. No attribution required.