Fast, lightweight SSH terminal and dual-pane SFTP client.
Built on Tauri 2, Rust, React 19, and xterm.js. Native speed, zero Electron bloat.
Formerly OpenTerm. Renamed in v0.8.0. Data migrates automatically.
Download installers from Latest Release:
| Platform | Format |
|---|---|
| Windows | .msi / .exe (x64, arm64) |
| macOS | .dmg (Apple Silicon, Intel) |
| Linux | .deb / .AppImage (x64) |
| Feature | ShellFerry | Termius | FileZilla | PuTTY |
|---|---|---|---|---|
| Terminal + SFTP Unified | Yes | Yes | No (SFTP only) | No (SSH only) |
| Memory Footprint | 80–150 MB | 400–800 MB | 100–200 MB | ~30 MB |
| Runtime | Tauri 2 (Native Webview) | Electron (Chromium) | C++ / wxWidgets | C / Win32 |
| Biometric & 2FA Vault | Yes | Paid plan | No | No |
| License | Apache 2.0 (Open Source) | Proprietary | Open Source | Open Source |
- Lightweight (80–150 MB RAM): Tauri 2 uses native OS webviews instead of bundling Chromium.
- Direct PTY Streaming: Rust streams raw pseudo-terminal bytes straight to
xterm.jsvia event emitters, avoiding IPC serialization overhead. - Zero-Binary JavaScript Rule: SFTP file transfers run directly between SSH socket and local disk in native Rust (128 KB buffered stream). JS runtime never touches file binaries.
- Virtualized File Explorer: Smooth rendering for directories with thousands of files powered by
@tanstack/react-virtual.
- Bidirectional PTY ↔ SFTP Sync: Terminal working directory and SFTP remote pane stay in sync automatically.
- Multi-Session Tabs: Connect, switch, and monitor multiple SSH hosts simultaneously.
- Resilient Auto-Reconnect: TCP keepalives (15s) and exponential backoff keep connections alive and restore buffers after dropouts.
- Flexible Split Layouts: Switch instantly between full terminal, full SFTP, or resizable dual split.
- Drag-and-Drop: Transfer files between local/remote panes, target folders, or directly from OS file explorer.
- In-App Code Editor: Built-in editor with syntax highlighting for remote and local configuration files.
- Transfer Conflict Resolution: Side-by-side comparison with Overwrite, Overwrite Newer, Size Differs, Auto-Rename, and Skip actions.
- Quick Search & Filter (
Ctrl+F): Real-time multi-token search across current directory contents. - Visual Permissions (chmod): Inspect and adjust octal permissions (
0755,0644) and flag bits visually.
- Encrypted Profile Vault: Host credentials encrypted with PBKDF2-HMAC-SHA256 (100k rounds) + AES-256-GCM (
vault.enc). - Biometrics & 2FA: Native OS passkeys (Windows Hello fingerprint/face/PIN) and RFC 6238 TOTP authenticators.
- Protection Gate: Requires biometric or 2FA setup before saving credentials to disk.
| Shortcut | Action | Shortcut | Action |
|---|---|---|---|
F5 / Ctrl+R |
Refresh directory | Ctrl+F |
Focus search & filter bar |
F2 |
Rename item | Ctrl+L / Alt+D |
Focus address bar |
Delete |
Delete item | Enter |
Open folder / edit file |
Ctrl+N |
Create new file | Backspace / Alt+Up |
Go to parent directory |
Ctrl+Shift+N |
Create new folder |
| Layer | Stack |
|---|---|
| Desktop Engine | Tauri 2 |
| Backend / Systems | Rust, ssh2-rs (libssh2), tokio, parking_lot |
| Frontend | React 19, TypeScript, Tailwind CSS v4 |
| Terminal | xterm.js + Fit & Web Links addons |
| Virtualization | @tanstack/react-virtual |
| State & Icons | Zustand, Lucide React |
git clone https://github.com/rzkfyn/openterm.git
cd openterm
bun install
bun run tauri devbun test # Frontend unit tests
cd src-tauri && cargo test # Rust backend tests
bun run tauri build # Production executable- Report Bug: Issue tracker for crashes or broken workflows.
- Request Feature: Suggestions and enhancements.
- Discussions: General setup questions and community discussions.
Note: Never post private keys, passwords, or server addresses in issue reports.
Licensed under Apache License 2.0. Copyright 2026 ShellFerry contributors.
