SSHIFT - Web-based SSH/SFTP Terminal Client for the AI Stack

Documentation npm version Docker License: MIT

A modern, responsive web-based SSH and SFTP terminal client built with Node.js, Express, and xterm.js. Designed for the AI coding workflow β€” featuring tab flash notifications that alert you when AI tools like OpenCode or Claude are waiting for your input, so you never miss a prompt while multitasking. Also features excellent TUI support, tabbed sessions, bookmarks, and mobile-friendly design.

SSHIFT Logo

πŸ“Έ Screenshots

SSHIFT Desktop (Light) SSHIFT Desktop (Dark)


SSHIFT Mobile

✨ Features

πŸ” SSH Terminal

  • Full-featured terminal emulation with xterm.js
  • Excellent TUI support (vim, nano, htop, tmux, etc.)
  • 256-color and true color support
  • Proper terminal resizing
  • Clickable web links
  • Alternate buffer support (for TUI applications)

πŸ€– AI Attention Alerts

  • OpenCode β€” Detects when OpenCode is waiting for input (spinner patterns ⬝ β–  β–£)
  • Claude Code β€” Detects when Claude is waiting for input (braille spinners, ·✒✳✢✻✽, prompt patterns like β€œβ―β€, β€œDo you want”, β€œAllow”)
  • Tab flash notifications so you never miss a prompt while multitasking across tabs
  • Configurable debounce, idle threshold, and cooldown settings

πŸ“ SFTP Browser

  • Browse remote directories with a file manager interface
  • Download files (click to download)
  • Upload files (drag & drop or file picker)
  • Create directories
  • Delete files and directories
  • File size and permissions display

πŸ—‚οΈ Tabbed Interface

  • Multiple concurrent SSH and SFTP sessions
  • Switch between sessions with tabs
  • Visual session indicators
  • Easy tab management (close, reorder)
  • Session persistence

πŸ”– Bookmarks

  • Save connection details for quick access
  • Edit and delete bookmarks
  • Persistent storage in configuration file
  • Quick connect from sidebar

⌨️ Special Keys Popup

  • Mobile-friendly special keys input
  • Ctrl+C, Ctrl+D, Ctrl+Z, etc.
  • Function keys F1-F12
  • Arrow keys and navigation keys
  • Triggered by clicking on tabs (mobile)

🎨 Modern UI

  • GitHub-inspired dark theme
  • Easy on the eyes
  • High contrast for readability
  • Fully responsive design
  • Works on desktop, tablet, and mobile

πŸš€ Quick Start

The recommended way to install sshift - automatically handles updates and autostart configuration:

Linux/macOS:

curl -fsSL https://raw.githubusercontent.com/lethevimlet/sshift/main/sshift-install.sh | bash

Windows (PowerShell):

Invoke-Expression (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/lethevimlet/sshift/main/sshift-install.ps1" -UseBasicParsing).Content

The installer will:

  • Install Node.js 20+ if not present
  • Install sshift globally via npm
  • Start sshift after installation
  • Configure autostart (optional, systemd on Linux, launchd on macOS, Task Scheduler on Windows)
  • Create config at <PACKAGE_DIR>/.env/config.json
  • Print summary with HTTPS access links

For detailed installation options, see the Installation guide.

πŸ“– Documentation

πŸ› οΈ Technology Stack

Backend

  • Node.js - JavaScript runtime
  • Express - Web server framework
  • Socket.IO - WebSocket communication
  • ssh2 - SSH2 client and server modules

Frontend

  • xterm.js - Terminal emulator
  • xterm-addon-fit - Terminal resizing
  • xterm-addon-web-links - Clickable links
  • xterm-addon-search - Search in terminal

Development

  • ESLint - Code linting
  • Puppeteer - Browser testing

πŸ“ž Support

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • xterm.js - Terminal emulator for the web
  • ssh2 - SSH2 client and server modules
  • Socket.IO - Real-time bidirectional event-based communication

Made with ❀️ by the SSHIFT Team