Anbox Cloud provides a rich software stack that enables you to run Android applications in the cloud for all kinds of different use cases, including high-performance streaming of graphics to desktop and mobile client devices.
At its heart, it uses lightweight container technology instead of full virtual machines and maintains a single Android system per container. This approach allows for higher density and better performance per host while ensuring security and isolation of each container. Depending on the target platform, payload and desired application performance (for example, frame rate), Anbox Cloud can run more than 100 containers on a single machine.
For containerisation of Android, Anbox Cloud uses the well established and secure container hypervisor LXD. LXD is secure by design, scales to a large number of containers and provides advanced resource management for hosted containers.
Anbox Cloud comes in two different variants that serve different purposes:
Anbox Cloud Appliance
The Anbox Cloud Appliance is a self-contained deployment variant of Anbox Cloud. It uses a sensible standard configuration to hide the complexity and flexibility of Juju. In this way, the Anbox Cloud Appliance allows simple and fast development and prototyping.
The regular Anbox Cloud uses Juju for deployment and operations. It provides rich features and is ready made for a large scale deployment.
See the following table for a comparison of features for the different variants:
|Feature||Anbox Cloud Appliance||Anbox Cloud|
|Android API version||10, 11, 12||10, 11, 12|
Which of both variants you choose depends on your needs. The appliance is well suited for quick prototyping and development or small scale deployments, whereas the regular Anbox Cloud is best to scale big.
Tip: We recommend to always start with the Anbox Cloud Appliance for first tests. You can then expand to a full Anbox Cloud installation later.
Anbox Cloud is composed of different components that interact with one another.
Anbox Cloud takes care of all management aspects and provides both a fully functional implementation and an integration model to support existing infrastructure and service implementations.
The following figure gives an overview of the different components and their responsibility within the core stack of Anbox Cloud.
At the heart of Anbox Cloud sits the Anbox Management Service (AMS). AMS has the job to handle all aspects of the application and container life cycle (including application and image updates) while ensuring high density, performance and fast container startup times.
A developer or system administrator will manage AMS through the command line interface (AMC) or through custom-built tools interacting with the AMS HTTP API.
For example, a simple Android application testing service would provide a user-facing interface dealing with things like authentication and user management, and would communicate with the REST API to add applications or start and stop containers when a user asks to.
Anbox Cloud can be heavily customised and extended via platform plugins and addons. Platform plugins and addons can be built to add specific streaming capabilities, perform operations within Android containers and much more. One example of a platform plugin is the Anbox WebRTC Platform used in the Anbox Streaming Stack. Addons are ways to customise the base image by installing additional software and running scripts on different life cycle hooks.
Starting from 1.4, Anbox Cloud comes with an easy to use streaming solution. The Anbox Streaming Stack is a collection of components designed to run containers on GPU-equipped machines and stream their visual output to clients via WebRTC.
The following figure shows an overview of how the different components work together to enable this.
The main components powering the streaming stack in Anbox Cloud are:
Agent: Software running on a server equipped with a GPU connected to Anbox Cloud. It serves as an entry point that the gateway can connect to.
Anbox Stream Gateway: The central component that connects clients with agents. Its role is to choose the best possible region depending on the user location and server capacities.
Client: The end user application that will display the stream. It can be a desktop application, a website, a mobile application, a TV, a car system or anything capable of handling a WebRTC stream. Anbox Cloud provides an SDK along with the streaming stack to simplify integration with web-based applications.
TURN/STUN servers: Servers that find the most optimal network path between a client and the container running its application. The streaming stack provides secure STUN and TURN servers, but you can use public ones as well.
NATS: A messaging system that the different components use to communicate (see the project page).
The regular Anbox Cloud variant provides two different Juju bundles:
anbox-cloud-corebundle provides a minimised version of Anbox Cloud. This version is sufficient if you don’t want to use the Anbox Cloud streaming stack.
For more information, see the charm page.
anbox-cloudbundle provides the full version of Anbox Cloud, including its streaming stack.
For more information, see the charm page.
For detailed information about the charm, check the
bundle.yaml file in the bundle.
You can download the bundle with
juju download <charm_name>, thus
juju download anbox-cloud-core or
juju download anbox-cloud. Unzip the bundle to access the
If you don’t need to stream the visual output of the Android containers, you can use the
anbox-cloud-core bundle. Otherwise, you should use the
anbox-cloud bundle. However, even without the streaming stack, there are still ways to get visual access for inspection purposes. See How to access a container for details.