A production-ready Flutter SSH client with interactive terminal, secure credential storage, and beautiful theming.
- SSH Connections — Password & private key authentication via
dartssh2 - Terminal Emulator — Full PTY terminal using
xtermwidget - Multi-Session — Multiple concurrent SSH sessions with tab switching
- Background Keep-Alive — Configurable heartbeat prevents idle disconnect
- Auto-Reconnect — Detects dead socket on app resume, reconnects with tmux reattach
- Mobile Keyboard — Ctrl, Alt, Esc, Tab, arrows, F-keys, and common chars
- Connection Management — Save, edit, delete with confirmations
- Search & Filter — Find connections instantly as your list grows
- Secure Storage — Credentials encrypted with platform keychain/keystore
- Theming — Dark/light toggle with
flex_color_scheme - No Auth Required — Pure client-side, anonymous, no backend
- SFTP File Browser — Browse, view, rename, delete remote files and create folders
- SSH Tunneling — Local and remote port forwarding with live tunnel management
- Snippet Manager — Save frequently used commands (Settings > Manage Snippets)
- Export/Import — Backup and restore connections via JSON clipboard
| Layer | Technology |
|---|---|
| SSH Protocol | dartssh2 ^2.17.1 |
| Terminal UI | xterm ^4.0.0 |
| State | flutter_riverpod ^2.5.0 |
| Theme | flex_color_scheme ^8.4.0 + google_fonts ^6.2.0 |
| Animations | flutter_animate ^4.5.0 |
| Security | flutter_secure_storage ^9.0.0 |
| Models | freezed_annotation + json_annotation |
- Titles & Headings — Space Grotesk
- Body Text — Inter
- Terminal — JetBrains Mono
Clean Architecture with Riverpod — see SYSTEM_DESIGN.md for full details.
lib/
├── core/ # Constants, theme, router, errors
├── data/ # Models, providers, services
└── presentation/ # Screens, widgets
flutter pub get
dart run build_runner build --delete-conflicting-outputs
flutter runiOS · Android
Every push to main triggers a GitHub Actions workflow that:
- Builds a release APK
- Creates a GitHub Release tagged with the version from
pubspec.yaml - Attaches the APK to the release
- Auto-generates release notes from commit messages