Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Manage V2RayN on macOS to list nodes, test proxy connections, check current node status, view logs, and support auto-failover via scripted health checks.
Manage V2RayN on macOS to list nodes, test proxy connections, check current node status, view logs, and support auto-failover via scripted health checks.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
Manage V2RayN proxy client on macOS with auto-failover.
V2RayN is a V2Ray client for macOS. This skill helps manage nodes, test connections, auto-check for failures, and update subscriptions.
# Check if V2RayN is running ps aux | grep -i v2rayN | grep -v grep # Check listening ports lsof -i :10808 -i :10809 -i :10810 -i :7890 -i :7891 2>/dev/null # Test connection curl -s --max-time 5 https://www.google.com -w "\nStatus: %{http_code}\n"
This skill automatically: Check if current node is working If failed, update subscription Select a new working node
Create a cron job: */30 * * * * /path/to/check_v2rayn.sh
#!/bin/bash # check_v2rayn.sh - Auto-check and failover for V2RayN LOG_FILE="$HOME/.openclaw/logs/v2rayn_check.log" CONFIG_DIR="$HOME/Library/Application Support/v2rayN/guiConfigs" MAIN_CONFIG="$CONFIG_DIR/guiNConfig.json" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE" } # Test connection test_connection() { curl -s --max-time 5 -x socks5://127.0.0.1:10808 https://www.google.com -o /dev/null -w "%{http_code}" 2>/dev/null } # Get current node info get_current_node() { python3 -c " import json with open('$MAIN_CONFIG') as f: d = json.load(f) idx = d.get('currentServerIndex') if idx is not None: servers = d.get('vmess',[]) + d.get('vless',[]) + d.get('trojan',[]) if idx < len(servers): print(servers[idx].get('remarks', 'Unknown')) else: print('Invalid index') else: print('No server selected') " 2>/dev/null } # Main check log "=== Starting V2RayN health check ===" # Test current connection RESULT=$(test_connection) log "Connection test result: $RESULT" if [ "$RESULT" = "200" ]; then log "✅ Node is working: $(get_current_node)" exit 0 else log "❌ Node failed! Trying to recover..." # Try to update subscription log "Updating subscription..." # Note: V2RayN CLI is limited, manual or external script needed log "Please manually:" log "1. Open V2RayN" log "2. Update subscription" log "3. Select a new node" # Notify user echo "⚠️ V2RayN node failed! Please check manually." exit 1 fi
# Test all common proxy ports for port in 10808 10809 10810 7890 7891; do result=$(curl -s --max-time 3 -x socks5://127.0.0.1:$port https://www.google.com -w "%{http_code}" 2>/dev/null) echo "Port $port: $result" done
cat ~/Library/Application\ Support/v2rayN/guiConfigs/guiNConfig.json | python3 -c " import json,sys d=json.load(sys.stdin) servers = d.get('vmess',[]) + d.get('vless',[]) + d.get('trojan',[]) + d.get('shadowsocks',[]) print(f'Total nodes: {len(servers)}') for i, s in enumerate(servers): print(f'{i+1}. {s.get(\"remarks\", s.get(\"name\", \"Unnamed\"))}') "
python3 -c " import json with open('$HOME/Library/Application Support/v2rayN/guiConfigs/guiNConfig.json') as f: d = json.load(f) idx = d.get('currentServerIndex') if idx: servers = d.get('vmess',[]) + d.get('vless',[]) + d.get('trojan',[]) if idx < len(servers): s = servers[idx] print(f'Current: {s.get(\"remarks\", \"Unknown\")}') print(f'Protocol: {s.get(\"protocol\", \"trojan\")}') "
# Test current node curl -s --max-time 5 -x socks5://127.0.0.1:10808 https://www.google.com # Test direct curl -s --max-time 5 https://www.google.com
ls -la ~/Library/Application\ Support/v2rayN/guiLogs/ tail -50 ~/Library/Application\ Support/v2rayN/guiLogs/*.log 2>/dev/null | tail -30
# Kill and restart pkill -f v2rayN open /Applications/v2rayN.app
Note: V2RayN doesn't have a CLI for subscription update. You'll need to: Open V2RayN GUI Click "Update" on your subscription
FileDescriptionguiNConfig.jsonMain GUI config (nodes, settings)config.jsonV2Ray/Xray runtime configconfigPre.jsonSing-box config (if using TUN mode)
Check logs: tail -50 ~/Library/Application Support/v2rayN/guiLogs/*.log Test port: lsof -i :10808 Try different node in GUI Update subscription
Import new subscription Or add nodes manually in GUI
Check if TUN interface exists: ifconfig | grep -i tun Check configPre.json for TUN settings
Messaging, meetings, inboxes, CRM, and teammate communication surfaces.
Largest current source with strong distribution and engagement signals.