🪨 why use many token when few token do trick — Claude Code skill that cuts 65% of tokens by talking like caveman
Android emulator Docker image with VNC and MCP
This project packages Android emulators and Genymotion into Docker images for app development, testing, and automation. You can open the emulator in a browser with noVNC, connect with ADB, record video, and use the MCP server for agent access.
Builders who want Android emulators they can run in Docker for testing, automation, or app development.
You can run, inspect, and automate Android devices without managing a local emulator setup.
What it does
Android emulator images
Prebuilt images for Android 9 through 14, plus a Genymotion image and an MCP image.
Browser access with noVNC
Expose port 6080 and view the running emulator in a browser.
ADB control from outside the container
Use `adb connect` to control the emulator from the host machine.
Log sharing
Access container logs from the web UI.
MCP server
Provides an MCP server image and setup under `mcp/` for agent integration.
Persistence support
Mount `/home/androidusr` to keep emulator data across container restarts.
Cloud and CI use cases
Includes documentation for Appium, Jenkins, AWS, GCP, Azure, and cloud deployment.
How to get it
- 1Your machine should support virtualization. To check if the virtualization is enabled is
sudo apt install cpu-checker kvm-ok
- 2Run Docker-Android 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
- 3To check the status of the emulator
docker exec -it android-container cat device_status
README
Docker-Android is a docker image built to be used for everything related to Android. It can be used for Application development and testing (native, web and hybrid-app).
Advantages of using this project
- Emulator with different device profile and skins, such as Samsung Galaxy S6, LG Nexus 4, HTC Nexus One and more.
- Support vnc to be able to see what happen inside docker container
- Support log sharing feature where all logs can be accessed from web-UI
- Ability to control emulator from outside container by using adb connect
- Integrated with other cloud solutions, e.g. Genymotion Cloud
- It can be used to build Android project
- It can be used to run unit and UI-Test with different test-frameworks, e.g. Appium, Espresso, etc.
- It support mcp server (beta-version)
List of Docker-Images
| Android | API | Image with latest release version | Image with specific release version |
|---|---|---|---|
| 9.0 | 28 | budtmo/docker-android:emulator_9.0 | budtmo/docker-android:emulator_9.0_<release_version> |
| 10.0 | 29 | budtmo/docker-android:emulator_10.0 | budtmo/docker-android:emulator_10.0_<release_version> |
| 11.0 | 30 | budtmo/docker-android:emulator_11.0 | budtmo/docker-android:emulator_11.0_<release_version> |
| 12.0 | 32 | budtmo/docker-android:emulator_12.0 | budtmo/docker-android:emulator_12.0_<release_version> |
| 13.0 | 33 | budtmo/docker-android:emulator_13.0 | budtmo/docker-android:emulator_13.0_<release_version> |
| 14.0 | 34 | budtmo/docker-android:emulator_14.0 | budtmo/docker-android:emulator_14.0_<release_version> |
| - | - | budtmo/docker-android:genymotion | budtmo/docker-android:genymotion_<release_version> |
| - | - | budtmo/docker-android:mcp | budtmo/docker-android:mcp_<release_version> |
List of Devices
| Type | Device Name |
|---|---|
| Phone | Samsung Galaxy S10 |
| Phone | Samsung Galaxy S9 |
| Phone | Samsung Galaxy S8 |
| Phone | Samsung Galaxy S7 Edge |
| Phone | Samsung Galaxy S7 |
| Phone | Samsung Galaxy S6 |
| Phone | Nexus 4 |
| Phone | Nexus 5 |
| Phone | Nexus One |
| Phone | Nexus S |
| Tablet | Nexus 7 |
| Tablet | Pixel C |
Requirements
- Docker is installed on your system.
Quick Start
-
If you use Ubuntu OS on your host machine, you can skip this step. For OSX and Windows OS user, you need to use Virtual Machine that support Virtualization with Ubuntu OS because the image can be run under Ubuntu OS only.
-
Your machine should support virtualization. To check if the virtualization is enabled is:
sudo apt install cpu-checker kvm-ok -
Run Docker-Android 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 see inside running container.
-
To check the status of the emulator
docker exec -it android-container cat device_status
Persisting data
The default behaviour is to destroy the emulated device on container restart. To persist data, you need to mount a volume at /home/androidusr:
docker run -v data:/home/androidusr budtmo/docker-android:emulator_11.0
WSL2 Hardware acceleration (Windows 11 only)
Credit goes to Guillaume - The Parallel Interface blog
Microsoft - Advanced settings configuration in WSL
-
Add yourself to the
kvmusergroup.sudo usermod -a -G kvm ${USER} -
Add necessary flags to
/etc/wsl.confto their respective sections.[boot] command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm'Then, using PowerShell, open a notepad on
notepad $env:USERPROFILE\.wslconfig. Inside, put these other flags:[wsl2] nestedVirtualization=true -
Restart WSL2 via CMD prompt or Powershell
wsl --shutdown
command = /bin/bash -c 'chown -v root:kvm /dev/kvm && chmod 660 /dev/kvm' sets /dev/kvm to kvm usergroup rather than the default root usergroup on WSL2 startup.
nestedVirtualization flag is only available to Windows 11.
If this setup does not work, you may have an old WSL version. In that case, ignore \.wslconfig and put everything on /etc/wsl.conf, including the [wsl2] flag.
Use-Cases
- Build Android project
- UI-Test with Appium
- Control Android emulator on host machine
- SMS Simulation
- Jenkins
- Deploying on cloud (Azure, AWS, GCP)
Custom-Configurations
This document contains information about configurations that can be used to enable some features, e.g. log-sharing, etc.
Genymotion
For you who do not have ressources to maintain the simulator or to buy machines or need different device profiles, you can give a try by using Genymotion SAAS. Docker-Android is integrated with Genymotion on different cloud services, e.g. Genymotion SAAS, AWS, GCP, Alibaba Cloud. Please follow this document for more detail.
Emulator Skins
The Emulator skins are taken from Android Studio IDE and Samsung Developer Website
USERS
PRO VERSION
Due to high requests for help and to be able to actively maintain the projects, the creator has decided to create docker-android-pro. Docker-Android-Pro is a sponsor based project which mean that the docker image of pro-version can be pulled only by active sponsor.
The differences between normal version and pro version are:
| Feature | Normal | Pro | Comment |
|---|---|---|---|
| user-behavior-analytics | Yes | No | - |
| proxy | No | Yes | Set up company proxy on Android emulator on fly |
| language | No | Yes | Set up language on Android emulator on fly |
| Newer Android version | No | Yes | Support other newer Android version e.g. Android 15, Android 16, etc |
| root-privileged | No | Yes | Able to run command with security privileged |
| headless-mode | No | Yes | Save resources by using headless mode |
| Selenium 4.x integration | No | Yes | Running Appium UI-Tests againt one (Selenium Hub) endpoint for Android- and iOS emulator(s) / device(s) |
| multiple Android-Simulators | No | Yes (soon) | Save resources by having multiple Android-Simulators on one docker-container |
| Google Play Store | No | Yes (soon) | - |
| Video Recording | No | Yes (soon) | Helpful for debugging |
This document contains detail information about how to use docker-android-pro.
SPONSORS
Swiftproxy — Swiftproxy provides high-quality residential proxies for Android testing, automation, and location-based workflows. With 90M+ residential IPs, HTTP(S)/SOCKS5 support, flexible targeting, and non-expiring traffic, Swiftproxy helps users test apps and online services from different locations. Try Swiftproxy for free today and get 10% off with code PROXY90.
LICENSE
See License
Files in the repo
- .github
- cli
- docker
- documentations
- example
- images
- mcp
- mixins
- .dockerignore
- .gitignore
- app.sh
- LICENSE.md
- MAINTAINERS.md
- README.md
- renovate.json
Discussion (0)
Ask about usage, or say what you built with itSign in to join the discussion.
No comments yet. Be the first to say what this is good for.
More tools
The best-benchmarked open-source AI memory system. And it's free.
Orca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.

A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
Never stop coding. Free MIT AI gateway: one endpoint, 352 providers (150+ free), 1200+ models Kimi, Claude, GPT, Gemini, GLM, DeepSeek, MiniMax. Works with Claude Code, Codex, Cursor, OpenCode, Cline & Copilot. Quota-aware auto-fallback, RTK+Caveman compression saves 15-95% tokens, MCP/A2A, Desktop/PWA. Built by 550+ contributors
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.