This runbook covers setting up VibeTunnel to access Claude Code from your iPhone via Tailscale.
Apple Silicon Mac (M1+) with macOS 14.0+
iPhone with Tailscale app installed
Quick Reference
http://<tailscale-ip>:4020
https://<hostname>.<tailnet>.ts.net/
Step-by-Step Setup
Step 1: Install VibeTunnel
Verify installation:
Step 2: Install Tailscale (if not installed)
Log out of any stale session:
Log in:
This opens a browser for authentication.
Verify connection and get your Tailscale IP:
Note the IP address (e.g., 100.x.x.x).
Step 4: Start VibeTunnel
Launch the VibeTunnel app:
Verify the server is running:
Expected output:
Step 5: Start Claude Code Session
This starts Claude Code with VibeTunnel monitoring, making it visible in the dashboard.
Install Tailscale from the App Store
Log in with the same Tailscale account as your Mac
Enable the VPN connection when prompted
Open Safari and navigate to:
Example: http://100.x.x.x:4020
Step 7: Authenticate
When prompted for credentials:
Username: Your Mac username (e.g., michi)
Password: Your Mac login password
Common Issues and Solutions
Issue 1: Tailscale Login Fails - "Device already exists"
Error:
Solution:
Issue 2: VibeTunnel Server Not Running
Symptom:
Solution:
Kill any existing VibeTunnel processes:
Wait a few seconds and check status:
Issue 3: Menu Bar Icon Not Visible
Symptom: VibeTunnel app is running but no menu bar icon appears.
Solution:
The app may be running without the GUI component. Check processes:
Wait for the server to start (may take a few seconds).
Issue 4: Cannot Connect from iPhone
Symptom: Safari shows "cannot connect to server"
Checklist:
Verify Tailscale is connected on both devices:
iPhone: Check Tailscale app shows "Connected"
Verify both devices use the same Tailscale account
Verify VibeTunnel is running:
Issue 5: "Invalid Username or Password"
Symptom: Login page rejects credentials.
Solution:
VibeTunnel uses your Mac system credentials, not Tailscale or Google account.
Username: Your Mac username (run whoami to check)
Password: Your Mac login password (the one used to unlock your Mac)
To find your username:
Issue 6: Dashboard Loads but No Sessions Visible
Symptom: Dashboard is accessible but shows no terminal sessions.
Solution:
Sessions must be started with the vt wrapper:
Issue 7: Session Disconnects or Freezes
Solution:
Check if the Mac went to sleep (disable sleep during long sessions)
Verify Tailscale connection is still active:
Issue 8: Login Fails After VibeTunnel Restart
Symptom: Mac username/password no longer works after restarting VibeTunnel.
Cause: VibeTunnel may have restarted with --enable-tailscale-serve mode, which uses different authentication.
Diagnosis:
Look for --enable-tailscale-serve or --bind 127.0.0.1 in the output.
Solution - Use Tailscale Serve:
Access via Tailscale hostname (no password needed):
Issue 9: Claude Code Running but 0 Active Sessions
Symptom: Claude Code is running in terminal, but VibeTunnel dashboard shows 0 sessions.
Cause: Claude Code was started with claude instead of vt claude.
Diagnosis:
If no output, sessions aren't being tracked by VibeTunnel.
Solution:
Exit your current Claude Code sessions (/exit or Ctrl+C)
Restart with the vt wrapper:
Important: Always use vt claude instead of just claude when you want remote access.
Issue 10: Tailscale Serve Conflicts
Symptom:
Solution:
Debugging Commands
Quick commands to diagnose issues:
Managing Multiple Sessions
Running Multiple Claude Code Sessions
Start multiple sessions from different terminal windows on your Mac:
Naming Sessions for Easy Identification
From within an active vt session, rename it:
Switching Sessions on iPhone
Open the VibeTunnel dashboard in Safari
You'll see a list of all active sessions with their names and status
Tap on any session to switch to it
Sessions show activity status (active/idle) to help identify which is which
Keyboard Shortcuts (iPad with keyboard)
Tips for Multiple Sessions
Name your sessions with vt title to easily identify them
Sessions persist even if you close the browser - just reconnect to the dashboard
Each session runs independently - you can have different projects in each
Issue: All Sessions Show Same Name
Symptom: Running Claude Code from different directories but all sessions show the same name (e.g., all show ~/.claude).
Cause: VibeTunnel uses the command name (claude) as the default title, not the working directory.
Solution: Rename each session from within it:
After renaming, refresh the iPhone dashboard to see the updated names.
Useful Commands
Check server status and follow mode
Start Claude Code with monitoring
Run any command with monitoring
Check Tailscale connection
tailscale serve --bg 4020
Enable Tailscale Serve for VibeTunnel
Check Tailscale Serve configuration
Reset Tailscale Serve settings
Architecture Overview
Option A: Direct Tailscale IP Access
Option B: Tailscale Serve (Recommended)
VibeTunnel GitHub: https://github.com/amantus-ai/vibetunnel
VibeTunnel Docs: https://docs.vibetunnel.sh
Tailscale: https://tailscale.com
Last updated: 2026-01-03