Skip to main content
Android emulators are generally available as of Orka 4.0, on Apple silicon nodes only. They were introduced as early access in Orka 3.7.0-alpha. For a conceptual overview, connection steps, and known limitations, see Android emulators on Orka.

Understanding Orka emulators

An Orka emulator is an Android emulator (AVD) that runs on the same physical host node as a macOS VM, reachable from inside that VM over an ADB relay bridge. Emulators are Apple silicon only: Apple silicon does not support nested virtualization, so the emulator runs as a host-level process rather than inside the VM. An emulator’s lifecycle is tied to its paired VM. Deleting the VM automatically cleans up its emulators. In Orka 4.0, if the paired VM stops or fails, the emulator fails with the reason PairedVMStopped and its ports are released. You can also delete an emulator manually before deleting the VM. If --namespace is not set, emulator commands use your default namespace: ORKA_DEFAULT_NAMESPACE if it’s set, then the namespace of the orka context, then orka-default. See Which namespace a command uses. The aliases for orka emulator are emu, emus, and emulators.

Emulator commands

orka emulator deploy

Deploy an Android emulator paired with a running Orka VM. The emulator runs on the same host as the VM you specify with --vm. Describe the emulator either with --platform and --image-type, or with --config, which takes those settings from an emulator configuration. Any of --platform, --image-type, and --device-profile that you set alongside --config takes precedence over the configuration. Platform, device profile, and image type values pass straight through to the Android SDK’s avdmanager and sdkmanager tooling, so any combination those tools support works on a best-effort basis. The only hard constraint is architecture: only platforms with an ARM-native system image are supported, since the emulator runs directly on the Apple silicon host. The platform, system image, and device profile can’t be changed after the emulator is created. To change them, delete the emulator and deploy a new one.
Deploying an emulator waits until it’s running, or until the timeout elapses. A timeout is not necessarily a failure: the emulator may still be Pending while its AVD boots. Run orka emulator list to check its status.
Syntax:
Options:
The emulator’s CPU and memory come from its device profile. You can’t set them at deploy time. If you don’t provide an AVD_NAME, Orka generates a unique name that starts with emu-. If you provide a name that’s already in use, the emulator isn’t deployed, unless you also set --generate-name. Commonly used values:
  • Platforms: android-35, android-36, android-37.0. Use the name the Android SDK uses, including a minor version where the SDK has one.
  • Device profiles: pixel_8, pixel_9, pixel_tablet
  • Image types: google_apis, google_apis_playstore, default
ADB doesn’t work with google_apis_playstore images yet. The emulator deploys, but adb commands fail with device unauthorized. Use google_apis or default. See Android emulators on Orka for details.
Examples:
The output includes the emulator’s relay IP and relay port (relayIp and relayPort in JSON output). Always use these values to connect over ADB rather than a hardcoded IP or port. See Android emulators on Orka for connection steps.

gRPC endpoint

When you deploy with --grpc, the emulator also starts its gRPC endpoint, so a gRPC client can drive the emulator or stream its display. The endpoint is reachable from the paired VM at the relay IP, on the port in the GRPC-PORT column of orka emulator list. ADB uses the RELAY-PORT column. Like the ADB endpoint, the gRPC endpoint speaks plaintext gRPC over HTTP/2 with no TLS and no authentication, and only VMs on the same host can reach it. To reach it from elsewhere, forward the port through the paired VM.
First deploy on a node may be slower than later ones: Android SDK components (roughly 2 to 4 GB per platform and image type pair) download at deploy time if not already cached on the host node.

orka emulator list

Show basic or extended information about Android emulators. With no names, lists every emulator in the namespace. Syntax:
Options:
Examples:
The default table output includes the following columns: NAME, VM, STATUS, RELAY-IP, RELAY-PORT, GRPC-PORT, NODE, and AGE. GRPC-PORT is empty for an emulator deployed without gRPC. Use this command to check emulator status (Pending, Running, or Failed) after a deploy times out.

orka emulator delete

Delete one or more Android emulators and free their resources on the node.
This operation cannot be undone.
Manual delete is only needed to remove an emulator before its paired VM is deleted. Deleting the VM cleans up its emulators automatically.
Syntax:
Options:
Examples:

Emulator configuration commands

Requires Orka 4.0 or later.
An emulator configuration is a template for deploying Android emulators. It stores the platform, system image type, and optionally a device profile and gRPC setting, so you can deploy with --config instead of repeating the same flags in every pipeline. All emulator configurations reside in the orka-default namespace and are available to every user and service account with access to orka-default. Orka copies the configuration’s settings into the emulator when it’s deployed, so changing or deleting a configuration never affects emulators that are already running. The alias for orka emulator-config is orka emc.

orka emulator-config create

Create an emulator configuration. The platform and system image type are required. The configuration name must:
  • Not exceed 63 characters
  • Consist of lowercase alphanumeric characters, dashes (-), or dots (.)
  • Start and end with a lowercase alphanumeric character
  • Be unique in the cluster
Syntax:
Options:
Examples:

orka emulator-config list

Show basic or extended information about emulator configurations. With no names, lists every configuration. Syntax:
Options:
Examples:
The default table output includes the following columns: NAME, PLATFORM, IMAGE-TYPE, DEVICE-PROFILE, GRPC, and AGE.

orka emulator-config delete

Delete one or more emulator configurations. You can delete only the configurations you created. Orka administrators can delete any configuration. Emulators already deployed from a configuration aren’t affected. Syntax:
Options:
Examples:

Known limitations

Node-level network isolation, NAT-only networking, and other current limitations are covered in Android emulators on Orka.