How to enable JIT for iOS 17 using SideJITServer

SideJITServer is a command line utility designed to activate Just-In-Time (JIT) functionality for compatible applications operating on iOS 17 devices, seamlessly bridging Windows, Linux, and macOS within the shared WiFi network. Developed and continually refined by nythepegasus, a valued member of the SideStore team, this tool empowers users with enhanced performance capabilities for JIT iOS apps.
SideJITServer is a Python script designed to be executed within a Python environment on your desktop. As of its latest release, it mandates the following component versions: `pymobiledevice3>=4.2.3,<4.3.0`, `Flask==3.0.2`, and `zeroconf==0.132.2`. Attempting to use different versions of these components may result in errors when running SideJITServer. Therefore, it's crucial to adhere to these specified versions to ensure optimal functionality.
What is SideJITServer?
SideJITServer, developed by nythepegasus from SideStore, is a tool that enables Just-In-Time (JIT) compilation on iOS 17.0 – iOS 18.3 for all devices that support it. It works similarly to Jitterbug, which allows one iOS device to launch apps with a debugger on another iOS device with JIT enabled.
This tool runs from the command line (Terminal) and supports both Linux and Windows. Since it's written in Python, you can technically run it on any Linux distribution. It relies on the pymobiledevice3 library, so you'll need to have that installed.
SideJITServer isn’t just useful for emulators like DolphiniOS and Delta — it also works with virtualization apps like UTM for iOS. This means you can run full Linux or Android environments on your iPhone, much like VirtualBox.
Installing SideJITServer
Step 1. Create a virtual environment named "venv" using Python to use an isolated environment for the Python project.
python3 -m venv venv
Step 2. Install SideJITServer following the pip3 installation command for the package.
pip3 install SideJITServer
Step 3. Install pymobiledevice3, the python3 implementation of various tools for iDevices. It's recommended to use the latest version of pymobiledevice3 <4.3.0.
python3 -m pip install -U pymobiledevice3
Step 4. Execute the launch command to see if SideJITServer is installed on your Desktop. Additionaly open the http://127.0.0.1:8080 in your browser to view if the device is paired.
SideJITServer --help

Configuration
Step 1. Connect your iOS 17 device to your computer and execute the following command to pair it. Next, grab your iPhone and continue the next steps.
SideJITServer --pair

Step 2. On your iPhone's Home Screen, a 'Trust This Computer?' popup will appear. Tap on trust and provide your PIN to allow connection between the PC and iDevice.

Step 3. Run SideJITServer to start the server on your computer. It may require a sudo command. In this case, enter your password when prompted.
SideJITServer

Step 4. Add this Shortcut required to detect and run apps in JIT mode.
Step 5. Tap on 'Set Up Shortcut' from your device's screen.

Step 6. Provide your device's UDID. It can be easily discovered by entering this IP http://127.0.0.1:8080 in your browser. Example UDID "00022010-001A5BC60CS9012X".

Step 7. Next, enter your server address. It will be displayed in the terminal app running SideJITServer. It's important to provide the full URL address including http and port.
http://192.168.0.241:8080

Enabling JIT for iOS 17 app
Step 1. Be sure that SideJITServer is running on your Desktop. If it's installed correctly you will see the paired device UDID in your browser. Open the Shortcuts app from your iOS 17 Home Screen and tap on the SideJIT previously added shortcut.

Step 2. Allow SideJIT to connect to "192.168.0.241".

Step 3. SideJIT will display a list of all installed apps on iOS 17 with support for JIT. Select the one you like to open in JIT mode.

Step 4. The application should open in JIT-enabled mode on iOS 17.

What's new
- Fix broken compilation for v1.4.0
- Fix pairing file option
- Compile: remove unnecessary includes, python 3.12.
- Reduced Python requirement to 3.9.
- Improvement for docker.
- Compile to direct executable on Windows x64, Ubuntu x64, and MacOS arm.
- Add Bonjour / mDNS Support.
- Fix Bonjour Support.
- Add a safety catch for pymobiledevice3.
Comments
Amy 6 months ago
Hello I’ve been following this tutorial but keep running into a problem when I try to run the server with ‘sudo SideJITServer’. I get the ERROR 48, error while attempting to bind on address, address already in use
On the bottom it also says Pymobiledevice3.exceptions.DeveloperModeIsNotEnabledError ()I already have developer mode turned on for my Mac computer. Please help I don’t know how to fix it.
qbap 6 months ago
Use Activity Monitor to shut down the previous Python process to fix the address already in use or restart the Mac. Update the scripts. New versions of SideJITServer and pymobiledevice3 are released almost daily. Use pymobiledevice3 to enable/disable developer mode or query its state on your iPhone. Find what process is using the port 49151 and kill it. Repeat all steps from the article.