No description
Find a file
2025-06-22 14:37:44 +02:00
.github fix: Update CI workflows to use global Apple workspace 2025-06-22 14:33:13 +02:00
apple Move files to apple subdir 2025-06-22 14:35:42 +02:00
assets update and add assets 2025-06-21 16:11:34 +02:00
docs Add global Apple workspace 2025-06-22 14:27:38 +02:00
ios Move files to apple subdir 2025-06-22 14:35:42 +02:00
mac Move files to apple subdir 2025-06-22 14:35:42 +02:00
VibeTunnel.xcworkspace Add global Apple workspace 2025-06-22 14:27:38 +02:00
web fix: remove debug logging from cli.ts 2025-06-22 14:21:34 +02:00
.gitattributes Add .gitattributes to normalize line endings to LF 2025-06-19 17:44:30 +02:00
.github-config Add macOS app foundation with release infrastructure (#1) 2025-06-15 23:14:29 +02:00
.gitignore ignore test result files 2025-06-22 11:53:00 +02:00
appcast-prerelease.xml Fix appcast changelog extraction for beta releases 2025-06-19 15:00:21 +02:00
appcast.xml Update appcast for 1.0-beta.1 2025-06-17 03:09:23 +02:00
CHANGELOG.md Bump version to 1.0.0-beta.2 2025-06-19 02:51:22 +02:00
CLAUDE.md refactor: improve PTY manager cleanup and fwd.ts architecture 2025-06-22 14:16:06 +02:00
LICENSE Initial commit 2025-06-15 19:56:11 +02:00
README.md Add note about local ID 2025-06-22 14:37:44 +02:00

VibeTunnel Banner

VibeTunnel

Turn any browser into your Mac terminal. VibeTunnel proxies your terminals right into the browser, so you can vibe-code anywhere.

Download License macOS 14.0+ Apple Silicon

Why VibeTunnel?

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.

Quick Start

Requirements

VibeTunnel requires an Apple Silicon Mac (M1+). Intel Macs are not supported.

1. Download & Install

Download VibeTunnel and drag it to your Applications folder.

2. Launch VibeTunnel

VibeTunnel lives in your menu bar. Click the icon to start the server.

3. Use the vt Command

# Run any command in the browser
vt npm run dev

# Monitor AI agents
vt claude --dangerously-skip-permissions

# Open an interactive shell
vt --shell

4. Open Your Dashboard

Visit http://localhost:4020 to see all your terminal sessions.

Features

  • 🌐 Browser-Based Access - Control your Mac terminal from any device with a web browser
  • 🚀 Zero Configuration - No SSH keys, no port forwarding, no complexity
  • 🤖 AI Agent Friendly - Perfect for monitoring Claude Code, ChatGPT, or any terminal-based AI tools
  • 🔒 Secure by Design - Password protection, localhost-only mode, or secure tunneling via Tailscale/ngrok
  • 📱 Mobile Ready - Native iOS app and responsive web interface for phones and tablets
  • 🎬 Session Recording - All sessions recorded in asciinema format for later playback
  • High Performance - Powered by Bun runtime for blazing-fast JavaScript execution
  • 🍎 Apple Silicon Native - Optimized for M1/M2/M3 Macs with ARM64-only binaries

Architecture

VibeTunnel consists of three main components:

  1. macOS Menu Bar App - Native Swift application that manages the server lifecycle
  2. Node.js/Bun Server - High-performance TypeScript server handling terminal sessions
  3. Web Frontend - Modern web interface using Lit components and xterm.js

The server runs as a standalone Bun executable with embedded Node.js modules, providing excellent performance and minimal resource usage.

Remote Access Options

  1. Install Tailscale on your Mac and remote device
  2. Access VibeTunnel at http://[your-mac-name]:4020

Option 2: ngrok

  1. Add your ngrok auth token in VibeTunnel settings
  2. Enable ngrok tunneling
  3. Share the generated URL

Option 3: Local Network

  1. Set a dashboard password in settings
  2. Switch to "Network" mode
  3. Access via http://[your-mac-ip]:4020

Building from Source

Prerequisites

  • macOS 14.0+ (Sonoma) on Apple Silicon (M1/M2/M3)
  • Xcode 16.0+
  • Node.js 20+
  • Bun runtime

Build Steps

# Clone the repository
git clone https://github.com/amantus-ai/vibetunnel.git
cd vibetunnel

# Set up code signing (required for macOS/iOS development)
# Copy the template and add your Apple Developer Team ID
cp apple/Local.xcconfig.template apple/Local.xcconfig
# Edit apple/Local.xcconfig and set DEVELOPMENT_TEAM = YOUR_TEAM_ID

# Build the web server
cd web
npm install
npm run build
node build-native.js  # Creates Bun executable

# Build the macOS app
cd ../mac
./scripts/build.sh --configuration Release

Development

For development setup and contribution guidelines, see CONTRIBUTING.md.

Key Files

  • macOS App: mac/VibeTunnel/VibeTunnelApp.swift
  • Server: web/src/server/ (TypeScript/Node.js)
  • Web UI: web/src/client/ (Lit/TypeScript)
  • iOS App: ios/VibeTunnel/

Documentation

macOS Permissions

macOS is finicky when it comes to permissions. The system will only remember the first path from where an app requests permissions. If subsequently the app starts somewhere else, it will silently fail. Fix: Delete the entry and restart settings, restart app and next time the permission is requested, there should be an entry in Settings again.

Important: You need to set your Developer ID in Local.xcconfig. If apps are signed Ad-Hoc, each new signing will count as a new app for macOS and the permissions have to be (deleted and) requested again.

If that fails, use the terminal to reset:

# This removes Accessibility permission for a specific bundle ID:
sudo tccutil reset Accessibility sh.vibetunnel.vibetunnel

sudo tccutil reset ScreenCapture sh.vibetunnel.vibetunnel

# This removes all Automation permissions system-wide (cannot target specific apps):
sudo tccutil reset AppleEvents

Credits

Created with ❤️ by:

License

VibeTunnel is open source software licensed under the MIT License. See LICENSE for details.


Ready to vibe? Download VibeTunnel and start tunneling!