Cross-platform SSH Terminal Manager
- SSH Connection Management - Add, edit, delete SSH connections
- Multiple Authentication Methods - Password, Private Key, Private Key + Password
- Jump Host Support - Connect through jump/bastion hosts
- Terminal Emulator - Full interactive terminal based on xterm
- Multi-tab Support - Manage multiple SSH connections simultaneously
- Configuration Sync - Sync to Gitee Gist or GitHub Gist
- Encrypted Storage - Sensitive data encrypted locally
| Feature | lbpSSH | Termius | MobaXterm | PuTTY | Tabby |
|---|---|---|---|---|---|
| Cross-platform | ✅ Win/Lin/Mac | ✅ Win/Lin/Mac | ❌ Windows | ❌ Windows | ✅ Win/Lin/Mac |
| Open Source & Free | ✅ MIT | ❌ Paid | ❌ Paid | ✅ Free | ✅ Free |
| Config Sync | ✅ Gist | ✅ Termius Cloud | ❌ | ❌ | ❌ |
| Jump Host | ✅ | ✅ | ✅ | ❌ | ✅ |
| Multi-tab | ✅ | ✅ | ✅ | ❌ | ✅ |
| Encrypted Storage | ✅ | ✅ | ✅ | ❌ | ❌ |
| Self-hosted Sync | ✅ Gitee | ❌ | ❌ | ❌ | ❌ |
-
Fully Open Source - MIT license, completely transparent code
-
Self-hosted Sync - Gitee Gist support, no third-party cloud required
-
Privacy First - All data encrypted locally
-
Flutter Based - Modern UI, single codebase multi-platform
# Add Homebrew Tap
brew tap lbp0200/lbpssh-tap
# Install lbpSSH
brew install --cask lbpsshDownload lbpSSH-macos-universal.zip from GitHub Releases, unzip and drag lbpSSH.app to Applications.
Download lbpSSH-windows-x64.zip from GitHub Releases and run lbpSSH.exe.
Download lbpSSH-linux-x64.zip from GitHub Releases and run:
cd bundle
chmod +x lbpSSH
./lbpSSH- Flutter SDK (3.10.7+)
- Dart SDK
- Desktop platform support (Windows, Linux, macOS)
flutter pub get# Windows
flutter run -d windows
# Linux
flutter run -d linux
# macOS
flutter run -d macos# Windows
flutter build windows --release
# Linux
flutter build linux --release
# macOS
flutter build macos --releaseSync SSH config to cloud Gist for multi-device sharing.
- Create a token at Gitee personal access tokens
- Select Gitee Gist in sync settings
- Enter token, optionally fill Gist ID
- Save config, then use "Upload" to sync
- Create a Personal Access Token at GitHub Settings (need
gistscope) - Select GitHub Gist in sync settings
- Enter token, optionally fill Gist ID
- Save config, then use "Upload" to sync
- Click "Add Connection" button
- Fill connection info:
- Connection name
- Host address and port
- Username
- Auth method (Password/Private Key/Private Key+Password)
- Auth info
- Optional: Configure jump host
- Click "Save"
- Click connection to open terminal
- Multi-tab for multiple servers
- Drag to reorder tabs
- Drag files to terminal to upload
lbpSSH uses Kitty protocol OSC 5113 for file transfer.
Note: Remote server needs Kitty's
kitool installed to receive files
- Implemented: File Upload, File list browsing, File download
lbpSSH fully supports Kitty terminal protocol with rich terminal enhancement features.
| Feature | Protocol |
|---|---|
| File Transfer | OSC 5113 |
| Desktop Notifications | OSC 99 |
| Graphics Protocol | OSC 71 |
| Shell Integration | OSC 133 |
| Hyperlinks | OSC 8 |
| Pointer Shapes | OSC 22 |
| Color Stack | OSC 4, 21 |
| Text Sizing | - |
| Marks | - |
| Window Title | OSC 0, 1, 2 |
| Prompt Colors | OSC 10-132, 708 |
| Keyboard Protocol | OSC 1, 2, 200, 201 |
| Remote Control | OSC 5xx |
| Terminal Modes | SM/RM |
| Session Management | - |
| Actions | OSC 5 |
| Underline Styles | OSC 4:58 |
| Extended Search | - |
| Program Launch | OSC 6 |
| Multiple Cursors | OSC 6 > |
| Wide Gamut Colors | - |
| Scroll Control | OSC 2026 |
| Layout Management | OSC 20 |
| Screenshot | OSC 20 |
- ✅ File Upload
- ✅ Drag-and-drop upload
- ✅ File list browsing
- ✅ File download
- ✅ Directory navigation (cd, cd ..)
- ✅ Directory operations (mkdir, rm, rmdir)
- ✅ Compression (compression=zlib)
- ✅ Symlink support
- ✅ Metadata preservation
- ✅ Transfer cancel
- ✅ Quiet mode
- ✅ Password authorization
Note: Remote server needs Kitty's
kitool for file transfer
# Method 1: Build from source
git clone https://github.com/kovidgoyal/kitty
cd kitty
python3 setup.py ki
# Method 2: Use pip
pip3 install kitty-clilib/
├── main.dart # App entry point
├── core/ # Core config
│ ├── theme/ # Theme
│ └── constants/ # Constants
├── data/ # Data layer
│ ├── models/ # Data models
│ └── repositories/ # Repositories
├── domain/ # Business logic
│ └── services/ # Services
├── presentation: # Presentation layer
│ ├── screens/ # Screens
│ ├── widgets/ # Widgets
│ └── providers/ # State management
└── utils/ # Utilities
| Technology | Purpose |
|---|---|
| Flutter | Cross-platform UI |
| dartssh2 | SSH Client |
| xterm | Terminal Emulator |
| flutter_pty | PTY Support |
| provider | State Management |
| dio | HTTP Client |
| encrypt | Encryption |
| shared_preferences | Local Storage |
- Files:
snake_case - Classes:
PascalCase - Variables/Methods:
camelCase - Private members: underscore prefix
dart run build_runner build --delete-conflicting-outputsflutter analyzeIssues and PRs welcome!
MIT License
