Install LinPad
LinPad is sideloaded: you install it with your own Apple ID. It is not on the App Store and does not need a jailbreak.
Status: the first public release (v1.0) is being prepared. The source below starts listing LinPad when it is published on GitHub Releases. Until then you can build it from source.
Requirements
| iPad | Apple Silicon (M1 or newer). Developed on an iPad Air with M3. 8 GB of memory is recommended for VS Code. |
|---|---|
| iPadOS | 17 or later. |
| Storage | Several GB free: the Linux system unpacks to about 2.3 GB, and apps you add take more. |
| Apple ID | Free or paid. A free Apple ID's apps expire after 7 days unless refreshed. |
| Keyboard | Optional but recommended. Trackpad, mouse and touch all work. |
Option A: SideStore or AltStore
Add the LinPad source
https://raw.githubusercontent.com/fspecii/LinPad/main/release/source.jsonIn SideStore: Sources › Add, paste the URL.
Install LinPad
Install it from the source. Updates appear in the sideloader, and LinPad also tells you about them in Settings › Updates.
Option B: install the IPA
Each release has LinPad-<version>.ipa. Install it with iloader, Sideloadly or Xcode, signed with your own Apple ID. Releases are not signed with the project's certificate on purpose.
First launch
LinPad unpacks its Linux system once, then opens a short setup: pick a layout, a colour theme and a wallpaper, tick the optional apps you want, and try the keyboard shortcuts. At the end, "Show Me" opens a browser, a terminal and Files tiled side by side.
Fast mode (native JIT)
iPadOS only lets an app generate native code while a debugger is attached. LinPad asks StikDebug to attach at launch, then runs Linux programs as native ARM64 code. Without it everything still works, more slowly, in compatibility mode.
- Install StikDebug and LocalDevVPN.
- Turn on Developer Mode on the iPad.
- Make a pairing file for the iPad on a computer (iloader can do it) and import it into StikDebug, following StikDebug's guide.
- Connect LocalDevVPN.
- In LinPad, open Settings › Fast Mode. It checks each step, has a button for each, and a "Test now" button.
LocalDevVPN uses the iPad's single VPN slot, so it conflicts with another VPN while connected. Fast mode has not been benchmarked on an iPad yet; the 4.8× figure is the geometric mean of our benchmarks on an M4 Mac.
Updates and your files
- Never delete the app to reinstall it. Deleting LinPad deletes its Linux system and your files in it. Install the new version over the old one with the same Apple ID.
- Linux system updates download in the background, are verified with SHA-256, and install at the next launch.
/root,/homeand your packages are kept. - If something breaks after a package upgrade, Settings › Maintenance › Repair puts LinPad's own files back.
Option C: build from source
You need a Mac with Xcode, Homebrew llvm lld meson ninja libarchive, and libimobiledevice.
export PATH=/opt/homebrew/opt/lld/bin:/opt/homebrew/opt/llvm/bin:$PATH
gpu/build-third-party.sh # virglrenderer + MoltenVK (once)
release/build-rootfs.sh # the Alpine system image (~50 min)
xcodebuild -project iSH.xcodeproj -target iSH-ARM64 -configuration Release -sdk iphoneos \
-allowProvisioningUpdates SYMROOT=$PWD/build-ios-release IPHONEOS_DEPLOYMENT_TARGET=17.0 \
DEVELOPMENT_TEAM=<your team> ISH_JIT_BUILD=enabled build
release/embed-rootfs.sh --device "build-ios-release/Release-iphoneos/iSH ARM64.app" \
release/out/ish-linux-rootfs-arm64.tar.gz
ideviceinstaller install "build-ios-release/Release-iphoneos/iSH ARM64.app"
The full guide is release/INSTALL-DEVICE.md.
Visual Studio Code and Claude Code are not part of LinPad's releases. They are downloaded on your iPad from Settings › Apps when you choose them.