AI/TLDR

Docker-Android

A disposable Android phone in a container, viewable in the browser

Computer & Browser UseOpen source
Language
Python
License
Custom Apache 2.0 License (Apache 2.0 with amendments on forks and data processing)

Overview

Docker-Android packages an Android emulator into a Docker image, so a phone becomes something you start, use and throw away like any other container. Images are published per Android version — API 28 through API 34 (Android 9.0 to 14.0) — plus a Genymotion Cloud image and a dedicated mcp image, each available as a latest tag or pinned to a specific release version.

The emulator comes with device profiles and skins rather than a generic screen: Samsung Galaxy S10, S9, S8, S7 Edge, S7 and S6, Nexus 4, Nexus 5, Nexus One and Nexus S for phones, and Nexus 7 and Pixel C for tablets. You pick one with the EMULATOR_DEVICE environment variable at run time.

Because it exposes a VNC session over noVNC, you can watch and drive the device from a browser at http://localhost:6080 with nothing installed locally. Logs are shared through the same web UI, video recording is built in, and adb connect works from outside the container, so existing tooling — Appium, Espresso, your own scripts — attaches the way it would to a physical device. An MCP server is included in beta, which is what makes this interesting for AI agents: a sandboxed mobile device an agent can be handed without giving it your phone.

The one hard constraint is virtualisation. The image runs under Ubuntu only, so macOS and Windows users need a virtualisation-capable VM running Ubuntu (WSL2 works on Windows 11 with nested virtualisation enabled and /dev/kvm assigned to the kvm group). Check your host with kvm-ok before starting. By default the emulated device is destroyed on container restart; mount a volume at /home/androidusr to persist it. The project is licensed under a Custom Apache 2.0 License — Apache 2.0 plus the author's amendments on forks and data processing, explicitly not a dual licence you may choose from.

What it does

  • Android emulator images for API 28–34 (Android 9.0–14.0), plus Genymotion Cloud and MCP-server variants
  • Device profiles and skins for a dozen real phones and tablets, selected with EMULATOR_DEVICE
  • noVNC web view at port 6080 — watch and control the device from a browser
  • Built-in video recording and a web UI that surfaces all container logs
  • adb connect from outside the container, so Appium, Espresso and custom tooling attach normally
  • Beta MCP server image, giving an agent a sandboxed phone to operate
  • Optional persistence by mounting a volume at /home/androidusr

Getting started

The image runs under Ubuntu only. On macOS or Windows use a virtualisation-capable Ubuntu VM (or WSL2 on Windows 11 with nested virtualisation). Confirm KVM is available before you start.

Check virtualisation

kvm-ok reports whether hardware virtualisation is usable on the host.

bashbash
sudo apt install cpu-checker
kvm-ok

Run a device

Pick the Android version via the image tag and the hardware profile via EMULATOR_DEVICE. /dev/kvm must be passed through.

bashbash
docker run -d -p 6080:6080 \
  -e EMULATOR_DEVICE="Samsung Galaxy S10" \
  -e WEB_VNC=true \
  --device /dev/kvm \
  --name android-container \
  budtmo/docker-android:emulator_11.0

Open the screen and check status

Browse to http://localhost:6080 to see inside the container; device_status reports how the emulator is doing.

bashbash
docker exec -it android-container cat device_status

Persist the device

Without a volume the emulated device is destroyed when the container restarts.

bashbash
docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0

Commands and code are distilled from the project's own documentation — always check the official repo for the latest.

When to use it

  • Giving an agent a sandboxed Android device to operate via the beta MCP image
  • Running Appium or Espresso suites on CI without a device farm
  • Reproducing a mobile bug on a specific Android version and device profile, then throwing the device away
  • Recording video of a mobile flow for a demo or a bug report

How Docker-Android compares

Docker-Android alongside other open-source computer & browser use tools AI/TLDR tracks, ranked by GitHub stars.

ToolStarsWhat it does
Browser Use★ 115kA Python library that lets agents control a real browser to read pages and complete tasks online from natural-language instructions.
Open Interpreter★ 68.4kA lightweight coding agent that runs code on your own computer to carry out tasks from natural-language requests.
Chrome DevTools MCP★ 52.2kThe Chrome team's MCP server that lets a coding agent control and inspect a live Chrome browser — performance traces, network requests, console messages and Puppeteer-backed automation.
UI-TARS Desktop★ 39kByteDance's multimodal agent stack and desktop app that controls a computer's graphical interface using vision-language models.
AIHawk★ 31.6kBrowser agent on a stealth Firefox that takes plain-language tasks and clicks, types and reads real pages - usable as an MCP server from Claude Code, Codex or Gemini CLI, or via its own web UI.
CloakBrowser★ 31.5kStealth Chromium build with source-level fingerprint patches that drops into Playwright or Puppeteer code, so agents and scrapers browse without tripping bot detection.
OpenCLI★ 29.4kTurns websites into deterministic CLI commands and lets agents drive your already-logged-in Chrome through a browser bridge extension, with adapters for sites and local binaries.
Docker-Android★ 15.9kA disposable Android phone in a container, viewable in the browser