VibeTunnel: Running Claude Code on iPhone
This runbook covers setting up VibeTunnel to access Claude Code from your iPhone via Tailscale.
Prerequisites
Apple Silicon Mac (M1+) with macOS 14.0+
Homebrew installed
Tailscale account
iPhone with Tailscale app installed
Quick Reference
Dashboard URL (IP)
http://<tailscale-ip>:4020
Dashboard URL (Serve)
https://<hostname>.<tailnet>.ts.net/
Username
Your Mac username
Password
Your Mac login password
Start session
vt claude
Check status
vt status
Step-by-Step Setup
Step 1: Install VibeTunnel
Verify installation:
Step 2: Install Tailscale (if not installed)
Step 3: Configure Tailscale on Mac
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.
Step 6: Configure iPhone
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:
Relaunch the app:
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:
Kill and restart:
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:
Mac:
tailscale statusiPhone: Check Tailscale app shows "Connected"
Verify both devices use the same Tailscale account
Verify VibeTunnel is running:
Test local access first:
Verify the correct IP:
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
whoamito 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:
Restart the session:
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:
Set up Tailscale Serve:
Access via Tailscale hostname (no password needed):
Find your hostname:
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 (
/exitor Ctrl+C)Restart with the
vtwrapper:
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)
Cmd + 1
Switch to session 1
Cmd + 2
Switch to session 2
Cmd + 3-9
Switch to sessions 3-9
Tips for Multiple Sessions
Name your sessions with
vt titleto easily identify themSessions 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
vt status
Check server status and follow mode
vt claude
Start Claude Code with monitoring
vt -i
Start interactive shell
vt <command>
Run any command with monitoring
vt title "Name"
Rename current session
tailscale status
Check Tailscale connection
tailscale ip
Show your Tailscale IP
tailscale serve --bg 4020
Enable Tailscale Serve for VibeTunnel
tailscale serve status
Check Tailscale Serve configuration
tailscale serve reset
Reset Tailscale Serve settings
Architecture Overview
Option A: Direct Tailscale IP Access
Option B: Tailscale Serve (Recommended)
References
VibeTunnel GitHub: https://github.com/amantus-ai/vibetunnel
VibeTunnel Docs: https://docs.vibetunnel.sh
Tailscale: https://tailscale.com
Last updated: 2026-01-03
Last updated
Was this helpful?