Beetroot¶
The best Android research setup to beat root.
Beetroot is a Docker-packaged rooted Android environment (Android 14 by default; 11, 12, and 13 also selectable) — Magisk, LiteGapps, Houdini ARM translation, and Frida — wrapped with a Python CLI that lets you run as many persistent research "phones" as your host can afford side by side. Each phone has its own /data, its own ADB and Frida ports, its own resource caps, and a single beetroot.yaml that fully describes it. Commit the YAML and you have a reproducible device config you can share with collaborators.
$ beetroot create alpha
$ beetroot create bravo
$ beetroot up alpha bravo
[beetroot] alpha up — ADB localhost:5555, Frida localhost:27042
[beetroot] bravo up — ADB localhost:5565, Frida localhost:27052
$ beetroot ls
NAME KIND IDX ADB FRIDA STATUS PATH
alpha redroid 0 localhost:5555 localhost:27042 running /home/you/alpha
bravo redroid 1 localhost:5565 localhost:27052 running /home/you/bravo
What's included¶
| Component | Details |
|---|---|
| Android 11–14 | redroid base (14 by default), headless, configurable resolution and FPS |
| Magisk root | Zygisk + denylist enabled out of the box; GMS auto-denylisted |
| LiteGapps | Minimal Google services (just enough for GMS-dependent apps) |
| Houdini | ARM-on-x86_64 translation — run ARM-only APKs on a standard server |
| Frida | Opt-in per instance — declare a frida: block (or copy examples/with-frida.yaml over the generated config) and the host CLI downloads + bind-mounts a version-pinned frida-server |
beetroot CLI |
Create, start, stop, snapshot, restore, and list instances |
| Module flashing | Declare modules in YAML (URL or local path, optional sha256); flashed at next boot |
| Binderless hosts | binder: auto\|host\|vm — use the host kernel's binder, or boot redroid in a QEMU micro-VM that ships its own binder-enabled kernel for hardened sandboxes |
Quick start¶
# 1. Install the CLI (puts `beetroot` on your PATH; no shell alias needed)
uv tool install git+https://github.com/Xiddoc/Beetroot.git
# 2. One-time bootstrap — patches and builds the base redroid image
beetroot build
# 3. Create and start your first research phone
beetroot create alpha
beetroot up alpha
# 4. Connect
beetroot shell alpha
See Your First Instance for the full walkthrough, or Prerequisites if you haven't set up your host yet.