# OverviewThe Anbox runtime consists mainly of two separate instances: * container manager * session managerThe container manager has the job of managing the container setup and maintenanceduring its lifetime. It has the responsibility to start the LXC environment we'reusing 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 insidethe container and provide integration with the Linux system. It also acts as amultiplexer to map Android applications into single windows on the desktopenvironment. Currently all application windows are owned by the same process(the session manager). The application logic itself is still in a separate processinside the Android container.The following picture shows an overview over the architecture:![Anbox architecture](architecture.png)## Application MappingAndroid applications are mapped into single windows within the desktop environment.This is achieved by plugging into the Android hwcomposer HAL module which receivesa set of layers to composite on a screen. Anbox tells SurfaceFlinger through itshwcomposer implementation to get a layer for each application and combines this withadditional information it receives from the Android WindowManager to map individuallayers to applications. For more details please look into the implementation at * android/hwcomposer * src/anbox/graphics/layer_composer.cpp * src/anbox/wm/manager.cpp