The Anbox runtime consists mainly of two separate instances:
The container manager has the job of managing the container setup and maintenance during its lifetime. It has the responsibility to start the LXC environment we’re using to run the Android system.
The session manager runs inside the session of a user logged into the Linux system. It will communicate over several sockets with the Android instance running inside the container and provide integration with the Linux system. It also acts as a multiplexer to map Android applications into single windows on the desktop environment. Currently all application windows are owned by the same process (the session manager). The application logic itself is still in a separate process inside the Android container.
The following picture shows an overview over the architecture:
Android applications are mapped into single windows within the desktop environment. This is achieved by plugging into the Android hwcomposer HAL module which receives a set of layers to composite on a screen. Anbox tells SurfaceFlinger through its hwcomposer implementation to get a layer for each application and combines this with additional information it receives from the Android WindowManager to map individual layers to applications. For more details please look into the implementation at