vibetunnel/linux/README.md
Helmut Januschka c6b000a421 docs: add --no-spawn flag documentation
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-20 08:27:19 +02:00

270 lines
No EOL
6.1 KiB
Markdown

# 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
```bash
# 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
```bash
# 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
```bash
make install
```
### User Installation
```bash
make install-user
```
### As a Service (systemd)
```bash
make service-install
make service-enable
make service-start
```
## Usage
### Server Mode
Start the web server to access terminals via browser:
```bash
# 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:
```bash
# 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:
```bash
# Show current configuration
vibetunnel config
# Use custom config file
vibetunnel --config ~/.config/vibetunnel.yaml --serve
```
Example configuration file (`~/.vibetunnel/config.yaml`):
```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
```bash
# 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:
1. Check the [main VibeTunnel documentation](../README.md)
2. Open an issue in the main repository
3. Check existing issues for known problems