Play Spiral Knights on iPhone and iPad. SKapsule runs the real desktop game client on your device: a bundled Java 25 runtime, the game's OpenGL renderer translated to OpenGL ES, OpenAL audio, touch and controller support, and Web or Steam login (including Steam Guard).
Warning
Experimental. Gameplay has been reached on device, but recent builds are still being stabilised and crashes are expected. Bug reports with logs are very welcome.
SKapsule is an unofficial fan project, not affiliated with or endorsed by SEGA or Grey Havens. It doesn't include the game: the client is downloaded from the official servers on first launch, exactly like on desktop, and you play on your own account.
The Android version is SKapsule.
- Requirements
- Installing
- Enabling JIT
- Playing
- Troubleshooting
- Privacy
- Building from source
- Credits and licences
- An iPhone or iPad on iOS/iPadOS 17.4 or later. Development happens on iOS 26.
- JIT. It is not optional: without it the game falls back to an interpreter and is far too slow to play. SKapsule can enable it itself, or through the StikDebug app (see Enabling JIT).
- About 1.5 GB of free space. The game downloads about 440 MB on first launch.
From a source (AltStore, SideStore and other stores that take AltStore sources). Add this source URL in your store, then install SKapsule from it and get updates automatically:
https://raw.githubusercontent.com/SirDank/sources/main/apps.json
Manually. Download SKapsule.ipa from
Releases and install it with your
store, Xcode or a signing service.
The install must keep the get-task-allow entitlement, because that is what lets a
debugger attach and enable JIT. Sideloading with your own Apple ID keeps it, and so can
signing services. If SKapsule reports "This install lacks get-task-allow", reinstall
with a method that keeps it.
On a free Apple ID, SKapsule uses two of your three app IDs: one for the app and one for its built-in JIT helper.
A SKapsule-TrollStore.tipa is also built, which enables JIT through TrollStore instead.
It has not been tested.
Open JIT Setup in the sidebar and pick one of the two methods below. You only need one.
- Turn on Developer Mode: Settings → Privacy & Security → Developer Mode.
- Install LocalDevVPN and connect it.
- Get your device's pairing file: the one StikDebug uses, or one made with
idevice_pairon a computer. In SKapsule, open JIT Setup → Import Pairing File and pick it. - Tap Enable JIT. The first time, SKapsule downloads and mounts the Developer Disk Image, which takes a while. It then stays mounted until the device restarts.
Check Setup tests the connection without launching the game. If you have no Wi-Fi, turn on cellular data, connect LocalDevVPN, then turn on Airplane Mode before returning to the app. If preparing keeps failing, restart the device or use Reset Developer Disk Image.
The pairing file is a credential for your whole device, so SKapsule keeps it where the Files app can't reach it. Built-in JIT is unavailable inside LiveContainer.
Install StikDebug and set it up, then tap Enable JIT in SKapsule. SKapsule hands StikDebug its JIT script in the same request, so there is nothing to import.
Older StikDebug versions ignore that script. If the JIT pill never turns green, update
StikDebug, or import skapsule-jit.js from SKapsule's folder (Open Folder in the
sidebar) in StikDebug's Tools and assign it to SKapsule.
- Tap Enable JIT and wait for the pill to turn green ("JIT enabled").
- Tap Launch and pick Web or Steam login.
If you tap Launch first, SKapsule asks for JIT itself and starts as soon as it is granted. The first launch downloads the game, so give it a few minutes.
Controls. On-screen touch controls appear in game. To rearrange them, tap ⚙ in game or Edit Controls in the sidebar: drag controls around, show or hide each one, and change their size, their opacity and the render resolution. Bluetooth controllers and keyboards are supported, and so are mice and trackpads on iPad (less tested).
Mods. Download Modpack in the sidebar fetches the Spiral Knights Modpack; you can also put
your own mods in the mods folder (Open Folder). Apply Mods installs them and
Remove Mods restores the game's original files. A few config files that often clash with
game updates are never replaced, the same ones KnightLauncher skips. Downloading the modpack
never deletes mods you added yourself.
News. The home screen shows current in-game events from the same feed as KnightLauncher. Tap a card to open the event page.
Game Mode. On iOS 18 and later, iOS turns on Game Mode while SKapsule runs, which cuts background activity and lowers controller latency. iOS may skip it if you reopen the app moments after closing it.
| Problem | What to do |
|---|---|
| "Couldn't enable JIT" | The message gives the reason. For built-in JIT it is usually LocalDevVPN not connected, a missing pairing file, or the Developer Disk Image failing to mount. |
| The JIT pill never turns green | With StikDebug, update it or assign the script by hand (see StikDebug). |
| "This install lacks get-task-allow" | Reinstall with a method that keeps the entitlement (see Installing). |
| The game runs but is unplayably slow | It launched without JIT. |
| The game's interface is tiny | Raise Resolution in the ⚙ panel. The change applies immediately and is remembered. |
The home folder looks empty in Files |
The game's settings are in hidden folders. Connect the device to a Mac and browse SKapsule in Finder to see them. |
If the game crashes or misbehaves, open the sidebar and tap Share Logs, then attach the files to a bug report:
| File | Contents |
|---|---|
latestlog.txt, latestlog.old.txt |
Everything the launcher and game printed, for this run and the one before |
hs_err_pid*.log |
Java crash report, if the game crashed |
vmlog-*.log, vmout-*.log |
Java runtime logs |
Logs are shared as they are and may contain your Steam account name. Skim them before posting them publicly.
When the game crashes, SKapsule sends a crash report to Sentry. A report includes the device model, iOS version, app version, whether JIT was active and, for a Java crash, the crash report plus the end of the previous log. Passwords, tokens, email addresses and the app's folder path are removed from the log before sending, but it can still contain your Steam account name. Reports don't include your device name or location.
To stop sending them, turn off Send crash reports in the sidebar.
You need a Mac with Xcode, Homebrew, Git LFS, and JDK 25 and JDK 8 (CI uses Zulu). These are the steps CI runs:
git clone --recursive https://github.com/SKonstruct/SKapsule-iOS.git
cd SKapsule-iOS
brew install ant maven ninja wget ldid xcodegen
# JAVA_HOME must point at JDK 25 and JAVA8_HOME at JDK 8
./scripts/build-gl4es-ios.sh
./scripts/build-openal-ios.sh
./scripts/build-lwjgl3-ios.sh
./scripts/build-cacio-ios.sh
./scripts/build-frenchpress-ios.sh
./scripts/build-bootstrap.sh
./scripts/stage-app-assets.sh
make package RELEASE=1 # -> out/artifacts/com.skonstruct.skapsule-<version>.ipamake package TROLLSTORE_JIT_ENT=1 builds the TrollStore .tipa.
Xcode. Run make native && make xcode-payload, then build the SKapsule scheme in
SKapsule.xcodeproj. A post-build step re-stages the runtime, so a normal Run picks up
rebuilt components. An app started from Xcode can't get JIT, though, so launch it from the
home screen to play. After adding a source file under Natives/, run xcodegen generate.
Contributors: AGENTS.md has the project conventions and ROADMAP.md the engineering notes and invariants.
SKapsule-iOS is free software under the GNU GPL v3: you can use, study, change and share it, and anything you distribute built from it must stay GPL-3.0 with its source. It contains code adapted from Amethyst-iOS (GPL-3.0). It builds on:
| Project | Used for | Licence |
|---|---|---|
| Amethyst-iOS | JIT script, launch code and build layout | GPL-3.0 |
| AngelAuraMC OpenJDK build | The bundled Java 25 runtime | GPLv2 with Classpath Exception |
| gl4es (upstream) | OpenGL to OpenGL ES | MIT |
| OpenAL Soft (upstream) | Audio | LGPLv2 |
| LWJGL 3 (upstream) | Java bindings | BSD-3-Clause |
| Caciocavallo | Headless AWT | GPLv2 with Classpath Exception |
| StikJIT | Built-in JIT | MPL-2.0, bundled unmodified |
| bootstrap | Game bootstrap, shared with Android | MIT |
| frenchpress | Steam login | |
| Getdown (the official client's build) | Game downloads and updates | |
| DejaVu fonts | Bundled fonts | Bitstream Vera licence |
| Simple Icons | Buy Me a Coffee glyph | CC0 |
Spiral Knights is © SEGA / Grey Havens, LLC.
If you enjoy SKapsule, you can buy me a coffee.