mrkeyoor.com_
Sun 27 Sept 17:35 UTC
Dev Toolsevaluationupdated 27 Sept 2026

Madeira review

Madeira is an experimental iPhone app for running x86-64 Windows PC games on a non-jailbroken device. It combines Wine, FEX-Emu, and DXMT inside one iOS process, trading easy installation for direct access to games that iOS cannot normally run.

Verdict

Our Madeira checkout occupied 2,055.7 MB, but the detected build covered a nested Python dependency and pytest collected 0 tests, so our run did not validate the iOS app. Try it only if the experiment itself is the appeal and you already accept Xcode, debugger-assisted JIT, sideloading, and per-game troubleshooting. Everyone else should wait for repeatable build instructions and a release artifact.

We ran it

Lab card: what happened when we ran MadeiraScreenshot of Madeira (github.com/willfaust/Madeira)
Install✓ · 6s37 packages · 42 MB
Build✓ · 1s
Tests✗ · 1s0 passed · 0 failed of 0 (pytest)
Known vulns0(pip-audit)
Repo32922 files~16,789,054 lines of source · 2055.7 MB · 0 CI workflows · tests dir

Answers from our run

Does Madeira build from source?

Dependencies installed in 6 seconds (37 packages), and the build succeeded in 1 seconds. We cloned commit 8c050d0 into a clean Debian container with 3 CPUs and no project-specific setup.

Do Madeira's tests pass?

Yes: 0 of 0 passed when we ran the project's own test command (pytest). Some failures need services or credentials a bare container does not have.

Does Madeira have known vulnerabilities in its dependencies?

pip-audit found none in the dependency tree at the time of our run.

Who should not use Madeira?

Anyone expecting an App Store download or a ready-made release: JIT needs a debugger attachment, the app must be sideloaded, and GitHub has no published release.

What are the alternatives to Madeira?

UTM, Winlator, PlayCover. Our Madeira checkout occupied 2,055.

Setup1/5No release; Xcode, JIT, forked submodules, and sideloading required
Docs2/5Architecture is clear, but a full build guide is still requested
Community3/5735 stars and current issue activity, with 28 issues and PRs open
Maturity1/5Research status, no release, and title-specific failures remain

Who it’s for

iOS tinkerers with an iPhone, a Mac with Xcode, and patience for a multi-part source build.
Compatibility-layer developers studying how Wine, x86-64 translation, and Direct3D-to-Metal rendering can coexist under iOS restrictions.
Players willing to troubleshoot one title at a time and reinstall a free-signing build every 7 days.

Who it’s NOT for

Anyone expecting an App Store download or a ready-made release: JIT needs a debugger attachment, the app must be sideloaded, and GitHub has no published release.
Windows-game players without a Mac build environment: the README requires several native chains plus xcodebuild, issue 24 asks for hosted builds, and our scan found 0 CI workflows.
Developers who need a reproducible clean build today: issue 20 reports a missing arm64ec_x64_export_iat.c file that stops the pinned Wine ARM64EC configure step.
Players seeking broad compatibility or dependable controls: the README calls Madeira a research project, names two playable games, and says other titles can be slow or unreliable.
Contributors planning to send AI-generated FEX changes upstream: Madeira's README says FEX-Emu's contribution policy forbids that code in upstream contributions.

Setup reality

Our sandbox checkout was 2,055.7 MB with 32,922 files and about 16,789,054 source lines. Its automated detector entered FEX/External/unordered_dense, where 37 Python packages installed in 6 seconds and used 42 MB. That nested build passed in 1 second, but pytest exited 5 after 1 second because it collected 0 tests.

That result does not produce the iOS app. Madeira needs recursive forked submodules, several native build chains, Xcode, an Apple ID, locally supplied Microsoft runtime DLLs, and StikJIT or another debugger-assisted JIT route.

The repository had 0 CI workflow files and no Dockerfile in our scan. A free Apple account also means rebuilding and reinstalling every 7 days. Pip-audit found 0 known vulnerabilities in the 37-package Python environment, not across the full Wine, FEX, DXMT, and iOS toolchain.

Madeira puts Wine, FEX, and DXMT inside one iPhone app

Madeira tries something iOS does not make convenient: running x86-64 Windows games on a non-jailbroken iPhone. Wine supplies the Windows environment, FEX-Emu translates x86-64 code to ARM64, and DXMT converts Direct3D 11 calls to Metal. The unusual part is architectural. Wineserver runs as a thread, and the pieces share one Mach process because iOS does not allow the normal desktop arrangement.

The README names 2 games, Thumper and ULTRAKILL, as playable. Marvel Cosmic Invasion has reached gameplay, but one run ended without an explanation and its controls remain unreliable. Other games may reach gameplay at low frame rates. Those admissions set the right expectation: Madeira is a compatibility experiment where each working title is evidence, not a promise that a Steam library will transfer intact.

A 2,055.7 MB checkout still does not give you an IPA

