Podroid documentation

Podroid runs real Linux - Podman, Docker, LXC, and a Linux desktop - on an Android phone, with no root and no custom recovery. It boots an Alpine Linux VM with a custom Linux 7.0.5 kernel inside the app.

There are two ways the VM runs. By default it uses QEMU with software CPU emulation (TCG), which works on any ARM64 Android 9+ device. On recent Pixel devices that ship pKVM, Podroid can instead use the Android Virtualization Framework (AVF) for near-native speed. Either way you get the same Alpine guest, the same terminal, and the same in-app X11 viewer for GUI apps.

No root required

Everything here works on a stock, unrooted phone. The only optional setup that needs a computer is enabling the AVF backend, which uses two one-time adb permission grants (or Shizuku). The default QEMU path needs nothing.

What you can do with it

How these docs are organized

Getting started covers installing the app, the first boot, and a tour of how the whole thing fits together. Going deeper explains performance (and honestly, why some things are slow), the two backends and how to enable AVF, networking and port forwarding, Alpine package management, the desktop/X11 viewer, and every in-app setting. Reference is the complete limitations + troubleshooting list and a set of grounded use cases.

The honest summary

Podroid is a real VM, not a translation layer, so it is far more capable than userspace tricks - but on the default QEMU path the CPU is emulated in software, so CPU-heavy work (compiling, npm install, JVM apps) is slow. The Performance page explains exactly why, and how AVF and a few settings help. The Limitations & troubleshooting page is the place to look when something behaves unexpectedly.

New here?

Start with Getting started, then skim How it works. If you have a Pixel 8/9/10, the Backends page shows how to switch on AVF for a big speed jump.

Podroid is free software (GPL). Docs for v1.2.1. Found something inaccurate? Open an issue.