Skip to content
Back to skills

Agent Peer Tailscale

CSecurity

Connect two OpenClaw agents running on different machines as peer collaborators via Tailscale VPN. Enables direct sessions_send communication between agents on separate hosts with no public IP, no port forwarding, and no middle server. Use when: (1) two OpenClaw agents on different machines need to collaborate on projects, (2) mentor/peer agent wants to send tips and insights to another agent in real-time, (3) setting up a peer network of OpenClaw agents, (4) two agents need to share session ...

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 9, 2026
securityrustgobashnodesecurity

Security analysis

C71/100
  • criticalPipes output to a shell interpreter
  • mediumUses curl or wget to download content
  • criticalDownloads and executes remote scripts — classic supply chain attack

Pro shows the line behind each finding and how to fix it

Scanned September 9, 2026

npx -y skills add Lord1Egypt/awesome-skill-forge --skill agent-peer-tailscale --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Agent Peer Tailscale?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Agent Peer Tailscale
[![Security: C — Skills Directory](https://www.skillsdirectory.com/api/skills/lord1egypt-agent-peer-tailscale/badge)](https://www.skillsdirectory.com/skills/lord1egypt-agent-peer-tailscale)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: agent-peer-tailscale
description: "Connect two OpenClaw agents running on different machines as peer collaborators via Tailscale VPN. Enables direct sessions_send communication between agents on separate hosts with no public IP, no port forwarding, and no middle server. Use when: (1) two OpenClaw agents on different machines need to collaborate on projects, (2) mentor/peer agent wants to send tips and insights to another agent in real-time, (3) setting up a peer network of OpenClaw agents, (4) two agents need to share session context or delegate work to each other. Triggers on: connect two agents, peer agents, Tailscale VPN, cross-machine agents, agent collaboration VPN, OpenClaw peer network."
---

# Agent Peer via Tailscale

Two OpenClaw agents on different machines — connected as peers over Tailscale VPN. No public IP, no port forwarding, no relay server. Direct `sessions_send` between them as if on the same LAN.

## What You Get

```
Machine A (You)                         Machine B (Friend)
──────────────                          ───────────────
OpenClaw: :8080                         OpenClaw: :8080
Tailscale: 100.x.x.x                    Tailscale: 100.x.x.x
     ↓                                          ↓
     └────────── Tailscale VPN (encrypted) ──────┘
                    ↓
         sessions_send(sessionKey=...,
           gatewayUrl="http://100.x.x.x:8080")
```

Both agents can send messages, session context, tips, and task delegations directly to each other.

## Prerequisites

1. **OpenClaw gateway running** on both machines (local gateway, not node mode)
2. **Tailscale installed** on both machines (free account at tailscale.com)
3. **Both machines on the same Tailscale network** (one creates the network, shares auth key)
4. **Gateway bound to Tailscale interface** (not localhost only)

## Step 1 — Install and Configure Tailscale

### On Machine A (the host)
```bash
# Download and install Tailscale
winget install Tailscale.Tailscale   # Windows
# or: brew install tailscale         # macOS
# or: curl -fsSL https://tailscale.com/install.sh | sh  # Linux

# Start Tailscale and authenticate
tailscale up --accept-routes

# Note the Tailscale IP (write this down for Machine B)
tailscale ip -4
```

### On Machine B (join the network)
```bash
# Install Tailscale the same way
# Then join using the auth key from Machine A's Tailscale admin console
tailscale up --accept-routes --authkey=<authkey-from-machine-a>

# Note your Tailscale IP
tailscale ip -4
```

Both machines now have IPs like `100.x.x.x` on a private encrypted network.

## Step 2 — Configure OpenClaw Gateway for Tailscale

By default, OpenClaw binds to `localhost`. You need it to bind to all interfaces so the peer can reach it over Tailscale.

Check your gateway config:
```bash
openclaw gateway status
```

Set `gateway.bind` to `0.0.0.0` (all interfaces) or specifically the Tailscale IP:
```json
{
  "gateway": {
    "bind": "0.0.0.0",
    "port": 8080
  }
}
```

Apply and restart:
```
openclaw gateway restart
```

**Security note:** Binding to `0.0.0.0` exposes your gateway on all network interfaces. Tailscale traffic is encrypted peer-to-peer, but make sure you have a strong gateway token/password set. Consider `gateway.auth` to require token authentication.

## Step 3 — Exchange Gateway URLs

Once both gateways are reachable over Tailscale, exchange the peer gateway URLs:

**Machine A** tells Machine B:
```
Gateway URL: http://<Machine-A-Tailscale-IP>:8080
Gateway token: <your-gateway-token>
```

**Machine B** tells Machine A:
```
Gateway URL: http://<Machine-B-Tailscale-IP>:8080
Gateway token: <their-gateway-token>
```

## Step 4 — Create Peer Config File

On each machine, create a peer configuration at `peer-agent/peer-config.md`:

**Your config (Machine A):**
```markdown
# My Peer Configuration

My Tailscale IP: <your-tailscale-ip>
My Gateway URL: http://<your-tailscale-ip>:8080
My Gateway Token: <your-token>

# Peer (Machine B)
Peer Name: <friend's-name>
Peer Tailscale IP: <their-tailscale-ip>
Peer Gateway URL: http://<their-tailscale-ip>:8080
Peer Gateway Token: <their-token>

# How to reach my agent
# Use sessions_send with the gatewayUrl pointing to my gateway above.
# My agentId for direct targeting: <your-agent-id>
```

## Step 5 — Test the Connection

From Machine A, test reaching Machine B's gateway:
```bash
# Ping the peer's gateway over Tailscale
curl http://<peer-tailscale-ip>:8080/health --connect-timeout 5
```

You should get a health response. If not, check that the peer's gateway is bound to `0.0.0.0` and their firewall allows incoming on port 8080 from the Tailscale network.

## Step 6 — Send Messages Between Agents

Once connectivity is confirmed, use `sessions_send` with `gatewayUrl` pointing to the peer:

```json
sessions_send(
  sessionKey="<peer-session-key>",
  agentId="<peer-agent-id>",
  message="Hey, need your take on something — I'm stuck on...",
  gatewayUrl="http://<peer-tailscale-ip>:8080",
  gatewayToken="<peer-gateway-token>"
)
```

## Daily Collaboration Patterns

### Pattern 1: Morning Handoff
Each morning, each agent sends the other a brief status update:
```
sessions_send(
  message="Morning! Here's where I'm at: [project status]. Blockers: [if any]. 
   Any insights on [specific problem]?",
  gatewayUrl="http://<peer-ip>:8080",
  gatewayToken="<peer-token>"
)
```

### Pattern 2: Quick Insight
When one agent learns something useful:
```
"Something I learned today that might help you: [insight]"
```

### Pattern 3: Code/Review Request
```
"Can you review my approach to [task]? Here it is: [description]. 
 Is there a better pattern I'm missing?"
```

### Pattern 4: Delegation
```
"I've got a task that's more your specialty — want to delegate this to you? [task details].
 Let me know if you have capacity."
```

## Reference Files

- `references/tailscale-setup.md` — detailed Tailscale install, network setup, auth key sharing
- `references/peer-communication.md` — message format, frequency, session management
- `references/troubleshooting.md` — NAT, firewall, connection issues
- `scripts/peer_config.py` — interactive config generator for the peer setup

## Security Notes

- **Tailscale is encrypted end-to-end** — no one on the internet can see the traffic
- **Gateway token is required** — don't share your gateway token in plain text over an unsecured channel; use a private message or password manager
- **Only share with people you trust** — the peer can send messages that execute as your agent
- **Revoke auth keys** from the Tailscale admin console if the friendship ends
- **Consider `gateway.access`** — restrict which sessions can be targeted from peers

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…