Haven SSH Client
User report: sliding the screen pager from Keys to Settings briefly
flipped the device to landscape and back to portrait — even though the
Desktop tab was never selected. Same flash showed up on any swipe that
passed close enough for HorizontalPager to compose the Desktop page.
Cause: DesktopScreen's orientation `LaunchedEffect` (added in
v5.24.74) wrote `requestedOrientation = desktopOrientation` (default
LANDSCAPE)
Terminal:
- Full VT100/xterm emulator with Unicode, multiple tabs, and 6 color schemes
- Session persistence via tmux, zellij, screen, or byobu
- Mouse mode for TUI apps (vim, htop, mc)
- Configurable keyboard toolbar with Esc, Ctrl, Alt, arrows, function keys, and custom macros
- Text selection with word expansion, copy, and clickable URL detection
- Voice input and autocomplete mode
- Mosh and Eternal Terminal for roaming and persistent connections
Native Wayland Desktop:
- GPU-accelerated labwc compositor running directly on your device
- Waybar panel, fuzzel app launcher, thunar file manager, mousepad editor
- Starter Pack addon with Firefox, calculator, image viewer
- XWayland for X11 app compatibility
- Multi-desktop management — run multiple desktops simultaneously
- No root required (PRoot with Alpine Linux)
VNC Remote Desktop:
- VNC viewer with pinch-to-zoom, pan, and fullscreen mode
- SSH tunnel support for encrypted connections
- Touch-to-click with drag gesture support
RDP Remote Desktop:
- Connect to Windows Remote Desktop, xrdp, and GNOME Remote Desktop
- Pinch-to-zoom, keyboard with scancode mapping
- SSH tunnel with auto-connect through saved profiles
Cloud Storage:
- 60+ providers via rclone — Google Drive, Dropbox, OneDrive, S3, and more
- OAuth authentication with browser flow
- Folder sync with filters, bandwidth limits, and dry-run preview
- Media streaming to VLC via local HTTP server
- DLNA server for smart TVs and Chromecast
File Transfer:
- SFTP browser with upload, download, rename, delete, and folder transfer
- SMB/Windows file share browsing with optional SSH tunnel
- Cross-filesystem copy between any backends
Networking:
- SSH with auto-reconnect, port forwarding, and ProxyJump multi-hop
- Tailscale peer auto-discovery
- Reticulum mesh network support via rnsh
- Network discovery for SSH hosts on local network
Security:
- SSH key generation (Ed25519, RSA, ECDSA) with encrypted storage
- FIDO2 hardware key support (ed25519-sk, ecdsa-sk) via NFC or USB
- Biometric app lock with configurable timeout
- Connection audit log
- No ads, no tracking, no data collection
Haven is free and open source (AGPLv3).
- Author: GlassOnTin
- License: GNU General Public License v3.0 only
- Issue Tracker
- Source Code
- Changelog
- Build Metadata
- Reproducibility Status
Donate
Versions
Although APK downloads are available below to give you the choice, you should be aware that by installing that way you will not receive update notifications and it's a less secure way to download. We recommend that you install the F-Droid client and use that.
Download F-Droid-
arm64-v8aThis version requires Android 8.0 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Download APK 92 MiB PGP Signature | Build Log
-
arm64-v8aThis version requires Android 8.0 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Download APK 92 MiB PGP Signature | Build Log
-
arm64-v8aThis version requires Android 8.0 or newer.
It is built and signed by F-Droid, and guaranteed to correspond to this source tarball.
Download APK 91 MiB PGP Signature | Build Log
A new rotate-icon button on the session toolbar (and the fullscreen
overlay menu) cycles between three orientation modes:
- **Lock landscape** — what Haven did before, and the default. Phone
ignores its rotation sensor; the activity stays in landscape
regardless of how you hold it (USER_LANDSCAPE — left or right
is up to you).
- **Lock portrait** — useful for narrow window-like apps on the
remote, or when you actually want to r
@gitcodeerrors reported on #118 that switching the app language from
English to German made the keyboard-toolbar configuration dialog
appear to lose half its function-keys entries — only Keyboard / Esc /
Tab / Paste / Snippets / Voice were visible, with Raw / Shift / Ctrl
(and everything below) clipped.
Cause: the dialog's `dismissButton` slot held a single `Row` with three
`TextButton`s — Reset / Edit JSON














