How SSH on iPhone actually works
SSHive on iOS is a real SwiftUI app, not a web view, not a cross-platform JavaScript wrapper. The terminal emulation comes from SwiftTerm, a mature open-source xterm-256color implementation in Swift, which handles VT100/xterm escape sequences, ANSI colors, alternate-screen buffers (for `less`, `vim`, `htop`), bracketed paste, and mouse reporting. The SSH transport runs on libssh2 with custom patches for jump-host chaining and known-hosts verification.
Keys live in the iOS Keychain with `SecAccessControl` set to `BiometryCurrentSet`, meaning Face ID or Touch ID is required to read them, and they invalidate if you change your biometric enrollment. The encrypted SSH passphrase is wrapped with bcrypt-pbkdf (the OpenSSH-standard KDF) and decrypted on-device into a transient memory buffer that is zeroed after use. Nothing about your key material ever leaves the device, ever touches iCloud, ever hits a server we control.
The network model handles iOS realities: background time limits, network changes between Wi-Fi and 5G, App Refresh restrictions. Sessions reconnect automatically when the network comes back, configurable SSH keep-alive (`ServerAliveInterval`) prevents idle disconnects, and the integrated NetworkExtension VPN can auto-connect before opening an SSH session for protected fleets.
On iPad with a Magic Keyboard, the experience is close to a laptop, physical keyboard with Cmd, Ctrl, Esc working as expected, terminal panes resizable via the NavigationSplitView, and Stage Manager keeping SSHive alongside a browser or Notes. On iPhone, the on-screen modifier strip exposes the keys a touch screen normally cannot send (Esc, Tab, Ctrl, Alt, arrows, pipe, slash, tilde) so `Ctrl+C`, `Ctrl+R`, navigating `less`, scrolling logs all work without an external keyboard.