BoxiOS is an iOS shell/runtime experiment for running Linux x86 and x86_64 binaries through embedded Box86 and Box64 static libraries.
Current release snapshot: 0.1.0 build 126, tested on the target device IPhone 16 Pro Max on April 27, 2026.
- Linux x86_64 binaries are routed to embedded Box64.
- Linux x86 binaries are routed to embedded Box86.
- Runtime logs are written to
Documents/BoxiOS/Logs/runtime.log. - JIT/dynarec is intentionally disabled for the current iOS bring-up path.
- Powder Toy
v99.5.394+steam-x86_64-linux-gnustarts through the Box64 interpreter. - Powder Toy now renders through the BoxiOS MetalGL bridge instead of the old BMP-only fallback.
- Powder Toy colors are corrected on the MetalGL path.
- Touch input is translated to left mouse button events and reaches Powder Toy.
- Observed Powder Toy performance on the current device is about
4.5-5 FPS.
- Static embedded Box64 launch through
box64_library_main(...). - Darwin/native symbol resolution for statically linked Box64.
- Guest pointer relocation for libc and memory wrappers that receive guest ELF addresses.
- libc wrappers for string and memory calls used during Powder Toy startup.
- pthread/TLS bring-up issues on the Box64 interpreter path.
- SDL offscreen rendering through EGL/GLES resolver hooks.
- BoxiOS MetalGL texture upload and raw BGRA publication.
- RGBA/BGRA color handling on the MetalGL texture path.
- Powder Toy input despite SDL being statically linked inside the game ELF.
The current confirmed path is:
- Import a Linux x86_64 game binary in the app.
- BoxiOS selects Box64.
- SDL uses the offscreen video driver.
- Box64 resolves guest EGL/GLES calls to BoxiOS MetalGL.
- MetalGL receives
glTexSubImage2Duploads and publishes BGRA frames to the Swift display view. - Native iOS touches are queued and pumped on
eglSwapBuffers. - For Powder Toy, the Box64 bridge injects SDL mouse motion/button events into the guest SDL event queue.
Fresh build 126 log markers:
BOXIOS_POWDER_SDL_INPUT=1
[BoxiOS MetalGL] texture upload id=2 size=629x424 ... format=0x1908
[BoxiOS MetalGL] eglSwapBuffers
[BoxiOS MetalGL] published raw texture id=2 size=629x424 stride=2516
[BoxiOS input bridge] pumped Powder SDL LMB ... pressed=1 changed=1
- Latest IPA:
boxios-126.ipa - IPA SHA-256:
d7635cf4d212d3085e2a90e8a75c1a2ced410a45891849d5d92ea232727e1349 - Box64 iOS static library SHA-256:
08155073e1ac68b3dba1cd93016efbb1613b067f42576599a3e0921bbd725bbb - Box86 iOS static library SHA-256:
d3d7b5fe986e60aaa220e733d976e8759c4198fb043efae440d0c5c31b2780dd
- Box64 source: official
ptitSeb/box64, current working iOS snapshot based on2deb99ae4aa4b326819806ac2541477273244741. - Box64 upstream
mainchecked on April 27, 2026:2c72942faef0d67d036e3110dd1dc5ac950599a5. - Box86 source: official
ptitSeb/box86, current working iOS snapshot based on0579f8b9c47d87d700724f4cce559b06cbd2b0f5.
The Box64 iOS snapshot is deliberately not rebased to the newer upstream HEAD in this release because build 126 is the first confirmed working MetalGL plus input checkpoint.
- This is not a general-purpose Linux desktop environment yet.
- JIT/dynarec is not enabled.
- The current proven game path is Powder Toy x86_64 through Box64.
- The Powder Toy SDL input bridge is currently targeted to the tested Powder Toy binary layout.
- Box86 is packaged and routed for x86 binaries, but this checkpoint was validated primarily on the Box64 x86_64 Powder Toy path.