# Virtualization

This repository contains userspace services related to running virtual machines on Android,
especially protected virtual machines. See the
[getting started documentation](docs/getting_started/index.md) and
[Microdroid README](microdroid/README.md) for more information.
