{
  "schemaVersion": "1.0",
  "item": {
    "slug": "claw-relay",
    "name": "Claw Relay",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/nicholaslocascio/claw-relay",
    "canonicalUrl": "https://clawhub.ai/nicholaslocascio/claw-relay",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/claw-relay",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claw-relay",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "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."
        },
        {
          "label": "Upgrade existing",
          "body": "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."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/claw-relay"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/claw-relay",
    "agentPageUrl": "https://openagent3.xyz/skills/claw-relay/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claw-relay/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claw-relay/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "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."
      },
      {
        "label": "Upgrade existing",
        "body": "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."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "claw-relay",
        "body": "You are helping a human set up claw-relay — a method for routing AI agent traffic through a residential IP address using Tailscale exit nodes. No custom relay, no daemon, no proxy software. Just Tailscale."
      },
      {
        "title": "Architecture",
        "body": "There are two nodes connected by a Tailscale tunnel:\n\n┌──────────────────────┐          ┌──────────────────────┐\n│   CLOUD NODE         │          │   RESIDENTIAL NODE   │\n│   (datacenter IP)    │          │   (home IP)          │\n│                      │          │                      │\n│   AI Agent           │          │   Tailscale          │\n│     ↓                │          │   (exit node)        │\n│   Tailscale ─────────┼── WG ───▶│     ↓                │\n│   (use exit node)    │          │   Internet           │\n│                      │          │   (exits from home)  │\n└──────────────────────┘          └──────────────────────┘\n\nCloud node: A VPS running the AI agent. Tailscale routes its traffic through the exit node.\nResidential node: The human's laptop running Tailscale as an exit node. Traffic exits from this IP.\nTailscale connects the two over an encrypted WireGuard tunnel. No custom code needed."
      },
      {
        "title": "Which node are you setting up?",
        "body": "Ask the human which side they need to configure. They may need to do both, but walk through one at a time."
      },
      {
        "title": "Residential Node Setup (human's laptop — do this first)",
        "body": "The human's laptop becomes a Tailscale exit node, allowing the VPS to route traffic through it."
      },
      {
        "title": "Prerequisites",
        "body": "A Tailscale account (free at https://tailscale.com)"
      },
      {
        "title": "1. Install Tailscale",
        "body": "macOS:\n\nbrew install tailscale\n\nLinux:\n\ncurl -fsSL https://tailscale.com/install.sh | sh"
      },
      {
        "title": "2. Enable as exit node",
        "body": "sudo tailscale up --advertise-exit-node"
      },
      {
        "title": "3. Approve the exit node",
        "body": "Go to the Tailscale admin console at https://login.tailscale.com/admin/machines — find the laptop and approve it as an exit node by clicking the three-dot menu → \"Edit route settings\" → enable \"Use as exit node\".\n\nAlternatively, if you have --accept-routes on your policy, this happens automatically."
      },
      {
        "title": "Test",
        "body": "tailscale status\n\nThe laptop should show as an exit node in the tailnet."
      },
      {
        "title": "Cloud Node Setup (VPS)",
        "body": "This is the server running your AI agent. It joins the same tailnet and routes all traffic through the residential exit node."
      },
      {
        "title": "Prerequisites",
        "body": "A VPS or cloud server (any provider — DigitalOcean, Hetzner, AWS, etc.)\nThe residential node must already be set up as an exit node"
      },
      {
        "title": "1. Install Tailscale",
        "body": "curl -fsSL https://tailscale.com/install.sh | sh"
      },
      {
        "title": "2. Join the tailnet and set exit node",
        "body": "Find the residential node's Tailscale hostname or IP:\n\ntailscale status\n\nThen set it as the exit node:\n\nsudo tailscale up --exit-node=<laptop-hostname-or-ip>\n\nReplace <laptop-hostname-or-ip> with the Tailscale IP (e.g., 100.64.x.x) or hostname of the laptop."
      },
      {
        "title": "3. Verify",
        "body": "curl https://httpbin.org/ip\n\nThe response should show the residential IP (the laptop's public IP), not the VPS IP."
      },
      {
        "title": "Agent Configuration",
        "body": "Once the exit node is set, all traffic from the VPS routes through the laptop automatically. No proxy configuration needed in your agent code — it's transparent at the network level.\n\nYour agent code doesn't change at all:\n\nimport requests\n\nr = requests.get(\"https://httpbin.org/ip\")\nprint(r.json())  # Shows the residential IP\n\nconst res = await fetch(\"https://httpbin.org/ip\");\nconsole.log(await res.json()); // Shows the residential IP\n\ncurl https://httpbin.org/ip  # Shows the residential IP"
      },
      {
        "title": "Per-process control (optional)",
        "body": "If you want only specific processes to use the exit node instead of all VPS traffic, you can use Tailscale's --exit-node with app-specific routing or configure HTTPS_PROXY with a local proxy that routes through Tailscale."
      },
      {
        "title": "Advanced: Isolation with Tailscale ACLs",
        "body": "For production setups, use Tailscale ACLs to control which machines can use which exit nodes:\n\n{\n  \"tagOwners\": {\n    \"tag:agent\": [\"autogroup:admin\"],\n    \"tag:exitnode\": [\"autogroup:admin\"]\n  },\n  \"acls\": [\n    {\n      \"action\": \"accept\",\n      \"src\": [\"tag:agent\"],\n      \"dst\": [\"tag:exitnode:*\"]\n    }\n  ]\n}\n\nTag your VPS as tag:agent and your laptop as tag:exitnode to restrict access."
      },
      {
        "title": "Advanced: Headscale (fully self-hosted)",
        "body": "If you want zero dependency on Tailscale's coordination server, use Headscale — an open-source, self-hosted implementation of the Tailscale control server.\n\nDeploy Headscale on a server you control\nPoint both nodes to your Headscale instance instead of Tailscale's servers\nEverything else works the same — WireGuard tunnels, exit nodes, ACLs\n\nThis gives you a fully self-hosted solution with no third-party dependencies."
      },
      {
        "title": "Troubleshooting",
        "body": "Exit node not showing: Make sure you approved it in the admin console\nVPS still shows datacenter IP: Run tailscale status to verify the exit node is connected, then sudo tailscale up --exit-node=<laptop> again\nConnection drops: Check that the laptop has internet access and Tailscale is running\nLaptop went to sleep: Tailscale reconnects automatically when the laptop wakes up, but the VPS will lose internet access while the laptop is offline"
      }
    ],
    "body": "claw-relay\n\nYou are helping a human set up claw-relay — a method for routing AI agent traffic through a residential IP address using Tailscale exit nodes. No custom relay, no daemon, no proxy software. Just Tailscale.\n\nArchitecture\n\nThere are two nodes connected by a Tailscale tunnel:\n\n┌──────────────────────┐          ┌──────────────────────┐\n│   CLOUD NODE         │          │   RESIDENTIAL NODE   │\n│   (datacenter IP)    │          │   (home IP)          │\n│                      │          │                      │\n│   AI Agent           │          │   Tailscale          │\n│     ↓                │          │   (exit node)        │\n│   Tailscale ─────────┼── WG ───▶│     ↓                │\n│   (use exit node)    │          │   Internet           │\n│                      │          │   (exits from home)  │\n└──────────────────────┘          └──────────────────────┘\n\nCloud node: A VPS running the AI agent. Tailscale routes its traffic through the exit node.\nResidential node: The human's laptop running Tailscale as an exit node. Traffic exits from this IP.\nTailscale connects the two over an encrypted WireGuard tunnel. No custom code needed.\nWhich node are you setting up?\n\nAsk the human which side they need to configure. They may need to do both, but walk through one at a time.\n\nResidential Node Setup (human's laptop — do this first)\n\nThe human's laptop becomes a Tailscale exit node, allowing the VPS to route traffic through it.\n\nPrerequisites\nA Tailscale account (free at https://tailscale.com)\n1. Install Tailscale\n\nmacOS:\n\nbrew install tailscale\n\n\nLinux:\n\ncurl -fsSL https://tailscale.com/install.sh | sh\n\n2. Enable as exit node\nsudo tailscale up --advertise-exit-node\n\n3. Approve the exit node\n\nGo to the Tailscale admin console at https://login.tailscale.com/admin/machines — find the laptop and approve it as an exit node by clicking the three-dot menu → \"Edit route settings\" → enable \"Use as exit node\".\n\nAlternatively, if you have --accept-routes on your policy, this happens automatically.\n\nTest\ntailscale status\n\n\nThe laptop should show as an exit node in the tailnet.\n\nCloud Node Setup (VPS)\n\nThis is the server running your AI agent. It joins the same tailnet and routes all traffic through the residential exit node.\n\nPrerequisites\nA VPS or cloud server (any provider — DigitalOcean, Hetzner, AWS, etc.)\nThe residential node must already be set up as an exit node\n1. Install Tailscale\ncurl -fsSL https://tailscale.com/install.sh | sh\n\n2. Join the tailnet and set exit node\n\nFind the residential node's Tailscale hostname or IP:\n\ntailscale status\n\n\nThen set it as the exit node:\n\nsudo tailscale up --exit-node=<laptop-hostname-or-ip>\n\n\nReplace <laptop-hostname-or-ip> with the Tailscale IP (e.g., 100.64.x.x) or hostname of the laptop.\n\n3. Verify\ncurl https://httpbin.org/ip\n\n\nThe response should show the residential IP (the laptop's public IP), not the VPS IP.\n\nAgent Configuration\n\nOnce the exit node is set, all traffic from the VPS routes through the laptop automatically. No proxy configuration needed in your agent code — it's transparent at the network level.\n\nYour agent code doesn't change at all:\n\nimport requests\n\nr = requests.get(\"https://httpbin.org/ip\")\nprint(r.json())  # Shows the residential IP\n\nconst res = await fetch(\"https://httpbin.org/ip\");\nconsole.log(await res.json()); // Shows the residential IP\n\ncurl https://httpbin.org/ip  # Shows the residential IP\n\nPer-process control (optional)\n\nIf you want only specific processes to use the exit node instead of all VPS traffic, you can use Tailscale's --exit-node with app-specific routing or configure HTTPS_PROXY with a local proxy that routes through Tailscale.\n\nAdvanced: Isolation with Tailscale ACLs\n\nFor production setups, use Tailscale ACLs to control which machines can use which exit nodes:\n\n{\n  \"tagOwners\": {\n    \"tag:agent\": [\"autogroup:admin\"],\n    \"tag:exitnode\": [\"autogroup:admin\"]\n  },\n  \"acls\": [\n    {\n      \"action\": \"accept\",\n      \"src\": [\"tag:agent\"],\n      \"dst\": [\"tag:exitnode:*\"]\n    }\n  ]\n}\n\n\nTag your VPS as tag:agent and your laptop as tag:exitnode to restrict access.\n\nAdvanced: Headscale (fully self-hosted)\n\nIf you want zero dependency on Tailscale's coordination server, use Headscale — an open-source, self-hosted implementation of the Tailscale control server.\n\nDeploy Headscale on a server you control\nPoint both nodes to your Headscale instance instead of Tailscale's servers\nEverything else works the same — WireGuard tunnels, exit nodes, ACLs\n\nThis gives you a fully self-hosted solution with no third-party dependencies.\n\nTroubleshooting\nExit node not showing: Make sure you approved it in the admin console\nVPS still shows datacenter IP: Run tailscale status to verify the exit node is connected, then sudo tailscale up --exit-node=<laptop> again\nConnection drops: Check that the laptop has internet access and Tailscale is running\nLaptop went to sleep: Tailscale reconnects automatically when the laptop wakes up, but the VPS will lose internet access while the laptop is offline"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/nicholaslocascio/claw-relay",
    "publisherUrl": "https://clawhub.ai/nicholaslocascio/claw-relay",
    "owner": "nicholaslocascio",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/claw-relay",
    "downloadUrl": "https://openagent3.xyz/downloads/claw-relay",
    "agentUrl": "https://openagent3.xyz/skills/claw-relay/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claw-relay/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claw-relay/agent.md"
  }
}