Android Agent  ·  No APIs  ·  Open Source

It doesn't
use APIs.
It uses eyes.

GAGE watches your Android screen, reads what's there, and taps, types, and scrolls — exactly like you would. No integration. No permission from any app required.

Any Android App
0
APIs Required
100%
Open Source
9:41
Listening...
"Send WhatsApp to Home saying I'll be late"
👁 Reading screen...
1Search bar
3Home · chat
4Mom · chat
5Work · chat
🗺 12 elements · targeting #3
Gemma 3n · on-device
screen: 12 elements found
goal: send WhatsApp to "Home"
→ tap element #3 "Home"
⚡ performClick(#3, x:140, y:142)
⌨️ Typing message...
Task Complete
0 APIs · 3 loops · no human touch
Accessibility Service
LLM Reasoning
Zero APIs
Scroll
The Problem

Every app is a walled garden

Siri, Assistant, Alexa — smart, but only go where an API lets them. If an app never built one, the assistant simply stops.

The old way
assistant + api
1You ask the assistant
2It looks for an integration
3App API exists?
No API — task can't be completed. This is where most requests die.
The GAGE way
voice + screen understanding
1You say what you want
2GAGE reads the current screen
3Taps, types, scrolls — like you would
4Task completed ✓
How It Works

One loop, repeated until done

Each iteration is one action forward. GAGE runs until the goal is met or a step cap is reached — no human touch required.

👁

Observe

Reads every visible element — labels, positions, scroll state — via Android Accessibility Service. No screenshot for this step.

A11y ServiceViewTreeContentDesc
🗺

Map

Builds a compact screen dictionary — numbered elements with type, label, and coordinates. Token-efficient for the LLM.

Screen DictElement IDsBounding Boxes
🧠

Reason

LLM receives the screen map + original goal. Decides the smallest next action — tap #7, type "text", scroll down.

Qwen / GemmaGoal DecompAction Select

Act

Dispatches a real tap, keypress, or scroll through Android's accessibility dispatch API. No root. No ADB needed.

performAction()GestureAPITYPE_CLICK

Verify

Goal reached? Done. If not — screen has changed, new elements appear — loop back to Observe. Runs until complete.

Goal CheckLoop ControlStep Cap
gage · live session · whatsapp task
› "Send a WhatsApp message to Home saying I'll be late."
[ observe ] 12 elements · WhatsApp open · chat list visible
[ reason ] → tap element #3 "Home" contact
[ act ] performClick(node:Home, x:182, y:142) ✓
[ observe ] screen changed → chat open · input_field #11
[ reason ] → typeText #11 "I'll be late" → click send #12
[ act ] typeText(#11) → performClick(#12) ✓
✓ goal reached · 3 loops · 0 API calls · 0 human touches
Live Simulation

Try GAGE — right now

Pick a command or type your own. Watch GAGE reason through every step.

Select a command above to see GAGE in action
Intelligence Stack

The AI behind the eyes

Layered model strategy — accessibility text first, local LLM second, cloud for complexity, vision as last resort. Speed and cost designed in from day one.

G
Gemma 3n
Google · Open Source
On-Device
Primary Reasoner

Runs entirely on-device. Simple to medium tasks with zero network latency — your screen never leaves the phone.

example"Toggle Wi-Fi" or "Open Chrome and navigate to weather.com"
C
Claude / GPT-4o
Anthropic · OpenAI
Cloud
Complex Planner

Multi-app, multi-step tasks requiring deep reasoning. Booking, email chains, multi-page forms — the heavy lifter when tasks get genuinely hard.

example"Read my last 3 unread emails and draft replies based on my calendar"
Q
Qwen2.5-VL
Alibaba · Open Weights
Cloud · Local
Vision Fallback

When accessibility data is missing, Qwen2.5-VL reads a screenshot and maps elements by sight — no text labels required.

example"Find the checkout button with zero accessibility labels"
W
Whisper (tiny)
OpenAI · Open Source
On-Device
Voice Input

Converts spoken commands to text on-device via Whisper.cpp. Offline, low latency, accurate across accents.

example"Send a WhatsApp..." spoken → transcribed on-device → pipeline
M
MediaPipe
Google · On-Device ML
On-Device
UI Detection

Locates interactive zones — buttons, inputs, icons — using on-device ML. Bridges screen capture to structured action targets.

exampleDetecting a Send button rendered as bare icon, no text label
Φ
Phi-4-mini
Microsoft · Open Weights
On-Device
Task Classifier

Routes tasks to the right model tier — simple → Gemma, complex → cloud, visual → Qwen. Millisecond routing keeps cost down.

exampleIs "open camera" simple enough for on-device? → yes, use Gemma
Model routing decision tree
1
A11y text + Gemma (default)
2
UI unclear → MediaPipe
3
Complex → Claude / GPT-4o
4
Screen opaque → Qwen-VL
The Field

Where GAGE sits

Here's how GAGE compares to every existing approach.

Traditional

API-based Assistants

Siri · Google Assistant · Alexa

  • Needs official API integration
  • Breaks if app doesn't cooperate
  • Limited to supported apps only
  • Developer effort required
  • Can't handle legacy or banking apps
  • Closed ecosystem, no extensibility
VS
GAGE
AI-Native Agent

Visual Android Agent

Any app · Any screen · Any task

  • Any app on the screen — no API needed
  • Works even if the app says no
  • Banking, government, legacy all work
  • Just speak — zero developer setup
  • Full UI control including icon-only buttons
  • 100% open source and extensible
View detailed comparison with Droidrun, AppAgent, ScreenAI →
Approach Works without APIs Who operates it How it reads the screen
Siri / Assistant / Alexabuilt-in OS assistants

No — bound to official integrations

Anyone, but only for supported apps

Doesn't read the screen; calls a predefined API

Droidrun / Mobilerundeveloper frameworks

Yes, via accessibility

Developers — plug in a model and write automation

Screenshot or accessibility tree, model-agnostic

Vision-first agentsAppAgent, Mobile-Agent, ScreenAI

Yes, experimentally

Researchers — benchmark and lab settings

Screenshot — vision model every step: slow, costly

GAGEconsumer voice-first agent

Yes — by design, any app with a screen

Anyone — just say what you want, no setup

Text + structure first; vision is a fallback, not default

Why GAGE

Not another dev tool
wearing an AI badge

🎯

No code, ever

Droidrun and peers are built for engineers. GAGE is built for the person holding the phone — you talk to it, it acts, that's the whole interface.

Reads before it looks

Most agents screenshot → vision model every step. GAGE reads on-screen text first — faster and cheaper — and only calls vision when an app hides its labels.

🌐

Works where APIs don't

Banking apps, government portals, legacy software — where built-in assistants give up. If it's on a screen, GAGE can learn to operate it.

System Design

Architecture

Text-first. Vision as fallback. Local by default. Cloud on demand.

🎤
Voice Input
Whisper · On-device
⌨️
Text Command
Direct input
🧠
Task Planner
Goal Decomposition · Step Sequencing · Phi-4-mini Router
Model Router
📲
Gemma 3n
Local · Fast
☁️
Claude / GPT
Cloud · Complex
👁
Qwen2.5-VL
Vision · Fallback
Execution Engine
Action Dispatcher · Retry Controller
Accessibility
A11y Service · Primary
📸
Screen Capture
MediaProjection · Fallback
📱
Android Device
Real Hardware · Emulator · ADB
Observe
Reason
Act
Progress

Building in the right order

Text and structure before vision. Single taps before full autonomy.

01

Foundation

  • Accessibility service
  • Overlay numbering
  • WhatsApp & Gmail ✓
02

Screen Dictionary

  • Live screen map
  • Partial text match
  • Multi-match handling
03

Multi-step Tasks

  • Planning Engine
  • Goal Decomposition
  • Cross-screen memory
04

Reasoning

  • LLM-driven planning
  • Goal-based navigation
  • Multi-step execution
05

Vision Fallback

  • Qwen2.5-VL + MediaPipe
  • OCR + semantic UI
  • Local model support
06

Full Agent

  • Any app, any screen
  • Full autonomy
Technology

Built With

Modern, proven technology assembled thoughtfully for AI-native Android automation.

Android
Kotlin
Accessibility Service
MediaPipe
Qwen2.5-VL
Gemma 3n
Whisper.cpp
Phi-4-mini
MLC / llama.cpp
MCP Ready
Spring Boot
Docker
Community

Open Source.
Built Together.

Project GAGE will be fully open sourced. Join the mission to build the most capable Android AI agent.

Contribute

Submit PRs, fix bugs, build features.

Start Contributing →

Issues

Found a bug? Open an issue and shape GAGE.

Open an Issue →

Roadmap

Track features and vote on priorities.

View Roadmap →

Developer Guide

Docs, API reference, architecture guide.

Read the Docs →
⭐ Star on GitHub
"An agent that sees the screen, understands the interface, and operates any Android app exactly like a human — without an API in sight."
Join the waitlist