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 Citadel, a modern Swift SSH2 implementation, with 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. Your key material never hits a server we control, and it stays off iCloud unless you explicitly enable the opt-in, end-to-end encrypted sync.
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 client covers fleets that are only reachable behind a VPN.
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.