mirror of
https://github.com/samsonjs/vibetunnel.git
synced 2026-03-27 09:45:53 +00:00
* feat: add terminal max width option - Add terminal preferences manager for persistent settings storage - Add maxCols property to terminal component with width constraint logic - Add UI toggle button (∞/80) in session header for easy width control - Default behavior unchanged: unlimited width (takes full container) - Optional 80-column max width limit when enabled - Preferences saved to localStorage and restored on page load - Real-time updates without page refresh 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * feat: enhance terminal width selector with common presets and custom input - Add common terminal width presets: ∞, 80, 100, 120, 132, 160 - Add custom width input field (20-500 columns) - Replace simple toggle with dropdown selector UI - Include helpful descriptions for each preset - Support keyboard shortcuts (Enter to submit, Escape to cancel) - Add click-outside-to-close functionality - Maintain all existing preferences persistence - Show current width in button label and tooltip Common widths: - 80: Classic terminal - 100: Modern standard - 120: Wide terminal - 132: Mainframe width - 160: Ultra-wide - Custom: User-defined (20-500) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * fix: prevent WebSocket send on closed channel panic Added safeSend helper function with panic recovery to handle race conditions when multiple goroutines access WebSocket channels. Replaces unsafe channel sends with graceful error handling. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| cmd/vibetunnel | ||
| pkg | ||
| build-universal.sh | ||
| build-vt-universal.sh | ||
| claude | ||
| debug_pty.go | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| README.md | ||
| test-vt.sh | ||
| vibetunnel-tls | ||
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