Repository navigation
Releases
iSH+ 0.2.2
Use your own VPN with iSH+, plus fixes for settings, memory and security keys.
New
- The iSH+ JIT shortcut (iOS 27). If you use another VPN, such as Tailscale, you no longer switch to LocalDevVPN by hand. Add the shortcut in Settings > JIT Setup. When Linux starts, it switches to LocalDevVPN, and once JIT is on it reconnects your VPN, or disconnects LocalDevVPN if none was on. It works like Madeira's JIT shortcut and needs no special entitlement, so it works with free accounts too (#5).
- Finer memory settings. The memory slider moves in 16 MB steps.
Fixed
- No more freeze in Settings. Switching Automatic Memory off no longer freezes iSH+ until iOS ends it (#6).
- Safer automatic memory on large devices. Automatic memory is at most 60% of the memory iOS lets iSH+ use, and the maximum keeps 10% of it free. On a 12 GB iPhone, Linux got 5.5 GB of a ~6.1 GB limit, and iOS ended iSH+ once Linux used it. It now gets 3.5 GB there. 3 GB iPads keep 1 GB.
- Security keys: logins one right after another work. iOS refuses a new NFC session for a moment after the last one closes, so iSH+ now waits for it and retries (#4).
Installing
Sideload iSH-plus-0.2.2.ipa; updating keeps your distributions. See the README for setup, the iSH+ JIT shortcut, and which sideloaders keep which entitlements.
iSH+ 0.2.1
Security key fixes, from testing on an iPhone in #1 and #3.
Fixed
- Logins after the first now work. The NFC session from one login could close the next one, so every login after the first failed instantly. Only one NFC session is now active at a time (#3, by @schmitzoide).
- The NFC sheet closes once a login is done, with "Done. You can remove the key.", instead of staying up for 5 seconds.
- If the key leaves the field mid-login, iSH+ asks for it again instead of failing.
Improved
- One tap less per login. The key's information is remembered, so a login only needs the key for the signature itself.
- Clearer failures without NFC. On an iPad, or on a copy of iSH+ signed without the NFC Tag Reading capability, iSH+ now explains why security keys can't work. Linux also keeps seeing a FIDO2 device instead of
sshreporting "device is not fido2". - README: explains which sideloaders and accounts can provide NFC.
Installing
Sideload iSH-plus-0.2.1.ipa. Security keys need a signing profile with the NFC Tag Reading capability: a paid developer account, and a sideloader that applies it. iloader currently doesn't. Updating from 0.2.0 keeps your distributions.
iSH+ 0.2.0
The second preview of iSH+: Linux servers in your browser, instant resume, VM settings, security keys over NFC, and the iSH features that 0.1.0 had lost.
New
- Servers open in your browser. Start a server in Linux and it's at
localhost:<port>on the device: sessions menu > Open in Browser. Servers that only listen on Linux's own localhost (many dev servers) work too. Settings > Linux VM can share the ports with other devices on your network. - Instant resume. When iSH+ goes to the background, Linux is saved, with a checkpoint of its disk so the two match. If iOS closes iSH+, you can resume where you were: iSH+ asks after enabling JIT. With Keep Running in Background on, Linux keeps running and is saved every 10 minutes, since iOS may close iSH+ anyway.
- Settings > Linux VM:
- Memory: set automatically for your device (1 GB on 3 GB iPads), or with a slider or a typed value, up to what iOS lets iSH+ use with a margin.
- CPU cores.
- Open ports, and whether they're shared on your network.
- Bigger disks. Swipe a distribution in Settings > Distributions > Disk Size. Linux grows its file system the next time it starts.
- Files app. Files > iSH+ > Shared is
/mnt/iosin Linux, and~/iOSin your home folder. - Clipboard.
pbcopyandpbpasteuse the iOS clipboard. tmux and vim can copy to it as well. - Shortcuts. The Run Command action runs a command in Linux and returns its output: in the background if Linux is running, otherwise iSH+ opens to start it.
- Security keys over NFC (#1, on iPhone). Linux sees a FIDO security key, so
sshwithsk-keys asks you to hold your YubiKey (or another FIDO key) near the iPhone. Not yet tested with a real key: reports are welcome. - x86_64 programs built for glibc. Most prebuilt downloads now work alongside musl ones: FEX uses Ubuntu 24.04's libraries.
apt-x86 install <package>installs x86_64 Ubuntu packages, replacingapk-x86. - A new app icon. iSH's original icon is still available in Settings > App Icon.
Improved
- Tailscale and VPN names. MagicDNS names like
my-macresolve in Linux: DNS now goes through iOS's resolver, which follows VPNs' DNS settings. - Memory goes back to iOS. Memory Linux frees is returned to iOS, so iOS is less likely to close iSH+.
- Ping works for every user, not only root.
- New distributions:
- Faster first boot: the disk is no longer filled with zeros in the background, which also saves storage.
- No extra
ubuntuaccount in Ubuntu.
- Terminal:
- The history scrolls a row at a time.
- The margin around the text is back, as in iSH.
- Caps Lock as Control or Escape works again.
- The bell flashes the screen.
- JIT:
- StikDebug is the fallback when the built-in enabler isn't set up or fails.
- The JIT helper exits once JIT is enabled.
- Smaller app. The old iSH engine is gone and the QEMU libraries are stripped.
Fixed
- Close Session removes the session and frees its console (#2). The next session on that console starts with a new shell.
- Disk errors: no more I/O errors when a new distribution's disk is formatted.
Installing
Sideload iSH-plus-0.2.0.ipa (AltStore, SideStore, Feather...), keeping its entitlements; JIT needs get-task-allow. See the README for the setup with LocalDevVPN and pairing. Updating from 0.1.0 keeps your distributions.
Requires iOS 26 or later (iOS 27 to pair on the device). Security keys need an iPhone with NFC.
iSH+ 0.1.0
The first preview of iSH+, a fork of iSH that runs a real Linux kernel in a virtual machine (QEMU, with JIT) instead of iSH's own emulator.
Highlights
- Real Linux. Linux 6.18 runs in QEMU. JIT makes it fast, and iSH+ enables JIT by itself once it is paired with your device. It falls back to StikDebug, or to a much slower mode that runs without JIT.
- Any distribution. Install Alpine, Debian, Ubuntu, Arch, Artix, Fedora, openSUSE, Void, Kali, Rocky, Alma and more (arm64), each with its own user account. Add, switch and delete them in Settings > Distributions.
- x86_64 programs run through FEX. glibc and musl programs both work, and
apt-x86installs x86_64 Ubuntu packages. - A native terminal (SwiftTerm) with Liquid Glass, mouse input for terminal apps, Termux-style scrolling and multiple sessions. It keeps running in the background.
- iOS integration. The Shared folder in the Files app is
~/iOSin Linux.pbcopyandpbpasteuse the iOS clipboard, and the Run Command action runs a command from Shortcuts.
Installing
Sideload iSH-plus-0.1.0.ipa with AltStore, SideStore, Feather or a similar tool. Your sideloader re-signs it. Keep its entitlements, since JIT needs get-task-allow.
Then:
- Install and connect LocalDevVPN.
- Pair iSH+ with your device. Use Pair With This Device in the setup (iOS 27), or import a pairing file, for example from StikPair.
- Choose a distribution and create your account. It downloads during setup and installs when it first starts.
Requirements
- iOS 26 or later. Pairing on the device needs iOS 27.
- Developer Mode on.
- About 100 MB for the app, plus storage for each distribution.
Known limitations
- The VM has 1 GB of memory.
- Changing distribution requires restarting iSH+.
- A session's history does not survive iSH+ being ended.
- The no-JIT mode is untested.
- Mouse input is untested with a real mouse or trackpad.