Kakehashi: run macOS ARM64 binaries on Linux aarch64, no JIT
Kakehashi is an experimental userspace layer that runs macOS ARM64 binaries natively on Linux aarch64 without JIT, aimed at cutting CI costs.
Kakehashi is an experimental userspace translation layer that loads Darwin Mach-O binaries and executes them natively on Linux aarch64, without a JIT. It maps a freestanding libSystem and translates BSD syscalls to their Linux equivalents, letting real macOS CLI tools — 7-Zip's 7zz, curl, threaded programs — run unmodified. It's been verified on Docker/Colima and UTM.
The project's core pitch isn't raw speed but CI economics: on GitHub Actions, macOS runners cost roughly 10-12x more per minute than Linux arm64 runners. Even though Darwin binaries under Kakehashi run about 5x slower on multi-file, syscall-heavy workloads (the gap shrinks to ~1.1-1.2x for compression-heavy, few-file cases), the total billable cost can still come out lower than paying for macOS capacity outright.
Kakehashi is explicitly not a full macOS emulator yet — no GUI, codesign/notarization, complete Apple Security.framework, or full curl feature parity. It positions itself as a CLI-focused CI tool rather than a product claim. Written in Rust, installable via cargo install kakehashi, requiring Rust 1.88+ and a Linux aarch64 host to execute guest binaries.