Skip to content
Filip Penezic edited this page Oct 28, 2026 · 4 revisions

Android / mobile

Android / mobile

The same app runs on an Android phone (arm64, DeX-ready) - it is the desktop Go core compiled for android via the NDK, not a separate codebase. Every release attaches a signed ssh-tool-android-arm64.apk (install steps in the README); a newer APK installs over the old one and keeps your data. The installed app id is app.sshtool. What changes on a phone:

Vault unlock with biometrics

On first launch you set the master passphrase as on desktop. Tick "Unlock with fingerprint / face next time" and the passphrase is stored in the device's Keystore-backed encrypted store; the next launch prompts the fingerprint / face sensor and unlocks without typing. The passphrase never enters the WebView - the unlock happens server-side in Go after a successful biometric prompt. Anyone who can pass your device biometrics can open the vault (convenience trade-off, same warning the UI shows). If the prompt can't show (e.g. launched while the screen is locked) it falls back to the passphrase field after a few seconds. There is no machine-bound auto-unlock sidecar on mobile.

Single-pane layout

Small screens use a single-pane layout instead of the desktop tree + detail split: tapping a connection (or credential, or dynamic host) slides in its detail view, and the system Back (button or gesture) returns to the list - it steps detail -> list -> tab and only exits the app at the root. A plain tap on a folder row expands or collapses it; a long-press opens the folder menu (Rename, settings, etc). The top nav collapses to icon-only tabs.

On-screen key bar

A key bar sits above the keyboard in a terminal session with the keys a phone keyboard lacks: Esc, Tab, Ctrl, Alt, arrows, Home/End, PgUp/PgDn, and common control combos (^C ^D ^Z ^L ^R ...). Ctrl and Alt latch - tap Ctrl then a letter to send the control byte. Tapping the terminal focuses it and opens the keyboard. Two-finger pinch changes the font size live.

opkssh login

opkssh OIDC login opens your system browser via an Android intent; after you authenticate, the loopback callback completes the login in-app and the SSH session connects.

Background sessions

A foreground service keeps a live SSH session (and its sockets) alive when the app is backgrounded; a persistent notification shows while sessions are open and clears when the last one closes. On Android 13+ the app asks for notification permission on first launch.

What is desktop-only

Detach/redock multi-window, system tray, the SOCKS browser launcher, "open in system terminal", the local-shell tab, the self-updater (no in-app update on android yet - sideload a newer APK from sshtool.app), and the SFTP native drag-out are desktop features and are not present on mobile. VNC on mobile is untested.

Clone this wiki locally