Portlight. Your servers, from your phone.
An open-source SSH terminal for iPhone and iPad. Made for reaching cloud servers: AWS, Google Cloud, Azure, DigitalOcean, or anything that speaks SSH. A real xterm terminal, keys kept in the Keychain or Secure Enclave, and voice input made for talking to coding agents.
Not on the App Store. Build it with Xcode (a free Apple ID works, though free builds need re-running every 7 days), or sign a release IPA yourself.
MIT · iPhone & iPad · iOS 17+ · Android version planned
A terminal that works on a phone.
Not a desktop terminal squeezed onto a small screen.
A real terminal
xterm-256color via SwiftTerm. vim, tmux, htop and friends work, with seven themes to choose from.
Keys the phone lacks
A scrolling key bar with Esc, sticky Ctrl and Alt, Tab, auto-repeating arrows, shell symbols and F1–F12.
Landscape on demand
Rotate the terminal from the tab bar, even with rotation lock on. The server is told the new size.
Text that fits
A− / A+ or pinch to zoom. Fit 80 columns picks the size that shows 80 characters across.
Speak to type
Speech is recognised on the phone and lands in a draft you can edit. Insert types it and never presses Return.
Saved commands
git status, terraform plan and your own, one tap away. Typed, not run, unless you opt in. Secrets are refused.
Tabs
Keep several sessions open. Each tab's screen survives switching apps and locking.
Keys, not passwords
Generate Ed25519 or ECDSA keys, or a Secure Enclave key that can never leave the phone. Import OpenSSH and PEM keys.
Jump hosts
Reach private instances through a bastion, like ProxyJump. Every hop has its host key checked under its own name.
Bring your setup
Import ~/.ssh/config and known_hosts, hashed entries included. Quick connect from user@host:port or a pasted ssh command.
Cloud-aware defaults
Per-provider usernames (ec2-user, ubuntu, azureuser…) and the right public-key line for each, including GCP's format.
Run on connect
Give a host a command like tmux new -A -s main so work survives dropped connections. Reconnect is one tap.
It holds the keys to your servers.
So it's built to protect them first and be convenient second.
Always locked
Opens only with Face ID, Touch ID or your passcode, and re-locks when it leaves the foreground. It won't run on a phone without a passcode.
Keychain, this device only
Passwords and keys never sync to iCloud or go into backups, and iOS itself withholds them until you authenticate.
Host keys checked
Trust on first use with the SHA-256 fingerprint shown. A changed key stops the connection and shows both fingerprints. No password or key is sent before the host key is accepted.
Clean pastes
Pastes and saved commands are stripped of control characters, so an embedded escape can't end a bracketed paste early and run what follows.
Filtered output
Server output passes through a filter first: kitty graphics are dropped, over-long escape strings are capped and title-stack floods are ignored.
No tracking
No accounts, analytics, crash reporters or third-party SDKs. The only network connections are the SSH connections you start.
Not externally audited yet. The core SSH and crypto code is well tested, but the app hasn't had an external security audit. Read what it protects, and its limits →
Pairs well with Suvadu
Run Claude Code, or any coding agent, on your server and steer it from your phone with Portlight: say the instruction, check the draft, send it. Install Suvadu on the same server and it records every command the agent ran, so you can see exactly what happened while you were away from the keyboard.
Build it in about ten minutes.
You need a Mac with Xcode 26 or later, an iPhone or iPad on iOS 17 or later, and an Apple ID. A free one is enough.
1. Clone and open the project
make opengenerates the Xcode project with XcodeGen and opens it.git clone https://github.com/AppachiTech/portlight-ios.git cd portlight brew install xcodegen make open
2. Set up signing
Add your Apple ID in Xcode under Settings → Accounts, then put your team ID and a bundle ID unique to you in the git-ignored signing config. The first build may also ask you to enable SwiftTerm's build plugin and download the Metal Toolchain.
3. Run it on your phone
Turn on Developer Mode on the iPhone, pick it as the run destination and press Run. The first time, trust your Apple ID under Settings → General → VPN & Device Management.
4. Renew when needed
With a free Apple ID the app stops opening after 7 days: press Run again. A paid developer account makes builds last a year.
Prefer not to build? Tagged releases include an unsigned IPA with a SHA-256 checksum and a build provenance attestation. Verify it, then sign it with your own Apple ID using an open-source tool such as SideStore or AltStore.
Frequently asked questions
Is Portlight on the App Store?
No, and there are no plans to publish it there for now; that may change later. You build it yourself with Xcode, or sign a release IPA with your own Apple ID. A free Apple ID works, but those builds stop opening after 7 days until you run them again. A paid developer account makes them last a year.
Which servers and clouds does it work with?
Anything that speaks SSH: AWS, Google Cloud, Azure, DigitalOcean or your own machines. Portlight is an SSH client only, so tools like the aws and gcloud CLIs run on the servers you connect to.
Does it support RSA keys?
Not yet. SwiftNIO SSH, which Portlight is built on, doesn't support RSA user or host keys. Generate an Ed25519 key in the app instead; every mainstream cloud image also has an Ed25519 host key.
Does voice input send my audio anywhere?
No. Speech is recognised on the phone itself, and where that isn't available Portlight says so rather than sending audio to Apple's servers. The microphone is only on between Speak and Stop.
Do connections stay open in the background?
iOS suspends apps in the background, so connections usually drop after a short while. Run tmux or screen on the server so your work survives, then tap Reconnect.
Is there an Android version?
Not yet. An Android version of Portlight is planned. Follow github.com/AppachiTech on GitHub to hear when it's available.
Is it open source?
Yes, MIT licensed. Source at github.com/AppachiTech/portlight-ios.
Open source, MIT licensed
Build exactly the code you can read. Bug reports, ideas and pull requests are welcome.