The source tree is far bigger than the iOS interface suggests. Our checkout contained 32,922 files, about 16,789,054 lines of source, and 2,055.7 MB on disk. Much of that scale comes from the forked Wine, FEX, and DXMT components that carry the iOS work. The README warns that upstream clones are not substitutes for those submodules, so a recursive clone is part of the build, not an optional way to obtain examples.

Building the app means moving through several toolchains. Native Wine libraries, ARM64EC PE modules, FEX, and DXMT have their own scripts, while the app itself uses xcodebuild. Microsoft Visual C++ runtime DLLs are deliberately absent and must be supplied locally. GitHub currently has no published release to bypass that work, and issue 13 is a direct request for a detailed build guide from someone unable to assemble the existing instructions.

What happened when we ran it

Our sandbox cloned commit 8c050d0 on 3 CPUs with 8 GB of RAM. The automated project detector landed in FEX/External/unordered_dense, not the Xcode app. It installed 37 Python packages in 6 seconds, used 42 MB for those packages, and completed that nested build in 1 second. This proves that one vendored component can set itself up in a clean Debian container. It does not prove that Madeira can be packaged for an iPhone.

The test command failed with exit code 5 after 1 second. Pytest reported 0 passed, 0 failed, and 0 collected, with the final line no tests ran in 0.14s. That is a failed test step even though no assertion broke. Pip-audit reported 0 known vulnerabilities for the installed Python packages. Our scan also found 0 CI workflows, no Dockerfile, and a tests directory, so there is no visible repository automation that turns this Debian result into an iOS build check.

Debugger-assisted JIT and 7-day signing are permanent chores

Madeira needs JIT compilation, which means attaching a debugger on iOS. The project uses StikJIT, and that requirement prevents App Store distribution. You must sideload the app instead. An Apple ID is also required for signing. A free account works, but its provisioning profile expires after 7 days, forcing a weekly rebuild and reinstall. The app container survives, so prefixes and save files should remain, but the maintenance does not disappear.

Development has focused on an A15 iPhone 13 Pro. That is useful disclosure rather than broad hardware support. Issue 6 asks about M-series iPads, while issue 24 comes from a user without a Mac who wants workflow builds or releases. Our lab found 0 workflow files at commit 8c050d0. If you only want to play a game, these requirements are a poor exchange. If you are studying iOS process limits or compatibility layers, they are the subject of the project.

A missing Wine source file can stop the current build

The repository was pushed on September 25, 2026, and GitHub showed 735 stars plus 28 open issues and pull requests when fetched. Recent activity is easy to see in source and discussions. There is still no latest GitHub release, so freshness should not be mistaken for a stable distribution channel. You are tracking commits and submodule pins rather than choosing a tested version tag.

Issue 20 gives the clearest current build warning. The reporter says the pinned Wine submodule includes arm64ec_x64_export_iat.c but does not contain that file, causing the ARM64EC configure step to stop. The log is specific enough to treat reproducibility as unresolved. Combined with the 2,055.7 MB recursive checkout and several native chains, one missing generated or tracked file can waste a long setup before Xcode enters the picture.

GPL terms and upstream AI rules affect contributors

Madeira is GPL-3.0-or-later, and distributed derivatives must stay open source. Its Wine fork was relicensed under the LGPL provision described in the README. FEX, DXMT, and rpmalloc preserve their upstream permissive terms while Madeira's modifications use GPL-3.0-or-later. The project also does not distribute Microsoft's runtime DLLs, which is why the setup points you to a separate fetching procedure.

Contributors have another boundary to remember. The README says the forks contain substantial AI-assisted work, while FEX-Emu does not accept AI-generated upstream contributions. Code can remain in Madeira's fork under its license and still be unacceptable for submission to FEX. For a player, that detail is background. For anyone planning to upstream a fix from this 32,922-file tree, it changes where the patch may legally and procedurally go.

Madeira is worth watching because it has already moved a few real games past the launch screen on an ordinary iPhone. It is worth using today only if you want to participate in that research. The decisive evidence is the gap between the README's working-title reports and our run: a 1-second nested build succeeded, yet the actual iOS product remained outside the environment we could test.

Alternatives

ProjectWhat it isPick it when
UTM gh↗A mature virtual-machine app for iOS and macOS with a wider guest-OS focus.pick this instead when you want a general iOS virtualization tool with documented installation paths rather than a Windows-game research stack.
WinlatorAn Android app that runs Windows applications through Wine and Box86 or Box64.pick this instead when your target device is Android and running Windows software matters more than iPhone support.
PlayCoverA macOS app for running iOS apps and games on Apple silicon Macs.pick this instead when your actual goal is playing iOS software on a Mac, the reverse of Madeira's direction.

What people are saying

  1. [github-trending] willfaust/Madeira

Sources

  1. Madeira repository and README
  2. Issue 13: Building Guide
  3. Issue 20: Missing ARM64EC source file
  4. Issue 24: Request for workflows and builds

More dev tools reviews

navi · exodium · Submarine · mitmproxy · fx · qmk_firmware · the whole board →