Docker-Android
Run a remotely viewable, adb-controllable Android emulator inside Docker for development and automated testing.
Per-dimension scores and reasoning
README requires --device /dev/kvm and instructs chown root:kvm /dev/kvm plus chmod 660 on WSL2; this is necessary for emulation but broadens privilege surface with no least-privilege discussion, so least_privilege is 1. For user_confirmation, the container enables behavior analytics by default with no opt-out switch or first-run consent in the README, so 0. Data-flow transparency is partial: LICENSE.md enumerates collected fields (start time, distro, city/region/country from ipinfo.io, Appium/Web-VNC usage) and points to USER_BEHAVIOR_ANALYTICS.md, but the README body never surfaces this telemetry, so 1. Sensitive data handling: declared non-PII and non-trackable, yet IP-derived geolocation and device details remain linkable, and the grant is irrevocable, perpetual and sub-licensable, so 1. Dependency security: release.yml pins actions/checkout@v7 and setup-buildx-action@v4 by floating major tags rather than commit SHAs, with no dependency scanning evidence, so 1. External effects: images are pushed to Docker Hub and the code calls ipinfo.io and codecov.io, expected but not centrally disclosed in the README, so 1. Rollback: README mentions mounting /home/androidusr for persistence but gives no version rollback or state-recovery procedure, so 1. Source attribution: README credits Genymotion, Android Studio, Samsung skins and a WSL2 blog with links, but ships no SBOM or third-party component inventory, so 1.
Self-consistency: README image tags, device list and Pro feature table broadly match the release.yml build matrix (9.0-14.0), but the ai-agent claim is split confusingly between the free README header and the Pro table, so 1. Dependency availability: depends on Docker, KVM, an Ubuntu host and external registries; README gives a kvm-ok check but no offline or registry-unavailable fallback, so 1. Failure messages: README offers a device_status check but does not describe common failures (KVM unavailable, port conflicts, image pull errors) or their diagnostics, so 1.
Audience and scenarios: README targets Android development/testing, Appium, Jenkins and cloud deployment with six linked use-case documents, so 2. Capability boundaries: it clearly separates free vs Pro features (ai-agent, proxy, headless, root), but ai-agent and mcp are marked beta with no stated limits or failure modes, so 1. Trigger precision: only a docker run example and a few env vars, with no complete parameter list or defaults, so 1. Environment fit: it explicitly restricts to Ubuntu hosts with virtualization and documents WSL2 setup, so 2.
Information architecture: README sections are clear (advantages, image table, device table, quick start, persistence, use cases, Pro, sponsors), so 2. Install notes: docker run command, KVM check and WSL2 steps are actionable, so 2. Naming stability: image tags follow stable emulator_<version> and <version>_<release> patterns, so 2. Examples and FAQ: multiple use-case docs and command examples exist, but there is no dedicated FAQ, so 2. Known limitations: only scattered mentions of Ubuntu-only and Pro-only features, no consolidated limitations section, so 1. License: LICENSE.md is Apache-2.0 plus custom amendments (forks must remove a Google Form ID or stop collection), a non-standard license, and repo metadata says NOASSERTION, so 1. Versioning and changelog: README references a GitHub release badge and <release_version> placeholders, but no in-repo CHANGELOG, so 1. Maintenance responsibility: README states Pro is sponsor-funded and creator-maintained, but gives no governance, security contact or SLA, so 1.
Output usability: a single docker run starts the container and port 6080 exposes VNC, with logs and status checks, adequate for ordinary use, so 2. Marginal value: it adds multi-device skins, VNC, log sharing and cloud integration over a hand-rolled emulator setup, so 2. Cost benefit: it needs KVM, an Ubuntu host and large images, while default telemetry and the free/Pro split raise adoption cost, so 1.
Claim traceability: most README claims map to documentation links and workflow files, but ai-agent/mcp capabilities have no corresponding source or test evidence, so 1. Cross-source corroboration: release.yml and test-on-demand.yml corroborate build and test pipelines, but cannot corroborate the advertised ai-agent feature, so 1. Fact-inference separation: README and LICENSE are fairly specific about data collection, but do not separate verified facts from marketing claims such as the user-distribution graphic, so 1.
- Behavior analytics are enabled by default (including city/region/country derived from ipinfo.io) with no opt-out switch or first-run consent in the README; review LICENSE.md and USER_BEHAVIOR_ANALYTICS.md before deploying in regulated or privacy-sensitive environments.
- The license is Apache-2.0 plus custom amendments (forks must remove a Google Form ID or stop collection) and repository metadata reports NOASSERTION; legal review is advisable for enterprise use.
- The advertised ai-agent and mcp capabilities are marked beta, and ai-agent appears as a paid Pro feature; static evidence cannot verify they actually work.
- Workflows use floating major tags such as actions/checkout@v7 instead of pinned SHAs, and no dependency vulnerability scanning is visible; assess supply-chain risk yourself.
- Running requires --device /dev/kvm and chown/chmod privilege steps on WSL2, widening the host privilege surface; prefer an isolated environment.
- Publisher identity is not verified by FollowAgents; maintenance responsibility and update path rest on README self-description and should not be read as evidence of reliability.
What does this agent do, and when should you use it?
Docker-Android publishes a family of Docker images that package a full Android emulator, covering API 28 (Android 9.0) through API 34 (Android 14.0), plus dedicated genymotion and mcp image tags. Each container serves a noVNC view on port 6080 so you can watch the screen from a browser, and the emulator can be driven from the host over adb connect; a device_status file inside the container reports readiness. The images ship with multiple device profiles and skins, including Samsung Galaxy S10/S9/S8/S7, Nexus 4/5/One/S, Nexus 7 and Pixel C. The project is intended for building Android projects and running unit and UI tests with frameworks such as Appium and Espresso, with documented use cases for Jenkins, SMS simulation and cloud deployment on Azure, AWS and GCP. A beta MCP server and a beta AI-agent are part of the image set; the README states the AI-agent in the pro tier currently targets Ollama as local AI host/provider.
The repository builds and publishes images under tags such as budtmo/docker-android:emulator_9.0 through emulator_14.0, budtmo/docker-android:genymotion and budtmo/docker-android:mcp. On startup the container reads environment variables like EMULATOR_DEVICE and WEB_VNC, is granted /dev/kvm via --device for hardware acceleration, runs the emulator, and exposes port 6080 for the noVNC interface. Operators inspect state by reading the device_status file with docker exec, or take control from the host through adb connect. The mcp variant bundles an MCP server and AI-agent layer so external tooling can drive the emulator, and the project documents building Android projects and executing Appium/Espresso tests inside the same container.
- Android developers who want a reproducible emulator instance in local or CI environments instead of maintaining a physical device farm.
- QA engineers running Appium or Espresso UI tests who need to watch execution live through noVNC while debugging flakiness.
- Platform teams wiring Android build and test stages into Jenkins pipelines that can start and stop containers on demand.
- Infrastructure engineers deploying Android emulators on Azure, AWS or GCP using the documented cloud use case.
- Tooling developers who want to expose an Android emulator over MCP, or connect it to a local AI-agent such as Ollama.
- Researchers needing simulated scenarios like SMS delivery without owning the hardware.
What are this agent's strengths and limitations?
- A published image matrix covering Android 9.0 through 14.0 with explicit version tags, so pinning a specific Android level is straightforward.
- Bundles noVNC screen access, host-side adb control and log sharing, giving a complete debugging and test-execution loop without extra tooling.
- Ships multiple device profiles and skins from Samsung, Nexus and Pixel families, so you can change form factors without physical hardware.
- Documented end-to-end use cases for Jenkins, Appium, SMS simulation and Azure/AWS/GCP deployment.
- Separate genymotion and mcp image tags cover cloud-emulator integration and MCP-based tooling.
- Hard dependency on KVM and Ubuntu OS; macOS and Windows users must provision a virtualization-capable Ubuntu VM first.
- Several capabilities described in the README — proxy configuration, language setting, headless mode, Android 15–17, Selenium 4.x, root privileges — are listed as pro-version (budtmo2/docker-android-pro) features unavailable in the normal images.
- The MCP server and AI-agent are marked beta, and the pro AI-agent currently only supports Ollama as a local AI host/provider.
- Default behavior destroys the emulated device on container restart; persistence requires mounting /home/androidusr manually.
- The repository license is reported as NOASSERTION, so the exact terms in LICENSE.md should be reviewed before adoption.
How do you install or deploy this agent?
Prerequisites: Docker installed, and a machine with KVM virtualization enabled (verify with sudo apt install cpu-checker then kvm-ok). The image only runs on Ubuntu OS, so macOS and Windows users must first prepare a virtualization-capable Ubuntu VM; on Windows 11 with WSL2, follow the README to set /etc/wsl.conf and .wslconfig (nestedVirtualization) and fix /dev/kvm ownership. Installation is then simply pulling an image, e.g. docker pull budtmo/docker-android:emulator_11.0.
How do you use this agent?
Start a container: 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 http://localhost:6080 to view the running emulator. Check readiness with docker exec -it android-container cat device_status. To persist the emulated device across restarts, add -v data:/home/androidusr. Swap the tag for other versions (emulator_9.0 to emulator_14.0, genymotion, or mcp).