
Size
144.63 MB
Android
14.0+
Downloads
101
Architecture
arm64-v8a
Security Scan
Verified Safe
✓ Scanned with ClamAV, APKiD, and Quark-Engine
Screenshots

Description
Run Linux containers on your Android phone — no root required. Podroid launches a lightweight Alpine Linux VM via QEMU and gives you a fully working Podman container runtime with a built-in terminal emulator.
Features
Podman — pull and run OCI containers (podman run --rm alpine echo hello)
Alpine Linux 3.23 — minimal aarch64 VM with full networking
Termux terminal — proper VT100/xterm emulation with extra keys (Ctrl, arrows, ESC, TAB)
Persistent storage — 2GB ext4 disk, all VM data survives app restarts via overlayfs
Port forwarding — forward ports from the VM to the Android host, configurable in Settings
Internet access — QEMU user-mode networking (SLIRP), ping/wget/curl all work
Job control — Ctrl+C, Ctrl+Z, Ctrl+D work as expected
One-tap start/stop — clean Material 3 interface
No root, no host binaries — fully self-contained, works on any arm64 Android device
Port Forwarding
Forward ports from the VM to your Android device:
Go to Settings
Add a port forward rule (e.g. TCP 8080 -> 80)
Access the service from your phone at localhost:8080
Rules are saved and automatically applied on VM start. You can also add/remove rules while the VM is running via QMP.
Extra Keys
The terminal includes an extra keys bar with:
ESC / TAB — standard terminal keys
CTRL — toggle modifier, then press a key (e.g. CTRL + C to interrupt)
Arrow keys — navigate in shell history and editors
ALT — toggle modifier for alt combinations
- / / / | — common shell symbols
How It Works
Podroid uses QEMU system emulation (TCG, no KVM) to run a headless aarch64 Alpine Linux VM inside an Android app process.
VM Boot
The VM boots from an initramfs containing a full Alpine rootfs. A two-phase init script (init-podroid) mounts a persistent ext4 disk and creates an overlayfs root — the initramfs is the read-only lower layer, and all changes (installed packages, container images, config files) are stored on the persistent upper layer.
Terminal
The terminal uses Termux's TerminalView and TerminalEmulator libraries for proper VT100/xterm emulation. Since the app cannot use any host binaries, the TerminalSession is created and wired to QEMU's serial console I/O via reflection — keyboard input is drained from the session's internal queue and forwarded to QEMU stdin, while QEMU stdout feeds the terminal emulator.
A getty process runs on /dev/ttyAMA0 inside the VM, providing a real controlling TTY with job control so signals like Ctrl+C work correctly.
Networking
QEMU's user-mode networking (SLIRP) provides internet access with the VM at 10.0.2.15. Port forwarding uses QEMU's hostfwd mechanism, managed at startup via command-line args and at runtime via QMP (human-monitor-command).
Key QEMU Flags
-M virt -cpu max -m 1024 -accel tcg,thread=multi
-kernel vmlinuz-virt -initrd initrd.img
-append "console=ttyAMA0 loglevel=1 quiet"
-device virtio-blk-pci,drive=drive1 -drive file=storage.img,...
-netdev user,id=net0,hostfwd=... -device virtio-net,netdev=net0
-serial stdio -display none
-qmp unix:qmp.sock,server,nowait
Rate this app
Ratings & Reviews
No reviews yet.