Outrigger outrigger App Store
❯ outrigger ssh · ios

A minimalist SSH client for iPhone.

Moving around a terminal on a phone is miserable — the keys you need aren't on the keyboard, Ctrl and Esc are buried, and a stray swipe scrolls you into the void. Outrigger fixes that first: a key rail on the screen's edge and real gestures for history and scrollback, so getting around stops being the hard part.

The rest: the default P-256 identity is generated in the Secure Enclave and can't be exported. Sessions reconnect after backgrounding or signal loss with scrollback intact, and the ✦ assist can catch you up on what happened while you were gone.

$24.99, one-time purchase. No subscription, no accounts, no telemetry.

Coming soon to the App Store How the keys work
02 security

The default private key is generated in the Secure Enclave and cannot be exported.

The default key is a P-256 key created inside the Secure Enclave. There is no API to export it, and every use of it requires Face ID.

Servers that only accept ed25519 get a software key instead; it is encrypted at rest with a Secure Enclave key and requires Face ID or the device passcode to unseal. The app has no accounts, telemetry, or backend of ours. Network connections go to hosts you configure, an AI provider only if you opt in, and Apple for StoreKit and system services.

Every host is verified on first connect. You approve its SHA-256 fingerprint, and the handshake is blocked if a known host's key ever changes. A Trusted host keys screen shows every pinned fingerprint, so you can copy one to check it, forget one to re-verify, or forget them all.

In version 1.1 and later, tapping a host signs in and lists the shells open in Outrigger and the tmux sessions on the server; no shell starts on the server until you pick one. The tmux commands Outrigger runs for you use the same signed-in connection, and the privacy policy lists each one. A lock in the title bar shows the address actually connected to, the port, the transport, the verified host-key fingerprint, and the authentication method.

And when you want a clean break, Erase everything removes Outrigger's local records, snippets, settings, caches, saved passwords, host-key pins, identity material, stored API keys, and the Enclave wrapping keys behind them. Your one-time purchase is the only exception, because it lives with your Apple ID rather than the device.

EnclaveSigner.swift
// Face ID required for every use of the key.
let access = SecAccessControlCreateWithFlags(
    kCFAllocatorDefault,
    kSecAttrAccessibleWhenUnlockedThisDeviceOnly,
    [.privateKeyUsage, .biometryCurrentSet],
    &cfError
)

// Generated inside the Secure Enclave. There is no export API.
try SecureEnclave.P256.Signing.PrivateKey(
    accessControl: access
)
03 sessions
10:14 · app backgrounded
10:14 · scrollback kept
10:31 · network lost
10:52 · network restored
10:52 · reconnected — tmux reattached
✦ 38 minutes summarised
Migration finished at 10:22. One failed row, logged to /var/log/migrate.err. Agent has been idle since.

Sessions reconnect on their own.

When the app is backgrounded or the network drops, Outrigger reconnects as soon as it can, with scrollback intact. In version 1.1 and later, you pick or create a tmux session when you connect, and after a dropped connection Outrigger reattaches the shell to its session. In version 1.0.1, you can give a host a startup command so tmux reattaches on every connect, which keeps the server-side session alive between connections.

The ✦ assist runs on device by default. It reads your scrollback to summarize what happened while you were away, and that text never leaves the phone. In version 1.1 and later, in a tmux session it can also fetch the tmux history added while you were away, including while the phone was disconnected. You can instead add your own Anthropic or OpenAI API key, in which case requests go directly from the phone to that provider.

~/themes

True colour, correct ANSI mapping, and powerline glyph support. Tap a card to preview this page in that theme.

Outrigger Dark
❯ systemctl status caddy
● active (running)
⚠ 2 restarts today
↳ since 09:12
Outrigger Light
❯ systemctl status caddy
● active (running)
⚠ 2 restarts today
↳ since 09:12
Catppuccin Mocha
❯ systemctl status caddy
● active (running)
⚠ 2 restarts today
↳ since 09:12
Dracula
❯ systemctl status caddy
● active (running)
⚠ 2 restarts today
↳ since 09:12
Nord
❯ systemctl status caddy
● active (running)
⚠ 2 restarts today
↳ since 09:12
Gruvbox Dark
❯ systemctl status caddy
● active (running)
⚠ 2 restarts today
↳ since 09:12
04 pricing
free
$0

The free version does not expire.

  • 1 host
  • 5 snippets
  • On-device ✦ assist (iPhone 15 Pro or later)
  • All four house themes
full version
$24.99 once

One purchase covers all features and future updates.

  • Unlimited hosts and snippets
  • Cloud ✦ assist with your own Anthropic or OpenAI key
  • Additional themes
  • Family Sharing
Coming soon
what we don't do
  • No subscription
  • No accounts
  • No analytics SDKs
  • No ads
  • No cloud sync of keys; device-only Keychain items do not migrate to another phone

The privacy policy is one page.

It lists every piece of data the app handles and where it goes: the servers you connect to, and your own AI provider if you opt in.

Read it →