mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-25 09:25:50 +00:00
🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
6.1 KiB
6.1 KiB
VibeTunnel Linux
A Linux implementation of VibeTunnel that provides remote terminal access via web browser, fully compatible with the macOS VibeTunnel app.
Features
- 🖥️ Remote Terminal Access: Access your Linux terminal from any web browser
- 🔒 Secure: Optional password protection and localhost-only mode
- 🌐 Network Ready: Support for both localhost and network access modes
- 🔌 ngrok Integration: Easy external access via ngrok tunnels
- 📱 Mobile Friendly: Responsive web interface works on phones and tablets
- 🎬 Session Recording: All sessions recorded in asciinema format
- ⚡ Real-time: Live terminal streaming with proper escape sequence handling
- 🛠️ CLI Compatible: Full command-line interface for session management
Quick Start
Build from Source
# Clone the repository (if not already done)
git clone <repository-url>
cd vibetunnel/linux
# Build web assets and binary
make web build
# Start the server
./build/vibetunnel --serve
Using the Pre-built Binary
# Download latest release
wget <release-url>
chmod +x vibetunnel
# Start server on localhost:4020
./vibetunnel --serve
# Or with password protection
./vibetunnel --serve --password mypassword
# Or accessible from network
./vibetunnel --serve --network
Installation
System-wide Installation
make install
User Installation
make install-user
As a Service (systemd)
make service-install
make service-enable
make service-start
Usage
Server Mode
Start the web server to access terminals via browser:
# Basic server (localhost only)
vibetunnel --serve
# Server with password protection
vibetunnel --serve --password mypassword
# Server accessible from network
vibetunnel --serve --network
# Custom port
vibetunnel --serve --port 8080
# With ngrok tunnel
vibetunnel --serve --ngrok --ngrok-token YOUR_TOKEN
# Disable terminal spawning (detached sessions only)
vibetunnel --serve --no-spawn
Access the dashboard at http://localhost:4020 (or your configured port).
Session Management
Create and manage terminal sessions:
# List all sessions
vibetunnel --list-sessions
# Create a new session
vibetunnel bash
vibetunnel --session-name "dev" zsh
# Send input to a session
vibetunnel --session-name "dev" --send-text "ls -la\n"
vibetunnel --session-name "dev" --send-key "C-c"
# Kill a session
vibetunnel --session-name "dev" --kill
# Clean up exited sessions
vibetunnel --cleanup-exited
Configuration
VibeTunnel supports configuration files for persistent settings:
# Show current configuration
vibetunnel config
# Use custom config file
vibetunnel --config ~/.config/vibetunnel.yaml --serve
Example configuration file (~/.vibetunnel/config.yaml):
control_path: /home/user/.vibetunnel/control
server:
port: "4020"
access_mode: "localhost" # or "network"
static_path: ""
mode: "native"
security:
password_enabled: true
password: "mypassword"
ngrok:
enabled: false
auth_token: ""
advanced:
debug_mode: false
cleanup_startup: true
preferred_terminal: "auto"
update:
channel: "stable"
auto_check: true
Command Line Options
Server Options
--serve: Start HTTP server mode--port, -p: Server port (default: 4020)--localhost: Bind to localhost only (127.0.0.1)--network: Bind to all interfaces (0.0.0.0)--static-path: Custom path for web UI files
Security Options
--password: Dashboard password for Basic Auth--password-enabled: Enable password protection
ngrok Integration
--ngrok: Enable ngrok tunnel--ngrok-token: ngrok authentication token
Session Management
--list-sessions: List all sessions--session-name: Specify session name--send-key: Send key sequence to session--send-text: Send text to session--signal: Send signal to session--stop: Stop session (SIGTERM)--kill: Kill session (SIGKILL)--cleanup-exited: Clean up exited sessions
Advanced Options
--debug: Enable debug mode--cleanup-startup: Clean up sessions on startup--server-mode: Server mode (native, rust)--no-spawn: Disable terminal spawning (creates detached sessions only)--control-path: Control directory path--config, -c: Configuration file path
Web Interface
The web interface provides:
- Dashboard: Overview of all terminal sessions
- Terminal View: Real-time terminal interaction
- Session Management: Start, stop, and manage sessions
- File Browser: Browse filesystem (if enabled)
- Session Recording: Playback of recorded sessions
Compatibility
VibeTunnel Linux is designed to be 100% compatible with the macOS VibeTunnel app:
- Same API: Identical REST API and WebSocket endpoints
- Same Web UI: Uses the exact same web interface
- Same Session Format: Compatible asciinema recording format
- Same Configuration: Similar configuration options and structure
Development
Prerequisites
- Go 1.21 or later
- Node.js and npm (for web UI)
- Make
Building
# Install dependencies
make deps
# Build web assets
make web
# Build binary
make build
# Run in development mode
make dev
# Run tests
make test
# Format and lint code
make check
Project Structure
linux/
├── cmd/vibetunnel/ # Main application
├── pkg/
│ ├── api/ # HTTP server and API endpoints
│ ├── config/ # Configuration management
│ ├── protocol/ # Asciinema protocol implementation
│ └── session/ # Terminal session management
├── scripts/ # Build and utility scripts
├── Makefile # Build system
└── README.md # This file
License
This project is part of the VibeTunnel ecosystem. See the main repository for license information.
Contributing
Contributions are welcome! Please see the main VibeTunnel repository for contribution guidelines.
Support
For support and questions:
- Check the main VibeTunnel documentation
- Open an issue in the main repository
- Check existing issues for known problems