Scripts/StikDebug/README.md
These scripts extend StikDebug — a VPN-based iOS debugger — to enable Just-In-Time (JIT) compilation in Provenance.
StikDebug attaches a debugger to your debuggable/sideloaded app over a VPN tunnel, which allows JIT execution on iOS (similar to attaching Xcode). Your app must already be signed with the necessary entitlements (for example via AltStore, SideStore, or TrollStore); StikDebug does not modify or add entitlements and does not require a Mac, a jailbreak, or a developer certificate.
provenance.js — iOS 26 W×X JIT helperiOS 26 enforces Write-XOR-Execute (W×X) page protections via the Trusted Execution Monitor (TXM). Dynarec-based emulator cores (Mupen64Plus, Flycast) emit a BRK #0x69 sentinel before each JIT write to signal that memory pages need dual-mapping:
provenance.js intercepts BRK #0x69, asks TXM to authorise the region via prepare_memory_region, then creates the RW alias via vm_remap. This is identical to the pattern documented in the ManicEMU project.
Required for: Mupen64Plus dynarec, Flycast ARAM recompiler on iOS 26+. Not needed on: iOS ≤ 25 (W×X not enforced), interpreter-only cores, or when using TrollStore / iOS 26 native JIT entitlement.
provenance.js.Provenance supports multiple JIT acquisition paths in priority order:
| Method | iOS Version | Requires |
|---|---|---|
iOS 26 native JIT (JITAuthorizer) | 26+ | com.apple.developer.kernel.allow-jit entitlement |
| TrollStore | Any | TrollStore install |
| AltStore / SideStore (SideKit) | Any | AltStore or SideStore on same network |
| StikDebug | Any | StikDebug app |
| JITStreamer | Any | JITStreamer on Mac |
| Xcode debugger | Any | Xcode on Mac |
For most users without a Mac, StikDebug or TrollStore is the recommended path.