What it is
ARTEMIS turns natural-language instructions into Android automation, running workflows across apps on real phones or emulators. It offers a web console, a developer CLI, a Python SDK, and a native MCP server so AI IDEs such as Antigravity, Claude Code, Codex, and Windsurf can drive devices and collect Logcat output and screenshots. It has two execution profiles, Flash (fast reactive) and Pro (planning and verification).
Who it's for
- Developers who want AI coding assistants to test apps on real Android devices through MCP
- QA and test engineers automating end-to-end, exploratory, or long-running stability tests
- Teams integrating device automation into pytest or CI/CD pipelines via the Python SDK
Requirements
Requirements
- Android device with USB Debugging enabled, or an emulator, connected
- Python 3.12+ (per the README badge)
- ADB, scrcpy, FFmpeg and uv dependencies (the start script detects and auto-installs them)
- Permission to install the Artemis Accessibility Helper on the device (installed automatically on the first task)
Setup
Clone and launch on macOS/Linux
Connect a device or emulator, then clone the repo and run the one-click startup script. It installs toolchains and offers to install the global MCP server and agent rules into detected AI IDEs.
bashgit clone https://github.com/google/artemis.git && cd artemis ./start.shClone and launch on Windows PowerShell
Use .\start.bat in PowerShell. In Command Prompt, use start.bat instead.
powershellgit clone https://github.com/google/artemis.git cd artemis .\start.batInstall the MCP server for an IDE
Install the MCP server and global rules for Antigravity, or for all supported AI IDEs.
bashuv run artemis mcp --install antigravity uv run artemis mcp --install allInstall the Python SDK client
Install the zero-runtime-dependency client on the development machine. ADB, agents, models, and image processing stay on the device host.
powershelluv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client"
Examples
Run a task from the CLI
bashuv run artemis run "Open Settings, find Battery and tell me current level" --profile flashWhat it does: Runs a natural-language task directly from the terminal using the fast Flash profile.
Run a test with the Python SDK
pythonimport asyncio
from artemis_client import ArtemisClient
async def main():
client = ArtemisClient(
"http://artemis-host:8000",
device_serial="emulator-5554", # optional: target specific device serial
default_profile="flash", # "flash" (fast reactive) or "pro" (deep reasoning)
)
result = await client.run(
"Open System Settings, go to 'Battery', verify battery percentage is displayed, and check for any crash dialogs.",
)
assert result.succeeded, f"Test failed: {result.error or result.status}"
print(f"✅ Test Passed! Device: {result.device_serial} | Trace ID: {result.trace_id}")
if __name__ == "__main__":
asyncio.run(main())What it does: Connects to an ARTEMIS host, runs a task on a chosen device, and asserts that it succeeded.
Prompt the phone from an IDE chat
PromptBuild the latest changes into an APK, install it on the connected device, open the login screen with a test account, verify if there are any unexpected popups after login, and return screenshots of the final page.Expected output: Example prompt for Codex, Antigravity, or Claude Code once the MCP server is configured.
Pros & cons
Pros
- Pro:Multiple interfaces: web console, CLI, Python SDK, and a native MCP server for AI IDEs
- Pro:Flash and Pro profiles trade speed against planning and verification depth
- Pro:Multimodal element locating (accessibility hierarchy, OCR, visual models) with coordinate fallbacks for custom UIs
- Pro:Claims a 99%+ completion rate on the AndroidWorld benchmark
Cons
- Con:Installs an Accessibility Helper service on the phone, which appears as a notification and a Settings > Accessibility entry
- Con:Flash profile has no task plan or notes, no pre-execution safety net, no checkpoint verification or final report, and no ADB shell
- Con:Pro profile is slower, at about 15–40s per step versus 3–5s for Flash
Images
