Tailscale
Manage Tailscale tailnet via CLI and API. Use when the user asks to "check tailscale status", "list tailscale devices", "ping a device", "send file via tailscale", "tailscale funne…
jmagar
@jmagar
What This Skill Does
CLI and API tool for managing a Tailscale tailnet. Performs local operations like status checks, pings, file transfers, and service exposure, plus tailnet-wide management such as listing devices, creating auth keys, and configuring ACLs.
Replaces manually navigating the Tailscale admin console for common tasks by providing direct CLI commands and API scripts for both local and tailnet-wide operations.
When to Use It
- Check the status of all devices on the tailnet
- Send a file from one device to another via Taildrop
- Expose a local web service publicly using Tailscale Funnel
- Create a reusable or ephemeral auth key for a new device
- Ping a peer to determine if the connection is direct or relayed
- List all devices with details and check who is currently online
Install
$ openclaw skills install @jmagar/tailscaleTailscale Skill
Hybrid skill using CLI for local operations and API for tailnet-wide management.
Setup
API config (optional, for tailnet-wide operations): ~/.clawdbot/credentials/tailscale/config.json
{
"apiKey": "tskey-api-k...",
"tailnet": "-"
}
Get your API key from: Tailscale Admin Console → Settings → Keys → Generate API Key
The tailnet can be - (auto-detect), your org name, or email domain.
Local Operations (CLI)
These work on the current machine only.
Status & Diagnostics
# Current status (peers, connection state)
tailscale status
tailscale status --json | jq '.Peer | to_entries[] | {name: .value.HostName, ip: .value.TailscaleIPs[0], online: .value.Online}'
# Network diagnostics (NAT type, DERP, UDP)
tailscale netcheck
tailscale netcheck --format=json
# Get this machine's Tailscale IP
tailscale ip -4
# Identify a Tailscale IP
tailscale whois 100.x.x.x
Connectivity
# Ping a peer (shows direct vs relay)
tailscale ping <hostname-or-ip>
# Connect/disconnect
tailscale up
tailscale down
# Use an exit node
tailscale up --exit-node=<node-name>
tailscale exit-node list
tailscale exit-node suggest
File Transfer (Taildrop)
# Send files to a device
tailscale file cp myfile.txt <device-name>:
# Receive files (moves from inbox to directory)
tailscale file get ~/Downloads
tailscale file get --wait ~/Downloads # blocks until file arrives
Expose Services
# Share locally within tailnet (private)
tailscale serve 3000
tailscale serve https://localhost:8080
# Share publicly to internet
tailscale funnel 8080
# Check what's being served
tailscale serve status
tailscale funnel status
SSH
# SSH via Tailscale (uses MagicDNS)
tailscale ssh user@hostname
# Enable SSH server on this machine
tailscale up --ssh
Tailnet-Wide Operations (API)
These manage your entire tailnet. Requires API key.
List All Devices
./scripts/ts-api.sh devices
# With details
./scripts/ts-api.sh devices --verbose
Device Details
./scripts/ts-api.sh device <device-id-or-name>
Check Online Status
# Quick online check for all devices
./scripts/ts-api.sh online
Authorize/Delete Device
./scripts/ts-api.sh authorize <device-id>
./scripts/ts-api.sh delete <device-id>
Device Tags & Routes
./scripts/ts-api.sh tags <device-id> tag:server,tag:prod
./scripts/ts-api.sh routes <device-id>
Auth Keys
# Create a reusable auth key
./scripts/ts-api.sh create-key --reusable --tags tag:server
# Create ephemeral key (device auto-removes when offline)
./scripts/ts-api.sh create-key --ephemeral
# List keys
./scripts/ts-api.sh keys
DNS Management
./scripts/ts-api.sh dns # Show DNS config
./scripts/ts-api.sh dns-nameservers # List nameservers
./scripts/ts-api.sh magic-dns on|off # Toggle MagicDNS
ACLs
./scripts/ts-api.sh acl # Get current ACL
./scripts/ts-api.sh acl-validate <file> # Validate ACL file
Common Use Cases
"Who's online right now?"
./scripts/ts-api.sh online
"Send this file to my phone"
tailscale file cp document.pdf my-phone:
"Expose my dev server publicly"
tailscale funnel 3000
"Create a key for a new server"
./scripts/ts-api.sh create-key --reusable --tags tag:server --expiry 7d
"Is the connection direct or relayed?"
tailscale ping my-server
Top skills in this category
Prompt Guard
@seojoonkim650+ pattern AI agent security defense covering prompt injection, supply chain injection, memory poisoning, action gate bypass, unicode steganography, cascad...
Google Search Console
@jdrhyneQuery Google Search Console for SEO data - search queries, top pages, CTR opportunities, URL inspection, and sitemaps. Use when analyzing search performance,...
Anti-Injection-Skill
@georges91560Detect prompt injection, jailbreak, role-hijack, and system extraction attempts. Applies multi-layer defense with semantic analysis and penalty scoring.
Feishu Bridge
@alexanysConnect a Feishu (Lark) bot to Clawdbot via WebSocket long-connection. No public server, domain, or ngrok required. Use when setting up Feishu/Lark as a messaging channel, troubleshooting the Feishu bridge, or managing the bridge service (start/stop/logs). Covers bot creation on Feishu Open Platform, credential setup, bridge startup, macOS launchd auto-restart, and group chat behavior tuning.
Safe Exec
@otttttoSafe command execution for OpenClaw Agents with automatic danger pattern detection, risk assessment, user approval workflow, and audit logging. Use when agen...