How nizwar/avo works
Avo runs AOSP Android in a per-user Hypervisor.framework VM and presents Android apps as native Mac windows. The main workflow is Control Panel or app-window requests → daemon → VM engine → Android guest, with frames and input returned to the window host. The README also documents app installation, configurable device and graphics settings, storage choices, and Mac/Android integrations. Relationships for unsampled subsystems are included only where the README or indexed source references support them; the graph does not imply unshown internal call order.
Main entry points: DaemonCore.swift Runtime daemon · main.rs AOSP Cuttlefish VM · DaemonClient.swift Daemon client · AndroidWindowController.swift Android app windows
Components 25
Mac apps and daemon
- Control Panel
host/Avo/ControlPanelModel.swift - Runtime daemon
host/AvoKit/Sources/AvoDaemonCore/DaemonCore.swift - Menu bar
host/AvoDaemon/MenuBarController.swift - Android image setup
host/AvoKit/Sources/AvoDaemonCore/AndroidImage.swift - Data locations
host/AvoKit/Sources/AvoDaemonCore/StorageLocations.swift - Android app windows
host/AvoWindowHost/AndroidWindowController.swift - Display view
host/AvoWindowHost/DisplayView.swift - Metal renderer
host/AvoWindowHost/MetalRenderer.swift - Guest host agent
host/AvoKit/Sources/AvoDaemonCore/HostAgent.swift - Screen translation
host/AvoKit/Sources/AvoDaemonCore/ScreenTextEngine.swift
VM engine
- VMM engine
host/AvoKit/Sources/AvoDaemonCore/VMMEngine.swift
Android guest
- AOSP Cuttlefish VM
engine/hvf/vmm/src/main.rs - Guest bridge agent
guest/bridge-agent/src/com/avodroid/bridge/Bridge.java - Guest displays
guest/bridge-agent/src/com/avodroid/bridge/display/DisplayController.java - Notification bridge
guest/bridge-agent/src/com/avodroid/bridge/notify/NotificationBridge.java - Android apps
Configuration and protocol
- Daemon client
host/AvoKit/Sources/AvoKit/DaemonClient.swift - VM configuration
host/AvoKit/Sources/AvoKit/VMConfig.swift - Device profiles
host/AvoKit/Sources/AvoKit/DeviceProfile.swift - User data paths
host/AvoKit/Sources/AvoKit/AvoPaths.swift - App registry
host/AvoKit/Sources/AvoKit/AppRecord.swift - Host protocol
host/AvoKit/Sources/AvoProtocol/AvoProtocol.swift
Other components
- Mac user
- Apple Metal
- Android adbd
Connections 27
- Mac user → Control Panel: manages Android
README.md - Control Panel → Daemon client: sends XPC requests
README.md - Android app windows → Daemon client: sends XPC input
README.md - Menu bar → Runtime daemon: controls VM
host/AvoDaemon/MenuBarController.swift - Daemon client → Runtime daemon: calls daemon
- Runtime daemon → VMM engine: spawns engine
README.md - Runtime daemon → Android image setup: manages image
- Control Panel → VM configuration: edits settings
- VM configuration → VMM engine: configures VM
host/AvoKit/Sources/AvoDaemonCore/VMMEngine.swift - Device profiles → VMM engine: sets boot properties
host/AvoKit/Sources/AvoKit/DeviceProfile.swift - Data locations → User data paths: uses data paths
host/AvoKit/Sources/AvoDaemonCore/StorageLocations.swift - Runtime daemon → Data locations: manages data
- Android app windows → Host protocol: uses messages
host/AvoWindowHost/AndroidWindowController.swift - Daemon client → Host protocol: uses messages
- Android app windows → Display view: routes frames
host/AvoWindowHost/AndroidWindowController.swift - Display view → Metal renderer: renders frames
host/AvoWindowHost/AndroidWindowController.swift - AOSP Cuttlefish VM → Apple Metal: renders via gfxstream
README.md - AOSP Cuttlefish VM → Android apps: runs apps
README.md - AOSP Cuttlefish VM → Guest displays: provides virtio devices
README.md - Guest bridge agent → Guest displays: starts display service
guest/bridge-agent/src/com/avodroid/bridge/Bridge.java - Guest bridge agent → Notification bridge: starts notification bridge
guest/bridge-agent/src/com/avodroid/bridge/Bridge.java - Guest displays → Android apps: launches on displays
guest/bridge-agent/src/com/avodroid/bridge/display/DisplayController.java - AOSP Cuttlefish VM → Android adbd: provides ADB
README.md - Runtime daemon → Guest host agent: coordinates guest agent
- Guest host agent → Guest bridge agent: communicates with guest
- Runtime daemon → Screen translation: supports translation
- AOSP Cuttlefish VM → Android apps: serves app displays
README.md