Last Updated: January 2026 Clawdbot Version: 2026.1.24-3+ Applies To: Self-hosted Clawdbot with remote access needs
Setting up secure remote access for your self-hosted Clawdbot using Tailscale Serve. This guide covers the configuration conflicts, security model, and troubleshooting steps that aren't fully documented in the beta docs yet.
What you'll get:
- ✅ Access your Clawdbot from anywhere on your Tailscale network
- ✅ Two-layer security (Tailscale auth + Clawdbot device pairing)
- ✅ No port forwarding or public exposure needed
- ✅ HTTPS encryption via Tailscale
- Tailscale account and client installed
- Clawdbot installed and working locally
- Basic familiarity with JSON configuration files
Symptom:
Gateway failed to start: Error: tailscale serve/funnel requires gateway bind=loopback (127.0.0.1)
Root Cause:
You can't use gateway.bind: "lan" (listens on all interfaces) with tailscale.mode: "serve". Tailscale Serve requires the service to be bound to loopback for security.
Symptom:
WebSocket disconnected (1008): pairing required
Root Cause: Clawdbot uses a two-layer security model. Even with Tailscale authentication, each device needs explicit approval via Clawdbot's device pairing system.
Edit your ~/.clawdbot/clawdbot.json:
{
"gateway": {
"port": 18789,
"mode": "local",
"bind": "loopback",
"trustedProxies": ["127.0.0.1", "::1", "100.0.0.0/8", "fd7a:115c:a1e0::/48"],
"tailscale": {
"mode": "serve",
"resetOnExit": false
}
}
}Key Changes Explained:
bind: "loopback"- Gateway only listens on 127.0.0.1 (required for Tailscale Serve)trustedProxies- Allows Tailscale to forward client IP addresses properly127.0.0.1,::1- Local loopback addresses100.0.0.0/8- Tailscale IPv4 CGNAT rangefd7a:115c:a1e0::/48- Replace with your Tailscale IPv6 range (see below)
tailscale.mode: "serve"- Enables Tailscale serve integration
Find Your IPv6 Range: Run
tailscale statusand look for IPv6 addresses starting withfd7a. Use that /48 prefix.
clawdbot gateway restartFirst time setup requires authorization:
tailscale serve --bg --yes 18789If you get a "Serve is not enabled" error:
- Visit the authorization URL shown in the error message
- Approve Tailscale Serve for your machine
- Retry the command above
Verify it's working:
tailscale serve statusShould show:
https://your-machine.tail[XXXXX].ts.net (tailnet only)
|-- / proxy http://127.0.0.1:18789
- Attempt to connect via your Tailscale URL:
https://your-machine.tail[XXXXX].ts.net - You'll see "pairing required" - this is expected!
- Access locally to approve:
http://127.0.0.1:18789 - Navigate to device management in the UI and approve the pending pairing request
- Refresh the remote browser - connection should now work
Once a device is paired, it connects immediately without further approval needed.
Layer 1: Network (Tailscale)
- Only devices on your Tailscale network can reach the gateway
- End-to-end encrypted WireGuard connections
- Managed via Tailscale ACLs and device authentication
Layer 2: Application (Clawdbot Device Pairing)
- Each browser/device must be explicitly approved
- Prevents unauthorized access even from compromised Tailscale devices
- Maintains control over who can use your AI assistant
Benefits:
- ✅ No direct network exposure (gateway invisible on LAN)
- ✅ Tailscale handles encryption automatically
- ✅ No port forwarding or firewall configuration needed
- ✅ Works from anywhere on your Tailscale network
- ✅ No public IP exposure
Alternative (Not Recommended):
bind: "lan"+ manual firewall + gateway auth tokens- More complex, less secure, harder to maintain
Check configuration:
clawdbot doctor
clawdbot doctor --fix # Auto-repair common issuesCommon problems:
- Invalid JSON syntax in config file
- Port 18789 already in use by another service
- Missing or incorrect Tailscale configuration
Check for pending requests:
cat ~/.clawdbot/devices/pending.jsonApprove via local UI:
- Access
http://127.0.0.1:18789from the same machine - Look for device management/pairing section
- Approve any pending requests
Verify device is paired:
cat ~/.clawdbot/devices/paired.jsonVerify Tailscale status:
tailscale statusCheck/reconfigure serve:
tailscale serve status
# If needed, reset and reconfigure:
tailscale serve --https=443 off
tailscale serve --bg --yes 18789Ensure your trustedProxies includes the correct Tailscale IP ranges:
Find your ranges:
tailscale status
# Look for IP addresses:
# IPv4: typically 100.x.x.x
# IPv6: typically fd7a:115c:a1e0::xxxxUpdate the config with your specific IPv6 range.
clawdbot gateway status
clawdbot status --allcurl http://127.0.0.1:18789/
# Should return HTML (the control UI)Open: https://your-machine.tail[XXXXX].ts.net
- First time: Shows pairing requirement
- After approval: Full access to control UI
# Live gateway logs
tail -f ~/.clawdbot/logs/gateway.log
# Error logs
tail -f ~/.clawdbot/logs/gateway.err.log- Local access:
http://127.0.0.1:18789/ - Tailscale access:
https://your-machine.tail[XXXXX].ts.net/ - Find your URL:
tailscale serve status
# Gateway management
clawdbot gateway status
clawdbot gateway restart
clawdbot doctor
# Tailscale
tailscale status
tailscale serve status
tailscale serve --bg --yes 18789
# Logs & diagnostics
clawdbot logs --follow
clawdbot status --all- Main config:
~/.clawdbot/clawdbot.json - Device pairings:
~/.clawdbot/devices/ - Logs:
~/.clawdbot/logs/
- Set up mobile access - Your Tailscale mobile app can now reach the assistant
- Configure additional channels - WhatsApp, Telegram, Discord, etc.
- Review security settings - Run
clawdbot security auditregularly - Backup your config - Keep
clawdbot.jsonanddevices/folders backed up
When things go wrong, check these in order:
- Gateway is running:
clawdbot gateway status - Tailscale is connected:
tailscale status - Serve is configured:
tailscale serve status - Config is valid:
clawdbot doctor - No port conflicts:
lsof -i :18789 - Permissions are correct:
ls -la ~/.clawdbot/ - Recent logs:
tail -f ~/.clawdbot/logs/gateway.err.log
This guide covers the beta version of Clawdbot (2026.1.24-3). Configuration options and steps may change as the software stabilizes.
Found this helpful? Consider contributing improvements back to the official Clawdbot documentation.
Issues? Check the Clawdbot docs and community resources for updates.
Created by the community - Last updated: January 2026%