# StikDebug: an on-device JIT enabler for sideloaded iOS apps

> StikDebug turns a paired iPhone into a JIT host for sideloaded apps on iOS 17.4 and later. It is useful, narrow, and dependent on a loopback VPN and a valid pairing file.

**StikDebug/StikDebug** — An on-device debugger/JIT enabler for iOS versions 17.4+, powered by idevice.

- Repository: https://github.com/StikDebug/StikDebug
- Website: https://stikdebug.xyz/
- Stars: 2,576 · Forks: 266
- Language: Swift
- License: AGPL-3.0
- Published: 2026-09-28 · Updated: 2026-09-28 · Language: en
- Canonical page: https://hysenlabs.com/projects/stikdebug-stikdebug

## The problem StikDebug solves for sideloaded apps

iOS refuses Just In Time compilation to apps it did not ship itself. A sideloaded emulator or a scripting runtime that depends on JIT will run, then fail or fall back to an interpreter, because the process lacks the entitlement Apple grants to its own software. StikDebug exists to flip that switch on the device itself, without tethering to a Mac after the initial setup.

The README is explicit about the audience. JIT works for sideloaded apps that carry the get-task-allow entitlement, so the tool is aimed at people who already install apps outside the App Store and know what entitlements their build has. Alongside JIT it lists app launching, a console for live app and system logs, script management, app expiry and profile handling, device metadata, process inspection and termination, and GPS location simulation. Those extras make it a general on-device inspection panel rather than a single-purpose toggle.

It is not a general iOS debugger in the Xcode sense. There is no mention of breakpoints, LLDB attachment, memory inspection or symbol resolution. If you need those, this is not the tool.

## How the idevice connection works and why the VPN matters

StikDebug is built on idevice, the Swift implementation of the device communication protocols that Apple's own tooling uses. The pairing file is the credential: a .plist or .mobiledevicepairing record that proves this host is trusted by this device. StikDebug imports that file and uses it to talk to the device over a loopback connection.

That loopback detail explains the VPN requirement. The README tells users to launch LocalDevVPN and enable it before enabling JIT, and the troubleshooting section repeats the point: heartbeat errors mean the VPN is off or the device is not on Wi-Fi. A loopback VPN gives the app a local interface it can bind to, which is why the instructions treat it as a prerequisite rather than a suggestion.

The repository layout matches a single Xcode project: StikDebug.xcodeproj, the StikDebug app target, StikDebugTests and StikDebugUITests, plus an assets folder. There is no server component and no companion daemon to run on a computer. Everything happens on the phone. The README also points to a separate StikJIT repository for people integrating the same capability into their own projects, which suggests the JIT logic is meant to be reusable outside this app.

## Installing StikDebug on iOS

The README states that StikDebug is no longer available on the App Store and directs users to two official routes: an AltSource entry at stikdebug.xyz/index.json, or the direct .ipa attached to the latest release. The current release listed in the repository is 3.1.13.

If you prefer to build it yourself, the project documents an Xcode path. Clone the repository first:

```bash
git clone https://github.com/StikDebug/StikDebug.git
cd StikDebug
```

Then open StikDebug.xcodeproj in Xcode 16 or later, select the StikDebug target, set a unique bundle identifier under Signing and Capabilities, and run on a connected device. The README notes that Xcode 26 or later is preferred for iOS 26 support, and that the device must be on iOS 17.4 or later for testing. After install you trust the certificate under Settings, General, VPN and Device Management.

Whichever route you take, the setup is the same: obtain a pairing file for your device, enable the loopback VPN, then open StikDebug and tap Enable JIT and pick the sideloaded app from the list. The README links a separate pairing file guide for the first step and suggests the Discord if that guide is not enough.

## Compatibility limits and the wrong-tool cases

The compatibility table is the first thing to read. iOS 1.0 through 17.3.X is listed as not supported, with the note that those versions use different connection protocols. iOS 17.4 through 18.x is fully supported and described as stable. iOS 26.0 and later is supported but with limited app availability, and the README adds that developers need to update their apps to work.

That last row is a real constraint rather than a formality. A supported operating system does not mean the app you want to run will benefit. If the app has not been updated for iOS 26, StikDebug can be installed and connected and still not deliver what you wanted.

The entitlement requirement is the second limit. JIT is enabled for sideloaded apps that have get-task-allow. An app built without it is out of scope, and no amount of pairing or VPN configuration changes that. The README does not document a way to add the entitlement after the fact.

