Outrigger outrigger App Store — soon
❯ 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: keys are 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

Private keys are 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 also requires Face ID. The app has no accounts, no telemetry, and connects to no servers other than the ones you configure.

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.

And when you want a clean break, Erase everything wipes all local data behind a typed confirmation — hosts, saved passwords, host-key pins, Secure Enclave identity keys, and stored API keys. Nothing recoverable is left on the device. Your one-time purchase is the only thing kept, because it lives with your Apple ID rather than the device — Restore Purchase brings it back.

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. 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. 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; they stay on this phone and never enter a backup

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 →