How to Play Meta Quest Games on Apple Vision Pro
An open-source project called Klepton has pulled off something neither Meta nor Apple built: a way to play Meta Quest games on Apple Vision Pro without an Android emulator or a PC standing between the headset and the game, according to El Solitario, which documented the project two months ago. At present, the only fully working, end-to-end case is Beat Saber, running on both macOS and visionOS with minor graphical glitches, per El Solitario. That's the headline, and it's also the ceiling. Nothing here currently adds up to a broad Quest library on Vision Pro.
This is a developer workflow, not a download. Running it means owning an Apple Silicon Mac, installing Xcode, and working through a command-line build process rather than tapping install on a store page. If that sounds like more friction than reward, skip ahead to the streaming section. If it sounds interesting, the rest of this guide covers how Klepton works, how to get Beat Saber running, a separate and far more experimental Half-Life: Alyx demo built on the same underlying trick, and the PC-dependent streaming tools that currently offer the widest game selection on Vision Pro.
What Klepton actually does
Understanding Klepton's visionOS APK translation starts with what it isn't: an emulator in the classic sense. It doesn't interpret Android instructions one at a time or translate bytecode into another format. Instead it takes the ARM64 machine code from a Quest APK, largely untouched, and relinks it against a runtime built for macOS and visionOS, according to El Solitario. That's possible because Quest hardware and Apple Silicon both run ARM64 chips: the game's binary code already speaks the same language the Mac or Vision Pro chip understands.
What Klepton rebuilds is everything around that code. Four internal libraries stand in for the pieces a Quest app expects to find, covering Android's libc and threading functions, native windowing and sensor calls, a synthetic Java runtime, and Oculus's own ovrp_* VR functions, per El Solitario. A separate tool, klepton-ld, converts each .so library inside the APK into an Apple .dylib or .framework file the Mac or Vision Pro can load. Graphics calls get similar treatment: OpenGL ES routes through a vendored build of ANGLE with a Metal backend, and Vulkan runs through MoltenVK, so the rendering pipeline ends up talking to Apple's graphics stack instead of Android's, per El Solitario.
That's also why the work is harder than it sounds. One detail from the project: Klepton patches every use of the ARM x18 register in the game's code, because macOS resets that register on every context switch, per El Solitario. Mismatches like that, small at the instruction level, are exactly the kind of thing that turns straightforward porting into weeks of debugging.
Klepton can also patch .so files at runtime using mmap, a trick that works on macOS, where Apple allows just-in-time compilation, per El Solitario. visionOS forbids it outright, so anything bound for a Vision Pro has to be relinked ahead of time instead, per El Solitario. Anyone researching Apple Vision Pro Quest game compatibility should treat that restriction as the project's central technical constraint. It's why Klepton ships prebuilt binaries rather than a runtime translator.
The project's scope is explicitly limited, too. Its README describes support for "Java-thin" applications only, meaning no ART and no full embedded JVM, which in practice points toward games built in engines like Unity with IL2CPP, per El Solitario. Meeting that profile doesn't guarantee a specific title will run; it only narrows which titles are plausible candidates. There's also no public list of upcoming supported games or a dated roadmap, per El Solitario.
Can you play Meta Quest games on Apple Vision Pro without a PC? Setting up Beat Saber
The steps below are documented specifically for Beat Saber, based on the project's own BUILDING.md file as reported by El Solitario. They're summarized here, not guaranteed to match exactly what's in the repository by the time anyone reads this, since the project keeps changing.
Before starting, you'll need:
- An Apple Silicon Mac. Klepton depends on Apple-only frameworks, including Metal, ARKit, and Compositor Services, with no Windows or Linux build available, per El Solitario.
- Xcode installed, needed to build the visionOS target, per El Solitario.
- A legally obtained copy of the Beat Saber APK. Klepton doesn't distribute game files; the project's README states that users have to source their own copy, per El Solitario.
The documented build sequence runs roughly like this:
- Install the host dependencies through Homebrew, including
apktool, which Klepton needs to unpack the APK. - Decompile the Beat Saber APK with
apktoolso Klepton's build tools can read its contents. - Run
make check, which walks the build environment through Klepton's full regression sweep before anything gets converted. - Run
./build_run_viewer.shto build and test the game on macOS. This step proves the relinked binary runs at all before a headset enters the picture. - Run
./build_run_vpro.shto build and deploy the game to a connected Vision Pro through Xcode. The documented result: it launches and plays, with minor graphical glitches, per El Solitario.
The project reports those glitches without describing their exact symptoms, so treat them as a known, acknowledged quirk rather than a sign the build failed. A sixth script, build_run_slink.sh, is meant to bridge Klepton with Steam VR Link, but it's listed as work in progress, so PC VR bridging through Klepton itself isn't ready yet, per El Solitario.
Why the Half-Life: Alyx demo doesn't expand compatibility
A separate demo has drawn more attention than Klepton's own repository. This week, developer Udi Wertheimer showed Half-Life: Alyx, a PC VR title rather than a documented Quest use case, running standalone on Vision Pro, built by combining Klepton with an ARM Linux port of Alyx originally made for Valve's Steam Frame headset, plus custom optimization work assisted by Claude AI, according to PC Guide. By Wertheimer's own account, Valve's Linux port "isn't an APK file for Android VR, but it's close enough," with Claude filling in the gaps, per PC Guide. The whole thing came together over a single weekend.
That weekend is worth measuring against what Valve itself needed. Getting Alyx running natively on Valve's own Steam Frame headset took about a year and a half of dedicated software work, by Valve's own account, and a free copy of the game now ships with every Steam Frame purchase, per PC Guide. A weekend demo on unsupported hardware isn't evidence of comparable engineering or support. It demonstrates a different kind of shortcut: stitching together an existing port and AI-assisted patching rather than building native support from the ground up.
It also comes with a real caveat. The demo ran on Vision Pro M5, the newer model Apple released last year, which brings a faster 10-core CPU and 10-core GPU, up from the M2's 8-core CPU and shared 10-core/8-core GPU setup, along with hardware-accelerated ray tracing, mesh shading, a bandwidth jump from roughly 100 GB/s to 153 GB/s, and a refresh rate increase from 100Hz to 120Hz, per PC Guide. There is no evidence in the cited report that it works on the older M2 model, launched in 2024.
The reported performance, 3K resolution per eye at 60 frames per second, smoothed up to 120, comes directly from Wertheimer. VR enthusiast Brad Lynch's assessment that it looked "visually indiscernible from playing it on a high-end PC" is an eyeball judgment from someone watching the demo, not a controlled benchmark, per PC Guide. Treat this as proof that Klepton's relinking technique can stretch to more demanding titles than Beat Saber, not as a build anyone can replicate at home. It required a custom Linux port that doesn't exist for most other games, plus engineering specific to this one title.
PC streaming: KRVR and ClearXR cover more games, but need a PC
If native play matters less than access to a wider PC VR catalog, streaming tools offer a different tradeoff. KRVR streams PC VR games wirelessly to Vision Pro using NVIDIA CloudXR's foveated encoding; OpenXR titles work natively, and SteamVR or OpenVR games run through an OpenComposite layer, according to KRVR GitHub, which released its current build earlier this year. The workflow: launch a VR game on the PC, and it streams to the headset for play. KRVR's own documentation calls itself an alpha build, warning users to expect bugs, rough edges, and things that still need tuning, per KRVR GitHub.
ClearXR takes a similar approach, connecting Vision Pro to a PC running an OpenXR application and streaming PC-rendered VR content to the headset using Apple's Foveated Streaming framework, with NVIDIA CloudXR handling the server side, according to ClearXR GitHub. Both tools share the same basic requirement: a PC running the actual game, connected to the headset over the network, rather than the game executing on the headset itself. That's the fundamental tradeoff against Klepton: streaming needs a gaming PC running the whole time, in exchange for a much wider slice of the existing PC VR library instead of one relinked Quest title.
Which route fits your goal?
| Goal | Route | What it requires |
|---|---|---|
| Play one real Quest game natively, no PC involved | Klepton, Beat Saber only | Apple Silicon Mac, Xcode, a legally obtained Beat Saber APK |
| Access a broader PC VR library on Vision Pro | PC streaming via KRVR or ClearXR | A gaming PC running the VR title, connected over the network |
| A one-click consumer solution | Not currently available on either path | None documented |
Neither of the documented routes provides a one-click way to run a Quest library on Vision Pro. Pick Klepton for the novelty of native Beat Saber and some comfort with Xcode. Pick streaming if a gaming PC is already part of the setup and breadth matters more than how the game gets executed.
Klepton's architecture, scoped around Java-thin apps built in engines like Unity with IL2CPP, could plausibly stretch to cover more Quest titles built the same way Beat Saber was. That's an inference from how the project describes its own scope, not a stated plan: there's still no public roadmap or compatibility list to point to. For now it remains a narrow proof of concept, not a platform to build a VR library around.



Comments
Be the first, drop a comment!