outrigger App Store — soon
❯ outrigger ssh · ios

An SSH client for iPhone.

Moving around a terminal on a phone is miserable everywhere else — 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 follows from caring that much. 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
Outrigger terminal session on iPhone: crew@gyre with service status and agent logs
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.

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
  • Community theme pack
  • 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 →