Free SSH, VNC, RDP & SFTP client for Android
See the code
Free, open-source remote access & mobile workspace for Android —
SSH · Mosh · VNC · RDP · SFTP · SMB · email · cloud storage, a local Linux shell, mesh networking, and a consent-gated AI-agent endpoint
"Haven is an interesting vibe coding experiment. Let's see what comes out of it." — DBP
▶ Watch: the terminal — and every Haven screen — made translucent over the device wallpaper (new in 5.60.4). Live wallpaper: MagicFluids.
-L/-D port forwarding over Reticulum mesh, pure Kotlin. The one transport that keeps working with no internet at all.See docs/FEATURES.md for the full feature index.
The list above is the parts; the point is how they compose. Each of these is one
flow inside Haven — no second app, no curl | ssh incantation:
localhost —
the desktop opens in the same app, keyboard and clipboard shared.The phone is the thin client, Haven is the thin-client OS, and the cloud, your servers, and your agents are the computer. Width is sufficient; composition is the point. (Vision.)
Available in 12 languages: English, Chinese (simplified), Spanish, Hindi, Arabic (with RTL support), Portuguese, Bengali, Russian, Japanese, Korean, French, and German. The UI follows the device language.
Want to help translate? Improve a translation or add a new language straight from the web translation page — no cloning or setup; your changes become a GitHub pull request. See Languages & translation for details.
| Channel | |
|---|---|
| GitHub Releases | Signed APK, all features |
| F-Droid | Built from source, all features |
Both builds have the same features — SSH, Mosh, Eternal Terminal, VNC, RDP, SFTP, SMB, email, and cloud storage. IronRDP (Rust) is built from source via cargo-ndk. rclone (Go) is built from source via gomobile.
Pick one channel and stay on it. The two channels are signed with different keys — GitHub Releases use Haven's own release key; F-Droid builds from source and signs with F-Droid's per-app key. Android treats different signing keys as different apps, so you can't update in place from one channel to the other — switching means uninstall + reinstall, which clears app data (back up first via Settings → Backup). Direct sideloads and Obtainium track the GitHub Releases key.
Signing certificate SHA-256 (to verify a sideloaded APK with
apksigner verify --print-certs):
- GitHub Releases:
ea03a3a70e1c11d0a78932f959b21f20d8735d9cd750997657cb7f7d7c2b90b3- F-Droid:
ea05a89431961b8ac53c36725452673c2be1c2d7b6e48771617b974e6092b332
Requires Rust with Android targets, cargo-ndk, Go 1.26+, and gomobile:
# Rust (for RDP)
rustup target add aarch64-linux-android x86_64-linux-android
cargo install cargo-ndk
# Go (for rclone cloud storage)
go install golang.org/x/mobile/cmd/gomobile@latest
go install golang.org/x/mobile/cmd/gobind@latest
git clone --recurse-submodules https://github.com/GlassHaven/Haven.git
cd Haven
./gradlew assembleDebug
Output: app/build/outputs/apk/debug/haven-*-debug.apk
/maintain
skill driving Haven's maintenance loop (CI triage, release readiness, issue
response, and dependency tracking) run by Qwen3.8-Flash running locally via llama-claude, with
daily security audit passes performed by GLM5.3-flash.| Library | Purpose | License |
|---|---|---|
| rclone | Cloud storage engine (60+ providers) | MIT |
| IronRDP | RDP protocol (Rust/UniFFI) | MIT / Apache-2.0 |
| JSch | SSH/SFTP protocol | BSD |
| smbj | SMB/CIFS protocol | Apache-2.0 |
| ConnectBot termlib | Terminal emulator | Apache-2.0 |
| reticulum-kt | Reticulum mesh network transport (Kotlin) | MPL-2.0 |
| rnsh-kt | Reticulum remote shell client (Kotlin) | AGPL-3.0 |
| FFmpeg | Media conversion and streaming | LGPL-2.1 / GPL-2.0 |
| PRoot | Local Linux shell (userspace chroot) | GPL-2.0 |
| labwc | Wayland compositor (native desktop) | GPL-2.0 |
| wlroots | Wayland compositor library | MIT |
| virglrenderer | GPU virtualization (OpenGL passthrough to PRoot apps) | MIT |
| Jetpack Compose | UI toolkit | Apache-2.0 |
Haven sits on top of the projects listed in the table above — the heavy lifting was done long before this repo existed.
Most of the direction Haven has taken has come from the user base, not from a roadmap: bug reports, screenshots of edge cases, "have you tried…” comments on long issue threads. Qwen3.8-Flash running locally writes most of the actual code; the maintainer's role is closer to that of a messenger between the user group and the model: listening, setting the agenda, and quality-checking.
A small recurring amount comes in via Ko-fi and Liberapay. It helps offset the electricity costs of running the work above, and it's a clear signal that the work is useful to people. The project continues regardless of donations.
831 followers · starred Apr 2026
917 followers · starred Jul 2026
469 followers · starred Jun 2026
295 followers · starred Aug 2026
Free SSH, VNC, RDP & SFTP client for Android
See the code
Free, open-source remote access & mobile workspace for Android —
SSH · Mosh · VNC · RDP · SFTP · SMB · email · cloud storage, a local Linux shell, mesh networking, and a consent-gated AI-agent endpoint
"Haven is an interesting vibe coding experiment. Let's see what comes out of it." — DBP
▶ Watch: the terminal — and every Haven screen — made translucent over the device wallpaper (new in 5.60.4). Live wallpaper: MagicFluids.
-L/-D port forwarding over Reticulum mesh, pure Kotlin. The one transport that keeps working with no internet at all.See docs/FEATURES.md for the full feature index.
The list above is the parts; the point is how they compose. Each of these is one
flow inside Haven — no second app, no curl | ssh incantation:
localhost —
the desktop opens in the same app, keyboard and clipboard shared.The phone is the thin client, Haven is the thin-client OS, and the cloud, your servers, and your agents are the computer. Width is sufficient; composition is the point. (Vision.)
Available in 12 languages: English, Chinese (simplified), Spanish, Hindi, Arabic (with RTL support), Portuguese, Bengali, Russian, Japanese, Korean, French, and German. The UI follows the device language.
Want to help translate? Improve a translation or add a new language straight from the web translation page — no cloning or setup; your changes become a GitHub pull request. See Languages & translation for details.
| Channel | |
|---|---|
| GitHub Releases | Signed APK, all features |
| F-Droid | Built from source, all features |
Both builds have the same features — SSH, Mosh, Eternal Terminal, VNC, RDP, SFTP, SMB, email, and cloud storage. IronRDP (Rust) is built from source via cargo-ndk. rclone (Go) is built from source via gomobile.
Pick one channel and stay on it. The two channels are signed with different keys — GitHub Releases use Haven's own release key; F-Droid builds from source and signs with F-Droid's per-app key. Android treats different signing keys as different apps, so you can't update in place from one channel to the other — switching means uninstall + reinstall, which clears app data (back up first via Settings → Backup). Direct sideloads and Obtainium track the GitHub Releases key.
Signing certificate SHA-256 (to verify a sideloaded APK with
apksigner verify --print-certs):
- GitHub Releases:
ea03a3a70e1c11d0a78932f959b21f20d8735d9cd750997657cb7f7d7c2b90b3- F-Droid:
ea05a89431961b8ac53c36725452673c2be1c2d7b6e48771617b974e6092b332
Requires Rust with Android targets, cargo-ndk, Go 1.26+, and gomobile:
# Rust (for RDP)
rustup target add aarch64-linux-android x86_64-linux-android
cargo install cargo-ndk
# Go (for rclone cloud storage)
go install golang.org/x/mobile/cmd/gomobile@latest
go install golang.org/x/mobile/cmd/gobind@latest
git clone --recurse-submodules https://github.com/GlassHaven/Haven.git
cd Haven
./gradlew assembleDebug
Output: app/build/outputs/apk/debug/haven-*-debug.apk
/maintain
skill driving Haven's maintenance loop (CI triage, release readiness, issue
response, and dependency tracking) run by Qwen3.8-Flash running locally via llama-claude, with
daily security audit passes performed by GLM5.3-flash.| Library | Purpose | License |
|---|---|---|
| rclone | Cloud storage engine (60+ providers) | MIT |
| IronRDP | RDP protocol (Rust/UniFFI) | MIT / Apache-2.0 |
| JSch | SSH/SFTP protocol | BSD |
| smbj | SMB/CIFS protocol | Apache-2.0 |
| ConnectBot termlib | Terminal emulator | Apache-2.0 |
| reticulum-kt | Reticulum mesh network transport (Kotlin) | MPL-2.0 |
| rnsh-kt | Reticulum remote shell client (Kotlin) | AGPL-3.0 |
| FFmpeg | Media conversion and streaming | LGPL-2.1 / GPL-2.0 |
| PRoot | Local Linux shell (userspace chroot) | GPL-2.0 |
| labwc | Wayland compositor (native desktop) | GPL-2.0 |
| wlroots | Wayland compositor library | MIT |
| virglrenderer | GPU virtualization (OpenGL passthrough to PRoot apps) | MIT |
| Jetpack Compose | UI toolkit | Apache-2.0 |
Haven sits on top of the projects listed in the table above — the heavy lifting was done long before this repo existed.
Most of the direction Haven has taken has come from the user base, not from a roadmap: bug reports, screenshots of edge cases, "have you tried…” comments on long issue threads. Qwen3.8-Flash running locally writes most of the actual code; the maintainer's role is closer to that of a messenger between the user group and the model: listening, setting the agenda, and quality-checking.
A small recurring amount comes in via Ko-fi and Liberapay. It helps offset the electricity costs of running the work above, and it's a clear signal that the work is useful to people. The project continues regardless of donations.
831 followers · starred Apr 2026
917 followers · starred Jul 2026
469 followers · starred Jun 2026
295 followers · starred Aug 2026