Project

ios-linuxkit

active

Linux runtime for iOS — ARM64 emulation, Alpine packages, developer runtimes, no jailbreak

Overview

A Linux runtime for iOS developers, packaging the ARM64 iSH work into a developer-focused environment for running shells, compilers, package managers, language runtimes, and agent CLIs directly on iPhone and iPad — no jailbreak, no MAP_JIT, no RWX memory. Built on iSH's Asbestos threaded-code interpreter with precompiled ARM64 gadget dispatch and a 48-bit guest address space for modern runtimes like V8, Go, and JVM.

How it works

The interpreter translates AArch64 instructions through a threaded-code dispatch mechanism — no runtime code generation, so it passes App Store review. A 48-bit virtual address space lets large runtimes (V8, Go, Rust, JVM) allocate as they expect. The Alpine Linux userland runs on top, with apk for package management. Stabilized syscall paths cover signals/ucontext, futex/threads, vector I/O, socket control messages, and enough filesystem semantics for real developer workflows.

Features
🐧
Full Alpine Linux userland

Shell, apk, C/C++, Go, Rust/Cargo, Bun, Node/npm, Python, Lua, Java/OpenJDK, Clojure, Erlang, Zig.

📱
App Store compatible

No JIT, no MAP_JIT, no RWX pages — passes review with pure interpreter dispatch.

🧠
48-bit address space

V8, JavaScriptCore, Go, Rust, and JVM all work with full virtual memory reservations.

🤖
AI agent runtimes

Claude CLI, Codex, and agent harnesses can bootstrap directly on iOS.

🖥
Ghostty-Web terminal

Integrated terminal frontend with themes, hardened ObjC/JS bridge, and async lifecycle management.

🧪
Reproducible test matrix

CI validates 15+ language runtimes against every kernel change.

Architecture
iOS app App Store compatible Asbestos interpreter threaded-code ARM64 Syscall layer signals · futex · mmap 48-bit VM large runtimes Alpine Linux apk + userland Developer runtimes Go · Rust · Node · Python Agent CLIs Claude · Codex · Pi apk iOS Linux runtime — ARM64 interpreter + Alpine userland
Posts