Google Artemis: Let AI Assistants and Test Suites Drive Real Phones
Google Artemis is an open-source AI agent achieving 99% SOTA on AndroidWorld, empowering Antigravity and Claude Code to drive real Android phones via MCP.

Every mobile engineer who has written automated test suites knows this familiar misery: an Appium script passes flawlessly on a local emulator at 5:00 PM, only to catastrophically crash at 3:00 AM on CI because an unexpected permission dialog popped up, an XML view ID mutated, or a hijacked UiAutomation socket died.
While coding assistants like Antigravity, Claude Code, and Cursor have mastered web and backend repositories, the mobile application ecosystem has remained an isolated fortress. The web enjoys standardized DOM structures and Chrome DevTools Protocol events. Mobile, in contrast, is an anarchic battleground of legacy Android Views, Jetpack Compose trees, Flutter pixel canvases, and operating-system security sandboxes.
Google recently open-sourced Artemis (google/artemis), an autonomous mobile agent framework engineered to let AI coding companions and continuous test suites operate real smartphones exactly like an experienced human engineer.
TL;DR
Google Artemis is an open-source mobile AI agent framework that lets coding assistants (Antigravity, Claude Code) drive real Android phones and emulators like a human. Achieving 99%+ SOTA on AndroidWorld, it pairs a 3 - 5s reactive Flash profile with a multi-agent Pro workflow, self-healing incidents, and an on-device helper that never locks UiAutomation.
Official repository: google/artemis (Apache-2.0, 4.2k+ stars).
Before exploring the multimodal grounding engine, examine the architectural contrast between legacy test automation scripts and the Artemis model.
With Google Artemis, testing transforms from fragile script maintenance into declarative Model Context Protocol (MCP) task dispatch with multimodal vision perception:
Beginner Map
To master Google Artemis quickly without getting buried in ADB logs and Python source trees:
- Understand why mobile automation is fundamentally harder than web: Web agents parse clean text DOMs; mobile agents deal with transient toasts, rendering canvases, and OS-level socket locks.
- Master the dual Flash vs Pro execution paradigm: Simple smoke tests run through a lean reactive loop to save latency and token budget, while complex regressions use a verified multi-agent graph.
- Decouple testing with the Artemis Accessibility Helper: Google’s key architectural trick that allows multiple testing tools to coexist on a single Android device.
- Evaluate real-world tradeoffs: Vision model token costs and edge-case gotchas before deploying into CI pipelines.
First Practical Exercise
All you need is an Android phone connected via USB (with USB Debugging enabled) and the Python uv package manager:
# 1. Launch the interactive Web Visual Test Console
uv run artemis ui
# 2. Or dispatch an automated task directly from your terminal
uv run artemis run "Open Google Maps, search for Central Park, take a screenshot, and report the estimated travel time" --profile flash
Once the web console boots and you watch the agent steer the phone interface smoothly, you are ready to inspect the inner mechanics.
Part 1: Foundations - Why Mobile UI Breaks AI Agents
In web automation, an AI agent uses Playwright or Chrome DevTools Protocol to inspect a structured HTML tree, extract reliable aria-label attributes, and dispatch deterministic mouse clicks. Computation costs remain minimal because text tokens compress effortlessly.
On mobile devices, automated agents encounter three fatal bottlenecks:
- Declarative UI Frameworks and Raw Canvases: Modern UI engines like Flutter and Jetpack Compose render widgets directly to graphics surfaces without always exposing structured accessibility metadata. To an accessibility inspector, an entire custom component can look like an empty bounding box.
- Transient UI and Vanishing Elements: Toast alerts, self-hiding video playback bars, and biometric prompts stay on screen for merely two or three seconds. If an agent takes ten seconds to send a screenshot to a remote model, analyze it, and return a click command, the target has already vanished.
- Android’s Exclusive
UiAutomationLock: The Android OS permits only one active connection to itsUiAutomationservice at any given time. If Appium or another test runner holds the socket, performance profilers and system assistants are immediately locked out.
Artemis resolves these constraints through a hybrid perception stack that blends OS accessibility trees, Optical Character Recognition (OCR), and visual foundation models (Gemini 2.5, Claude 3.7 Sonnet, Qwen-VL).
Part 2: The Investigation - Dual Profiles: Flash vs. Pro
The core strength of the Artemis architecture lies in its execution profiles: Flash Profile and Pro Profile.
import asyncio
from artemis_client import ArtemisClient
async def run_mobile_test():
client = ArtemisClient("http://localhost:8000")
# 1. Flash: Low-latency, cost-effective reactive verification (~3-5s per step)
result_flash = await client.run(
"Open System Settings, navigate to Battery, and confirm no crash dialogs appear.",
profile="flash"
)
assert result_flash.succeeded
# 2. Pro: Multi-agent planning with pre-execution safety net (~15-40s per step)
result_pro = await client.run(
"Log into the staging account, checkout a sample item, verify payment receipt, and dump logcat upon error.",
profile="pro"
)
assert result_pro.succeeded
if __name__ == "__main__":
asyncio.run(run_mobile_test())
1. Flash Profile: The Reactive Loop (3 - 5s per step)
The Flash profile eliminates multi-agent graph orchestration. A single multimodal model directly observes the live screen, reasons, and executes an action.
- Shared History Compression: Instead of hoarding dozens of high-DPI screenshots that overwhelm the context window, Flash collapses older actions into concise text summaries anchored to session clock timestamps (
T+mm:ss). If past context is required, the agent queries the session recording via thevideo_analyzertool. - Action Bursts for Transient UI: To interact with fast-fading controls before they disappear, Flash chains sequential taps into a single
click_sequencebundle, firing actions back to back without waiting for intermediate model inference cycles.
2. Pro Profile: Multi-Agent Planning and Self-Healing (15 - 40s per step)
Engineered for multi-step exploratory workflows spanning dozens of app transitions:
- Planner: Generates and updates a living Markdown plan with explicit milestones and strict
verify/assertconditions. - Operator: Dispatches tool actions to fulfill milestones. Before each physical input, the Operator runs a Pre-Execution Safety Net, cross-verifying expected screen coordinates against the live XML hierarchy and pixel buffers to prevent misplaced taps.
- Self-Healing Execution Incidents: When an action is blocked or fails, Artemis avoids launching a separate repair subagent that clutters context. Instead, it logs an execution incident inside the Operator’s ongoing loop. The Operator adapts its strategy on the spot until the blockage clears.
- Checker: An independent, read-only verifier agent that evaluates plan milestones and performs a final exit audit against the user’s overarching goal.
Part 3: The Diagnosis - The Artemis Accessibility Helper
In conventional mobile pipelines, engineering teams argue over Appium vs Espresso, both demanding monopoly access to system instrumentation.
Artemis sidesteps this competition by installing the lightweight Artemis Accessibility Helper on the target device:
# Diagnose connected device setup and helper status
uv run artemis doctor
# Pre-install the helper service to eliminate first-task initialization lag
uv run artemis helper install
Why the Helper Changes the Rules
- Zero UiAutomation Socket Monopolization: The helper runs as a standard Android Accessibility Service. It streams structural UI trees over a local device port without acquiring the exclusive
UiAutomationconnection flag. Your existing test runners continue operating without interruption. - Automatic Backend Fallback: If an enterprise device policy disables custom accessibility services or the helper drops out mid-task, Artemis automatically degrades to standard
UIAutomator2and flags the change in the task timeline. - Local Data Security: The helper listens strictly on the phone interface over local loopback sockets. It never transmits UI hierarchies or device data to external third-party endpoints.
Part 4: The Resolution - Tradeoffs and Decision Matrix
Artemis set a record 99%+ completion rate on Google Research’s AndroidWorld benchmark, spanning over 20 real-world apps and 100+ multi-step mobile scenarios. However, in production engineering, pragmatic choices require weighing tradeoffs:
| Evaluation Dimension | Legacy Scripting (Appium / Maestro) | Google Artemis (AI Mobile Agent) |
|---|---|---|
| Element Locating | Static IDs, rigid XPaths | Hybrid: XML + OCR + Vision VLM coordinates |
| Resilience to UI Drift | Extremely fragile (layout changes break runs) | Very high (context-aware visual reasoning) |
| Step Latency | Sub-second (< 500ms) | Moderate (Flash: 3-5s, Pro: 15-40s) |
| Operational Overhead | Zero model fees, heavy test maintenance | Vision API costs, 90% reduction in test authorship |
| Autonomous Recovery | None (crashes fail the build) | Native (Self-Healing Execution Incidents) |
| AI Assistant Pairing | Clunky CLI wrappers | Native Model Context Protocol (MCP) server |
Adopt Artemis When:
- You need resilient end-to-end user journeys that cross application boundaries (e.g. retrieving an email verification code, pasting into your app, verifying SMS notification).
- Your mobile app relies on custom Flutter rendering surfaces or dynamic views where traditional accessibility trees omit key buttons.
- You want AI coding tools like Antigravity, Claude Code, or Cursor to reproduce bug reports directly on attached test devices via MCP.
Skip Artemis When:
- Your team runs hundreds of deterministic unit and component tests in a CI build that must complete in under three minutes.
- Your test lab operates in air-gapped networks without access to visual foundation models.
The Rough Edges (Engineering Gotchas to Know)
When deploying Artemis to production test infrastructure, keep these operational quirks in mind:
- First-Run 3-Second Helper Installation: Connecting to a fresh device triggers an initial APK install that introduces an approximate 3-second delay on the first step. Always run
uv run artemis helper installduring device initialization in your CI runner setup. - Pro Profile Token Accumulation: While history compression preserves context window limits, long-horizon Pro tasks exceeding 80 steps still accumulate substantial vision tokens. Avoid running Pro mode on simple, deterministic navigation paths.
- iOS Platform Boundary: The current open-source release supports Android physical hardware and emulators only. Support for iOS devices and simulators remains an active roadmap objective.
Technical FAQ
Does Artemis require physical Android hardware, or do emulators work?
Artemis operates reliably across physical Android devices plugged in via USB, remote devices connected over wireless ADB, and standard Android Studio virtual devices (AVDs).
How do I connect Artemis to Antigravity, Cursor, or Claude Code?
Artemis includes a standard Model Context Protocol (MCP) server out of the box. Adding the startup command (uv run artemis mcp) to your IDE’s MCP settings grants your coding assistant native tools to inspect screens, tap elements, and pull system logs.
Does Artemis leak confidential screen information to external clouds?
The on-device helper strictly communicates with your local host machine over ADB. However, full-screen frame captures are sent to your configured vision model provider (Gemini, Anthropic, or OpenAI). Use staging accounts with sanitized test data for automated runs.
Final Take
Artemis marks an architectural pivot point: mobile user interfaces have finally become programmable APIs for AI agents without requiring access to application source code. By fusing non-locking accessibility streams with dual-speed execution graphs, testing real phones no longer requires maintaining thousands of fragile XPaths.
Student First Assignment
To build muscle memory within the next 30 minutes:
- Attach an Android device with USB Debugging enabled and clone the
google/artemisrepository. - Launch the visual testing interface:
uv run artemis ui. - Input this prompt: “Open the Clock app, create a new alarm for 07:00 AM labeled ‘Study with Hoang Yell’, then immediately delete that alarm.”
- Inspect the Action Perception tab to study how Artemis correlates visual bounding boxes with accessibility nodes to accomplish the objective.
Related Architectures
To explore further autonomous agent engineering patterns, examine these foundational teardowns:
- OpenClaw: Foundational Architecture for Autonomous Engineering Agents: How host-level autonomous agents manage background daemons, persistent memory, and shell sessions.
- AutoResearch Explained: Why Karpathy Compressed an Entire AI Scientist into 630 Lines: A masterclass in radical simplification and eliminating architectural slop.
- GitNexus: Turning Codebases into Dynamic Knowledge Graphs: High-precision contextual grounding that complements autonomous testing suites.
This architectural analysis references documentation and source code from Google Research Artemis (Apache License 2.0). All anime chibi artwork copyright hoangyell.com.
Related posts
One Source, Two Surfaces: Anthropic's Financial Services Toolkit
10 Claude agents for investment banking, equity research, and fund admin, deployable as Cowork plugins or headless Managed Agents from a single YAML manifest.
The Professional Kitchen for Your AI Agent
Everything Claude Code isn't just a config pack; it's a performance system that turns a general-purpose AI into a precision instrument.
AutoResearch Explained: Why Karpathy Contributed to This AI Scientist
AutoResearch breaks the single-model echo chamber with a multi-model consensus pipeline, stateful Ralph loops, and independent blind reviews.
Ego Lite Browser: Open-Source AI Agent with Real Logged-In Sessions
What is Ego Lite? Complete guide to the Ego Lite browser and ego-browser skill for Claude Code and Cursor to automate the web using your real logged-in cookies.