Podroid spins up a real Alpine Linux VM using QEMU and a custom kernel.
You get a full Podman container runtime and a polished terminal.
Install the APK, tap Start, run containers.
Features
Built from the kernel up for containers, not just shell access.
Full Docker-compatible container runtime. Pull from Docker Hub, run images, manage networks — all without root or custom kernel modules on the host.
Compiled from scratch with netfilter, bridge, overlayfs, veth, and cgroup v2 built-in. Every feature Podman needs is already there — no module loading.
Termux TerminalView with xterm-256color, proper PTY, full mouse support, 114 color themes, 13 fonts, and an extra-keys bar with F1–F12, ESC, CTRL, ALT.
Expose any VM port to your Android device at runtime via QMP control. Run a web server, database, or API and hit it from your phone's browser.
Dropbear SSH server on port 9922 (configurable). Connect from your laptop, VS Code Remote, or any SSH client on the same network.
Overlayfs over a persistent ext4 image. Containers, packages, and configs survive reboots. ZRAM swap gives 2× effective RAM. Boots in 6–15 seconds.
Comparison
Termux gives you a Linux shell. Google Terminal gives you a VM with optional manual container setup. Podroid ships a full container runtime out of the box.
| Capability |
Podroid
this project
|
Termux
v0.118+
|
Google Terminal
AVF
|
|---|---|---|---|
| Root required | ✓ No | ✓ No | ✓ No |
| Real container runtime | ✓ Podman | ✗ | manual setup |
| VM isolation | ✓ QEMU | ✗ shared kernel | ✓ AVF |
| Docker Hub images | ✓ | ✗ | manual setup |
| Custom kernel | ✓ Linux 6.6.87 | ✗ host kernel | ✓ |
| Works on any ARM64 | ✓ Android 9+ | ✓ | ✗ Pixel only |
| Port forwarding | ✓ via QMP | via socat | ✗ |
| Downloads folder sharing | ✓ virtio-9p | ✓ | ✗ |
| SSH server | ✓ Dropbear | via pkg | manual setup |
| xterm-256color + mouse | ✓ | ✓ | basic |
| Configurable RAM / CPUs | ✓ 512MB–4GB, 1–8 cores | ✗ | limited |
Architecture
Three channels, one VM, zero root. Here's what happens when you tap Start.
Custom Linux 6.6.87 + initramfs extracted from APK assets on first launch.
Init mounts storage.img as overlayfs for persistent container data.
Networking (SLIRP + MASQUERADE), cgroup v2, Podman runtime, and Dropbear SSH come up.
libpodroid-bridge.so relays your PTY to the VM's virtio-console. Shell is ready.
Quick start
No configuration needed. Download, install, go.
Download the latest APK from the Releases page.
Install it on your Android device (ARM64, Android 9+).
Tap Start VM. Watch the boot progress — typically ready in 6–15 seconds.
Tap Open Terminal to access the Alpine shell.
Run containers. Any image from Docker Hub works out of the box.
FAQ
If something isn't covered here, open an issue on GitHub.
proot is a chroot emulation — containers built for Docker/Podman won't work reliably. Podroid runs a real VM with its own kernel purpose-built for Podman, so every OCI image from Docker Hub just works.
mitigations=off in the guest kernel for a 5–15% CPU gain. For typical dev tasks — running a web server, a database, CLI tools — it's very usable.
virtio-9p. Files you drop in Downloads are accessible inside the guest immediately.
storage.img that only grows as you pull images and install packages.
ssh root@<phone-ip> -p 9922 gives you a remote shell — useful for VS Code Remote or any SSH client.