Troubleshooting entries point at the same dependencies. Connection dropped or loopback errors are attributed to iOS version compatibility or beta warnings. Heartbeat errors are attributed to the VPN being off, the device not being on Wi-Fi, or a pairing file problem. Pairing file problems are answered with a single instruction: replace the file with the device unlocked and trusted. There is no documented offline mode, and the README does not describe using cellular data instead of Wi-Fi.

## StikDebug versus a desktop-based JIT workflow

The alternative most users come from is a desktop tool that attaches to the device over USB, such as the various debugserver-based JIT enablers that require a Mac or PC present for every session. The difference in approach is where the trust and transport live. A desktop workflow keeps the pairing and the connection on the computer, so JIT only works while the computer is connected and the cable is attached.

StikDebug moves that to the phone. The pairing file is imported once, the loopback VPN supplies the local transport, and JIT is enabled by tapping a button in the app. The trade is that you now depend on the VPN staying enabled and on the pairing file remaining valid, which is why the troubleshooting section reads the way it does.

A second comparison is with the emulator or runtime projects themselves. Some ship their own JIT acquisition path or ask users to launch through a specific host app. StikDebug is agnostic: it lists every app installed on the device, and the README's script feature is described as mainly used for iOS 26 JIT, which suggests the project expects to adapt as the platform changes. If your runtime already handles JIT on its own, adding StikDebug is redundant.

## Licence, maintenance and upgrade cost

StikDebug is licensed under AGPL-3.0, with the LICENSE file at the repository root. The AGPL is a strong copyleft licence, and it is worth reading the actual terms rather than assuming they match a permissive licence. For anyone integrating StikJIT into another product, the README points to a separate integration guide, and the licence question is the one to settle before writing code. This is not legal advice; the LICENSE file is the authority.

The repository is not archived, and the last push was on 2026-09-28, the same day as release 3.1.13. Releases 3.1.12 and 3.1.11 landed on 2026-09-27 and 2026-09-23, so the project is publishing frequently at the moment. That cadence has a cost for users: the .ipa download URL is version-specific, so a bookmarked link to an older release will not track the current build, and sideload tools that refresh from an AltSource need the source URL rather than a stale file.

Upgrade cost is mostly operational. Pairing files can go stale, and the README's answer is to replace the file with the device unlocked and trusted. There is no documented migration path between versions, no changelog in the repository, and no rollback procedure described. If a new release breaks your workflow, the README does not tell you how to go back.

## Conclusion

StikDebug fits people who already sideload and keep a refreshed pairing file, and who accept a loopback VPN as part of the workflow. It is the wrong tool for anyone on iOS 17.3 or earlier, since the README lists those versions as not supported, and for anyone expecting the App Store build, which the project says is gone. Before adopting it, verify your iOS version against the compatibility table, confirm you can produce a pairing file for your device, and check whether the app you want to debug actually carries the get-task-allow entitlement.

## FAQ

### What is StikDebug used for?

It enables JIT for sideloaded iOS apps that have the get-task-allow entitlement, and also offers app launching, live logs, script management, app expiry and profile handling, device info, process inspection, and GPS location simulation.

### Is StikDebug on the App Store?

No. The README states that StikDebug is no longer available on the App Store and directs users to the AltSource entry or the direct .ipa release download instead.

### Why was StikDebug removed?

The README only says it is no longer available on the App Store and points to the official download methods. It does not give a reason for the removal.

### Can I use StikDebug without Wi-Fi?

The README's troubleshooting says heartbeat errors mean the VPN is off or the device is not connected to Wi-Fi, so Wi-Fi is treated as a requirement. No offline mode is documented.

### How do I install StikDebug on iOS?

Add the AltSource at stikdebug.xyz/index.json, or download the .ipa from the release page, or build it from source in Xcode 16 or later with a unique bundle identifier and a device on iOS 17.4 or later.

### How do I use StikDebug to enable JIT?

Import a valid pairing file, enable a loopback VPN such as LocalDevVPN, then open StikDebug, tap Enable JIT, and select the sideloaded app from the list.

## Sources

- [License: AGPL-3.0](https://github.com/StikDebug/StikDebug/blob/main/LICENSE)
- [Project website](https://stikdebug.xyz/)
- [README](https://github.com/StikDebug/StikDebug/blob/main/README.md)
- [Releases](https://github.com/StikDebug/StikDebug/releases)
- [StikDebug/StikDebug on GitHub](https://github.com/StikDebug/StikDebug)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/stikdebug-stikdebug
