tailscale-setup
First-time Tailscale mesh network configuration for bridgey. Updates daemon binding for tailnet access and runs initial peer scan.
bridgey Tailscale Setup
Configure bridgey for Tailscale mesh network discovery.
Steps
-
Check Tailscale is running: Run
tailscale statusvia Bash. If it fails, tell the user to install Tailscale (https://tailscale.com/download) or runtailscale up. -
Find bridgey config: Look for bridgey's config at
~/.bridgey/bridgey.config.jsonor check the bridgey plugin'sbridgey.config.json. If not found, tell the user to run/bridgey:setupfirst. -
Update bridgey daemon binding: Read the bridgey config file. Update two fields:
- Set
bindto"0.0.0.0" - Set
"trusted_networks"— merge Tailscale CIDR with any existing entries:- Always add:
"100.64.0.0/10"(Tailscale IPs) - If running in Docker, also add:
"172.16.0.0/12"and"10.0.0.0/8"(Docker bridge/overlay) Write the updated config back. Explain to the user: "This binds your bridgey daemon to all interfaces but only accepts unauthenticated connections from Tailscale IPs (100.64.0.0/10). Other sources still need a bearer token."
- Always add:
- Set
-
Restart bridgey daemon: Stop and start the daemon (if dist/daemon.js is missing, run
npm run buildfrom plugins/bridgey/ first):node ${CLAUDE_PLUGIN_ROOT}/dist/daemon.js stop node ${CLAUDE_PLUGIN_ROOT}/dist/daemon.js start --config <config-path>Verify it restarted successfully:
curl -s http://localhost:<port>/health | jq .Expected:
{"status":"ok",...}. If it fails, check~/.bridgey/daemon.logfor errors. -
Write tailscale config: Create
~/.bridgey/tailscale.config.jsonwith defaults:{ "bridgey_port": <port from bridgey config>, "probe_timeout_ms": 2000, "exclude_peers": [], "scan_on_session_start": true } -
Run first scan: Use the
tailscale_scanMCP tool to discover peers. Display the results. -
Remind the user: Other devices on the tailnet also need bridgey with Tailscale configured to be discoverable. Tell them to run
/bridgey:tailscale-setupon each device.