
Turn any browser into your Mac terminal.
VibeTunnel proxies your terminals right into the browser, so you can vibe-code anywhere.
Documentation • Releases • Discord • Twitter
Ever wanted to check on your AI agents while you're away? Need to monitor that long-running build from your phone? Want to share a terminal session with a colleague without complex SSH setups? VibeTunnel makes it happen with zero friction.
The native macOS app provides the best experience with menu bar integration and automatic updates.
For Linux servers, Docker containers, or headless macOS systems, install via npm:
npm install -g vibetunnel
This gives you the full VibeTunnel server with web UI, just without the macOS menu bar app. See the npm Package section for detailed usage.
macOS App: Requires an Apple Silicon Mac (M1+). Intel Macs are not supported for the native app.
npm Package: Works on Node.js 22.12 through 24.x, including Intel Macs and Linux. Windows is not yet supported (#252).
Download VibeTunnel and drag it to your Applications folder.
brew install --cask vibetunnel
VibeTunnel lives in your menu bar. Click the icon to start the server.
vt CommandThe vt command is a smart wrapper that forwards your terminal sessions through VibeTunnel:
How it works:
- vt is a bash script that internally calls vibetunnel fwd to forward terminal output
- It provides additional features like shell alias resolution and session title management
- Available from both the Mac app and npm package installations
Installation sources:
- macOS App: Installs the vt wrapper script at /usr/local/bin/vt during installation
- npm Package: Installs vt globally, with intelligent Mac app detection
Smart detection:
When you run vt from the npm package, it:
1. Checks if the Mac app is installed at /Applications/VibeTunnel.app
2. If found, forwards to the Mac app's vt for the best experience
3. If not found, uses the npm-installed vibetunnel fwd
4. This ensures vt always uses the best available implementation
# Run any command in the browser
vt pnpm run dev
vt npm test
vt python script.py
# Use your shell aliases
vt gs # Your 'git status' alias works!
vt claude-danger # Custom aliases are resolved
# Open an interactive shell
vt --shell # or vt -i
# Git follow mode
vt follow # Follow current branch
vt follow main # Switch to main and follow
vt unfollow # Stop following
# For more examples and options, see "The vt Forwarding Command" section below
When opening a new session for the first time, VibeTunnel's working directory scanner will look for Git repositories. By default, this scans your home directory, which may trigger macOS permission prompts for accessing protected folders (like Desktop, Documents, Downloads, iCloud Drive, or external volumes).
To avoid these prompts: - Option 1: Navigate to your actual projects directory before opening a session - Option 2: Accept the one-time permission prompts (they won't appear again)
This only happens on the first session when the scanner discovers your Git repositories. For more details about macOS privacy-protected folders, see this explanation.
Visit http://localhost:4020 to see all your terminal sessions.
Note: The iOS app is still work in progress and not recommended for production use yet.
VibeTunnel consists of three main components:
The server runs as a standalone Node.js executable with embedded modules, providing excellent performance and minimal resource usage.
Tailscale creates a secure peer-to-peer VPN network between your devices. It's the most secure option as traffic stays within your private network without exposing VibeTunnel to the public internet.
How it works: Tailscale creates an encrypted WireGuard tunnel between your devices, allowing them to communicate as if they were on the same local network, regardless of their physical location.
tailscale status (e.g., my-mac.tailnet-name.ts.net)http://[your-tailscale-hostname]:4020VibeTunnel detects standard CLI locations and nix-darwin system/user profiles, and falls back to tailscale status --json when the macOS app API is unavailable.
VibeTunnel now supports advanced Tailscale integration with Private and Public access modes:
https://[your-machine-name].[tailnet-name].ts.netTo use Public mode, you need to enable Funnel on your tailnet:
Enable Funnel for your tailnet by adding this ACL policy in the Tailscale Admin Console:
json
"nodeAttrs": [
{
"target": ["autogroup:member"], // All members of your tailnet
"attr": ["funnel"],
},
],
Switch between modes in VibeTunnel:
Both Private and Public modes automatically provide HTTPS access: - Tailscale Serve creates an HTTPS proxy to VibeTunnel's local server - SSL certificates are managed automatically by Tailscale - No manual certificate configuration needed - WebSocket connections work seamlessly over HTTPS/WSS
Benefits:
- End-to-end encrypted traffic
- Automatic HTTPS with valid certificates
- Works behind NAT and firewalls
- Zero configuration after initial setup
- Flexible access control - choose between private tailnet or public internet access
- No port forwarding required
"Tailscale Serve unavailable - using fallback mode": This is normal if you don't have Tailscale admin permissions. VibeTunnel will work perfectly using direct HTTP access at http://[your-tailscale-hostname]:4020.
"Applying mode configuration...": When switching between Private and Public modes, it may take a few seconds for Tailscale to reconfigure. This is normal.
"Funnel requires admin permissions": You need to be a tailnet admin to enable Funnel. Contact your tailnet admin or create your own tailnet if needed.
WebSocket connections fail: Make sure you're using the HTTPS URL when accessing VibeTunnel through Tailscale Serve. The WebSocket authentication tokens are automatically handled.
ngrok creates secure tunnels to your localhost, making VibeTunnel accessible via a public URL. Perfect for quick sharing or temporary access.
How it works: ngrok establishes a secure tunnel from a public endpoint to your local VibeTunnel server, handling SSL/TLS encryption and providing a unique URL for access.
Setup Guide:
1. Create a free ngrok account: Sign up for ngrok
2. Copy your auth token from the ngrok dashboard
3. Add the token in VibeTunnel settings (Settings → Remote Access → ngrok)
4. Enable ngrok tunneling in VibeTunnel
5. Share the generated https://[random].ngrok-free.app URL
Benefits: - Public HTTPS URL with SSL certificate - No firewall configuration needed - Built-in request inspection and replay
$ claude mcp add vibetunnel \
-- python -m otcore.mcp_server <graph>