← Back to archive

Repo of the Day

google/artemis: ARTEMIS turns natural-language instructions into reliable Android automation. It automates end-to-end workflows, captures logs, and integrates seamlessly with AI coding assistants such as Antigravity, Codex, and Claude Code. It also achie…

Published: Oct 10, 2026

Open repository ↗

ARTEMIS turns natural-language instructions into reliable Android automation. It automates end-to-end workflows, captures logs, and integrates seamlessly with AI coding assistants such as Antigravi...

Summary

ARTEMIS is a Python-based Android automation agent that drives real devices from natural-language instructions. It exposes a native Model Context Protocol (MCP) server so AI coding assistants like Antigravity, Codex, and Claude Code can dispatch phone tasks directly. The project is Apache-2.0 licensed and reports 99%+ completion on Google Research's AndroidWorld benchmark of 100+ multi-step tasks.

What it is useful for

ARTEMIS helps engineers automate end-to-end Android UI work without hand-writing UiAutomator scripts. Concrete uses include regression testing of app flows, exploratory stability runs, and reproducing user-reported bugs by describing the scenario in plain English. It captures Logcat output and screenshots during each step, which is useful for diagnostic reports and CI pipelines. The MCP integration lets an AI assistant build an APK, install it, walk through a test-account login, and return evidence, all from a chat prompt. ARTEMIS runs on real phones connected over ADB (USB Debugging enabled) or emulators, and uses a combination of accessibility hierarchies, OCR, and visual models to target elements on Compose, Canvas, and Flutter interfaces.

How engineers can use it

  1. Connect a phone with USB Debugging on, or start an emulator.
  2. Clone and launch. On macOS or Linux run git clone https://github.com/google/artemis.git && cd artemis && ./start.sh. On Windows PowerShell clone the repo and run .\start.bat. The script auto-installs ADB, scrcpy, FFmpeg, and uv, then opens a web console at http://localhost:8000 with a device wizard and live screen mirroring.
  3. Try a single CLI task: uv run artemis run "Open Settings, find Battery and tell me current level" --profile flash.
  4. Connect an AI IDE via MCP. One command configures multiple clients: uv run artemis mcp --install antigravity, or uv run artemis mcp --install all to include Codex and others. After restarting the IDE, prompt it with: "Build the latest changes into an APK, install it on the connected device, open the login screen with a test account, verify there are no unexpected popups, and return screenshots."
  5. Integrate into Python pipelines with the SDK: uv add "artemis-client @ git+https://github.com/google/artemis.git#subdirectory=packages/artemis-client", then call ArtemisClient("http://artemis-host:8000").run("...") and assert on the strongly typed Pydantic result.

Documented caveats: the first task installs an on-device Accessibility Helper (remove with uv run artemis helper uninstall, or set ARTEMIS_HELPER_AUTO_INSTALL=false in .env). The Flash profile is fast but lacks planning, checkpoint verification, and ADB shell access; use the Pro profile (--profile pro) for long-horizon or critical work. If helper installation fails mid-task, ARTEMIS falls back to UIAutomator2 and reports it. Full configuration options live in the project README.