experimental · open source · GPL-2.0

OpenFruit

Build real iOS apps on Windows. Without a Mac. For free.

$ openfruit build MyApp.xcodeproj --scheme MyApp

From Xcode project to signed IPA.

OpenFruit reads your .xcodeproj or .xcworkspace as Xcode does, with Apple's original SDK, and runs the whole pipeline natively on Windows. Your project is never patched: the build environment adapts to it.

PowerShell — openfruit
01
Projectpbxproj · xcconfig
02
PackagesSwiftPM · Pods
03
CompileSwift · ObjC · C++
04
Macrosoriginal plugins
05
Resourcesassets · storyboards
06
LinkMach-O arm64
07
Signyour profile
08
IPAinstall over USB

Architecture.

A single native CLI drives the whole pipeline. Tools and toolchains are installed once under %LOCALAPPDATA%\OPENFRUIT; your configuration and credentials stay under %USERPROFILE%\.OPENFRUIT.

openfruit.exe

native C++ CLI · orchestrates every stage

BUILD PIPELINE

Project

build settings

Dependencies

SwiftPM · Pods

Compile

Swift · ObjC · C++

Resources

assets · storyboards

Link

Mach-O

Bundle

app · frameworks

Signing

provisioning

IPA

signed

MACROS AND COMPILER PLUGINS · IN ORDER OF PREFERENCE

Native host

plugin built from source for Windows

Darwin host

original Mach-O plugin, emulated with Unicorn

Unsupported

an explicit error, never a substitute

MANAGED STATE

%LOCALAPPDATA%

bin · sdk · toolchains · cache

%USERPROFILE%

config · credentials · journals

01

Project interpretation

Reads .pbxproj, .xcconfig and schemes like Xcode, keeping Base SDK and deployment target apart.

02

Package engine

Resolves and builds SwiftPM graphs in isolated, cached workspaces; CocoaPods and Carthage too.

03

Compiler proxy

Runs the official Swift and Clang drivers with explicit modules and a shared compilation cache.

04

Resource compilers

Asset catalogs, Icon Composer icons, Core Data, strings and storyboards through OpenIB.

05

Build driver

Incremental per target: unchanged modules and links are skipped, edits rebuild only what changed.

06

Packaging & signing

Bundles frameworks and extensions, signs with your certificate and profile, writes the IPA.

Two projects, one goal.

The engine that builds, and the IDE that makes it approachable. Both free, both open source.

// the engine

OpenFruit Core

A native Windows CLI, written in C++, that builds existing iOS projects end to end.

  • Swift, Objective-C, C and C++ for iOS arm64
  • SwiftPM and CocoaPods dependencies
  • Asset catalogs, Icon Composer icons, storyboards
  • Incremental, cached builds
Download Core0.1.0-dev · prerelease
// the IDE

OpenFruit Studio

An IDE built on top of OpenFruit, for people who want to experiment, write the code themselves and learn how software really works.

  • Edit, build and run from one place
  • Powered by the OpenFruit engine
  • Made for learning and curiosity
  • Free, for Windows
Download Studio0.1.0-dev · prerelease

Tested on real apps.

Unmodified upstream projects, built with the iOS 27.2 SDK.

CampUS SwiftUI
Delta emulator
VLC for iOS media player
Swiftfin Jellyfin client
Nextcloud SwiftUI + storyboards

Get started.

  • Windows 10 or 11, x64
  • Git for Windows
  • Visual Studio Build Tools with C++ and CMake, only to build OpenFruit from source
  • An Apple Developer account: the iOS SDK is downloaded from Apple with your own account, and apps are signed with your certificate and profile
  • The Apple Devices app or iTunes, to install over USB
Install
git clone https://github.com/ssilvestri15/openfruit.git
cd openfruit
.\openfruit\windows\build.ps1 -WithTests
openfruit bootstrap
Build and install an app
openfruit build C:\path\to\MyApp.xcodeproj --scheme MyApp
openfruit devices
openfruit device install C:\path\to\MyApp-signed.ipa --udid <UDID>

Known limitations.

OpenFruit is experimental. This is what it does not do yet.

Questions.

Do I need a Mac?

No. The whole pipeline runs natively on Windows, without macOS, virtual machines or WSL. You do need an Apple Developer account for the SDK and for signing.

Does OpenFruit redistribute Apple software?

No. Xcode, the iOS SDK and Apple's compiler plugins are downloaded by each user from Apple with their own account. OpenFruit ships only its own code and open-source components.

Do I have to change my project?

No, and OpenFruit will never patch it. It reads the same project files Xcode reads; when something fails, the fix goes into OpenFruit as general Xcode semantics, never into your project or its dependencies.

How fast is it?

A first build compiles everything and downloads what it needs. After that, builds are incremental and cached: a warm rebuild of Nextcloud takes about 40 seconds, and editing one file recompiles and relinks only what changed.

Can I install the app on my iPhone?

Yes, over USB: openfruit device install talks to the device natively. The app is signed with your own certificate and provisioning profile.

Knowledge belongs to everyone. Always.

— and it should always be accessible.