Skip to content
backrunnerPublic

About

Android apps in their own Mac windows. An experimental Rust and GPUI environment for Apple Silicon, with Cuttlefish guests and a Metal graphics path.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

GlidePod's two overlapping glass packages

GlidePod

Android apps, in their own Mac windows.

License: Apache-2.0 Platform: Apple Silicon Status: experimental

Features · Build · Runtime setup · Engineering notes · Contribute

GlidePod is an open-source Android environment for Apple Silicon Macs, built with Rust, GPUI and Cuttlefish ARM64 guests. Install an APK, open it in a separate macOS window, and manage its storage, permissions and runtime from one place.

Important

Developer preview. The management app and guest integration are implemented, but a runtime must be prepared separately. There is no ready-to-install, notarized release or bundled Android image yet. Broad game compatibility and production reliability remain unqualified.

What works today

Area Current implementation
Apps APK install, update and removal; searchable catalog; APK file association; per-user Mac launcher bundles.
Windows Independent Android displays and GPUI windows, with separate frame and input workers per app.
Input Unicode text and clipboard, held keyboard events, touch/mouse modes, two-contact gestures and native GameController mapping.
Management Developer VM start/stop and resources; app storage, cache/data cleanup and Android runtime permissions.
Desktop integration Live Android widget panels and opt-in notification forwarding. Native WidgetKit support is still planned.
Graphics Software baseline and an experimental gfxstream → MoltenVK → Metal path; dedicated GLES 3 and Vulkan correctness/performance fixtures.

Real guest checks have exercised app lifecycle, independent displays/input, storage, permissions, GLES 3 and direct Vulkan. Physical keyboard/IME, mouse and controller behavior, current native notification interactions, Launchpad indexing and end-to-end presentation latency still need broader on-device validation. See the implementation records for the scope of each result.

Native management center preview

Native GlidePod Apps page with sidebar, search field, Add APK action and setup empty state

An actual capture of the early native GPUI management center, before a runtime was registered. The purple badge in the title bar belongs to the capture session. This is not a screenshot of Android apps running in separate windows. The separate interactive browser prototype is a simulated design reference.

How it works

The Android guest runs under an external Rust VMM using Apple's Hypervisor.framework. GlidePod owns the app catalog, lifecycle, per-app displays and macOS windows. Cuttlefish supplies the Android guest; its Linux host launcher is not the macOS runtime.

Android app
  ├─ OpenGL ES → guest ANGLE ─┐
  └─ Vulkan ─────────────────┴─→ gfxstream → MoltenVK → Metal
                                  │
                            frame readback
                                  ↓
                         per-app GPUI window

The current transport reads frames back to the host. Shared IOSurface presentation is planned. GPUI renders the Mac interface; the separate guest graphics stack accelerates Android. Automatic currently uses Software; Metal requires an explicitly registered, patched external renderer. See runtime setup and the graphics design.

Build from source

Development currently requires Apple Silicon, Xcode 27, Rust and Python 3.12+. Validation has used macOS 27.0.1 and Rust 1.99.1. The configured macOS 15 deployment target and Rust 1.90 minimum still need separate validation.

git clone https://github.com/backrunner/glidepod.git
cd glidepod
python3 tools/prepare-android-tools.py
cargo fetch --locked --target aarch64-apple-darwin
python3 tools/license-inventory.py
python3 tools/package-dev.py
open dist/GlidePod.app

This produces a local, ad-hoc signed development app. It downloads compile tools into .cache/ and builds the original Android helpers; it does not install an Android system image. Follow the build guide for checks and prerequisites, then prepare the runtime to run APKs.

The management center can be explored without a guest. ⌘O opens an APK, ⌘F focuses search and ⌘R refreshes. The companion CLI is available at dist/GlidePod.app/Contents/MacOS/glidepodctl; use --help to see commands.

Next milestones

  • A reproducible, redistributable runtime and a rootless Personal image.
  • Async block I/O and better frame pacing, with persistence and scheduling tests.
  • Lower-copy presentation and sustained GPU/game measurements.
  • Broader physical input, accessibility and native notification validation.
  • Native WidgetKit integration, signed/notarized downloads and a wider macOS test matrix.

Relative mouse capture, controller rumble and multiple players are also pending. Google Play services, DRM-dependent apps, anti-cheat compatibility and x86 Android translation are not provided. Advertised API versions and passing synthetic checks are not graphics conformance or game certification.

Explore the project

License

Original GlidePod code, documentation and artwork are licensed under Apache-2.0. It permits use, modification and redistribution, including commercial use, and includes an express contributor patent grant under its terms.

Dependencies keep their own licenses. See NOTICE, third-party notices and the dependency inventory. External VMM/renderer binaries, Android images, SDK archives and third-party APKs are not included in this source repository. Binary distribution requires a separate component and notice review.

GlidePod is an independent project and is not affiliated with Apple, Google or the Android Open Source Project.

About

Android apps in their own Mac windows. An experimental Rust and GPUI environment for Apple Silicon, with Cuttlefish guests and a Metal graphics path.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages