A modern, cross-platform SSH client and remote management tool.
Built for engineers who got tired of PuTTY and wanted something that just works.
Documentation · Download · Report a Bug
Most SSH tools feel like they were designed in 2005, because they were. MobaXterm is Windows-only and bloated, PuTTY hasn't changed in decades, and Termius wants a subscription for basic features.
Reach is what happens when you build an SSH client from scratch with a native UI, proper encryption, and the kind of workflow you'd actually want to use every day. No Electron. No monthly fee. Just a fast, clean tool that runs everywhere.
~/.ssh/config.Reach is a Tauri v2 app with a Rust backend and Svelte 5 frontend. The entire SSH stack runs natively in Rust through russh, with no OpenSSH dependency. The UI is rendered in a system webview (not bundled Chromium), so the final binary is small and memory usage stays low.
| Backend | Rust, Tokio, russh |
| Frontend | Svelte 5, SvelteKit, TypeScript |
| Styling | Tailwind CSS v4 |
| Terminal | xterm.js with WebGL addon |
| Crypto | XChaCha20-Poly1305, Argon2id, X25519 |
| Platforms | Windows, macOS, Linux, Android |
Grab the latest release from the Releases page. Installers are available for Windows (NSIS), macOS (.dmg), Linux (.deb, .AppImage, .rpm), and Android (.apk).
You'll need Rust, Node.js 22+, and the Tauri prerequisites for your OS.
git clone https://github.com/alexandrosnt/Reach.git
cd Reach
npm install
npm run tauri dev
For a production build:
npm run tauri build
graph LR
root["🗂 Reach"]
root --> src["📁 src · Svelte frontend"]
root --> tauri["📁 src-tauri · Rust backend"]
root --> gh["📁 .github/workflows · CI/CD"]
src --> routes["📄 routes"]
src --> lib["📁 lib"]
lib --> components["📁 components"]
lib --> state["📄 state · Reactive .svelte.ts modules"]
lib --> ipc["📄 ipc · Tauri command wrappers"]
lib --> i18n["📄 i18n · Internationalization"]
components --> layout["📄 layout · AppShell, TitleBar, Sidebar"]
components --> terminal["📄 terminal · SSH terminal, multi-exec"]
components --> explorer["📄 explorer · SFTP file browser"]
components --> sessions["📄 sessions · Connection manager"]
components --> tunnel["📄 tunnel · Port forwarding UI"]
components --> vault["📄 vault · Encrypted secrets"]
components --> ai["📄 ai · AI assistant panel"]
components --> ansible["📄 ansible · Ansible automation"]
components --> tofu["📄 tofu · OpenTofu IaC"]
components --> settings["📄 settings · App preferences"]
components --> shared["📄 shared · Button, Modal, Toast"]
tauri --> taurisrc["📁 src"]
taurisrc --> ssh["📄 ssh · SSH client via russh"]
taurisrc --> sftp["📄 sftp · File transfers"]
taurisrc --> tvault["📄 vault · Encrypted storage, crypto"]
taurisrc --> ttunnel["📄 tunnel · Port forwarding engine"]
taurisrc --> pty["📄 pty · Local terminal (desktop)"]
taurisrc --> serial["📄 serial · Serial port (desktop)"]
taurisrc --> monitoring["📄 monitoring · Remote system stats"]
taurisrc --> ansible["📄 ansible · Ansible project & runner"]
taurisrc --> tofu["📄 tofu · OpenTofu project & runner"]
taurisrc --> tipc["📄 ipc · Tauri command handlers"]
See CHANGELOG.md for the full release history.
Thanks to those who have contributed to Reach:
![]() ddwnbot SSH host key verification (TOFU) |
![]() alien-ye Click-to-copy terminal selection |
Contributions are welcome. Bug reports, feature ideas, and pull requests all help. If you're picking up a larger feature, open an issue first so we can talk about the approach.
This project is free software: you are allowed to use, modify, and redistribute it for personal, academic, or commercial purposes under the terms of the MIT license. See the LICENSE file for full details.