A fast, cross-platform desktop SSH client with a built-in SFTP file browser, remote code editor, and port forwarding manager.
Install · Features · Build · Contribute · Report a bug
Managing a remote server usually means juggling a terminal, an SFTP client, a text editor, and a pile of ssh -L commands. Termlet puts them in one lightweight native window: connect once, then browse files, edit them in place, and tunnel ports without leaving the app.
Built with Wails v2 (Go) and React 19 + TypeScript, so it ships as a small native binary instead of an Electron bundle.
- SSH terminal and profiles: save servers, use passwords, private keys (with passphrases), or your SSH agent. Host keys are verified, with a warning when a key changes.
- Multi-tab remote terminal: true line-based stream emulator with multi-tab concurrency, multi-line command continuation (
\& Shift+Enter), tab renaming, tab duplication, and draggable drawer resizing. - SFTP file browser: browse, create, rename, delete, and upload files on the remote host with bi-directional terminal CWD sync.
- Remote code editor: CodeMirror 6 with syntax highlighting, multiple tabs, 14 themes, and Ctrl+S to save straight to the server. Binary files are detected and not opened.
- Local port forwarding (
ssh -L): create, start, and stop tunnels from a dedicated view. Forwards are saved with the profile, with one-click "open in browser" and presets for common services (HTTP, Vite, PostgreSQL, MySQL, Redis, Traefik). - Auto-update: checks GitHub Releases and installs updates in place (
.deb,.rpm, Windows installer, or portable binary). - Polished UI: frameless window, resizable sidebar and terminal drawer, light and dark themes, and readable error messages with troubleshooting hints.
Install directly from the Ubuntu Snap Store:
sudo snap install termlet
sudo snap connect termlet:ssh-keys # Grants access to ~/.ssh private keysDownload the latest build for your platform from the Releases page:
| Platform | Packages |
|---|---|
| Linux (Snap) | sudo snap install termlet |
| Linux (amd64) | .deb, .rpm, .tar.gz, .snap |
| Windows (amd64) | Installer .exe, portable .zip |
| macOS (Universal) | .dmg, .zip |
On Linux, Termlet needs GTK 3 and WebKitGTK 4.1 at runtime (installed automatically by the .deb and .rpm packages).
-
Node.js 20+ and npm
-
Wails CLI v2.9+:
go install github.com/wailsapp/wails/v2/cmd/wails@latest -
Linux only, GTK and WebKit headers:
# Debian / Ubuntu / Mint sudo apt-get install -y build-essential pkg-config libgtk-3-dev libwebkit2gtk-4.1-dev # Fedora / RHEL sudo dnf install -y gtk3-devel webkit2gtk4.1-devel
git clone https://github.com/Amanbig/termlet.git
cd termlet
(cd frontend && npm install)
wails dev -tags webkit2_41 # drop "-tags webkit2_41" on Windows/macOSwails build -tags webkit2_41 # output: build/bin/termletgo test ./internal/...
cd frontend && npx tsc --noEmittermlet/
├── app.go, main.go # Wails entrypoint and Go ↔ frontend bindings
├── internal/
│ ├── sshclient/ # SSH client, PTY sessions, authentication
│ ├── sftpclient/ # SFTP file operations
│ ├── tunnel/ # Local port forwarding manager
│ ├── connections/ # Connection manager and sessions
│ ├── storage/ # Profile and settings persistence
│ ├── models/ # Shared data types
│ ├── updater/ # GitHub release check and installer
│ └── version/ # Version constant
├── frontend/ # React + TypeScript + Tailwind CSS v4 UI
├── build/ # Icons and packaging (Linux, Windows, macOS)
└── .github/ # CI, release workflow, issue/PR templates
Contributions of all sizes are welcome: bug reports, feature ideas, docs, and code.
- Read CONTRIBUTING.md for the dev setup and PR process.
- Look for issues labeled
good first issueorhelp wanted. - Please follow our Code of Conduct.
Found a security problem? Don't open a public issue; see SECURITY.md.
See RELEASE_NOTES.md for the current release and releases/ for the full history.
Licensed under the Apache License 2.0.
