Coati: Host-Grounded Execution for Installable Mobile GUI Agents
Organizations: Independent Researcher, China
Abstract
Mobile GUI agents can carry out tasks across apps, yet most run on a separate computer that drives a phone over the Android Debug Bridge (ADB), out of reach of ordinary users and of the apps through which most people reach Web services. We present Coati, a source-available agent that users install as an Android app. Its runtime on the phone, the host, records what a model alone cannot see: the effect of each action at its target, result screens across apps, and the progress of repeated steps. VerifyLoop checks action outcomes and completion claims against host evidence and reports a completion it cannot audit as unverified. AppMemory builds per-app procedural memory from observations that the interface supports and reuses it on later visits. A routed fast executor lets a lightweight selection model take simple, confident steps and lets the host repeat loops of simple steps that the large model plans once. On all 116 AndroidWorld tasks, with Gemini 3.8 Flash as every agent's backbone, Coati succeeds on 86.5% of the tasks over three trials, ahead of the strongest open-source agent Artemis (77.6% with the same accessibility-only access, 76.5% even when allowed ADB) and far ahead of FinalRun and Midscene (about 59%), and VerifyLoop cuts false completion claims by about a third at comparable success. In everyday use, the fast executor cuts the median time of phone tasks by 39% at comparable success and runs three of four loop tasks 2.8-5.4x faster with 6-9x fewer model tokens, while AppMemory shortens a repeated deep route in an unfamiliar app from 18.5 steps to 6-7. On an Android 16 phone, routed execution completes all 27 benchmark runs with 76% fewer Reasoning calls on the critical path. Host evidence, not model self-assessment, makes an installable agent reliable and fast.
Figures & tables
| Outcome | Interpretation | Control Decision |
| SUCCESS | The expected transition is observed. | Continue from the new state. |
| FAILED | The action is ineffective or the expected state is absent. | Return failure feedback and replan. |
| DRIFTED | Execution enters a task-incompatible state. | Recover from the observed state or terminate. |
| UNEXPECTED | The interface changes differently from the prediction. | Continue reasoning from the observed state. |
| UNKNOWN | Available evidence is insufficient. | Re-observe without assuming success. |
| Decision | Condition | Action |
| MATCHED | Existing fact | Keep unchanged. |
| NEW | New/changed fact and | Sanitize and add to . |
| UNKNOWN | Insufficient evidence | Discard the observation. |
| NO_CHANGE | No valid difference | Preserve . |
| EDIT | Bounded additions | Apply a constrained local edit. |
| SUMMARIZE | Redundancy or capacity limit | Reorganize under validation. |
| Agent | Trials | SR | pass 3 | False done | Time | Tokens |
| Midscene.js | 1 | 59.1 | – | 7.5 | 179 | 222 |
| FinalRun | 1 | 59.9 | – | 14.5 | 224 | 177 |
| Artemis (ADB) | 1 | 76.5 | – | – | 185 | – |
| Artemis (GUI) | 3 | 77.6 | 69.8 | – | 209 | – |
| Coati | 3 | 86.5 | 81.9 | 5.4 | 172 | 154 |
| Configuration | Easy | Medium | Hard | SR | False done |
| C1: no VerifyLoop | 96.7 | 86.1 | 73.7 | 89.7 | 8.0 |
| C2: Coati | 96.2 | 79.6 | 68.4 | 86.5 | 5.4 |
| Classic | Routed + loops | |||||||
| Task | OK | Time | Steps | Tok. | OK | Time | Steps | Tok. |
|---|---|---|---|---|---|---|---|---|
| R1 first 10 to favorites | 5/5 | 140 | 13 | 145 | 5/5 | 50 | 12 (11) | 21 |
| R2 six given IDs to compare | 5/5 | 309 | 25 | 304 | 5/5 | 57 | 14 (13) | 33 |
| R3 hide every Sold listing | 4/5 | 210 | 22 | 245 | 5/5 | 63 | 14 (13) | 39 |
| R4 refresh until price drops | 5/5 | 100 | 9 | 101 | 3/3 | 92 | 8 (7) | 90 |
| App | Memory | Run 1 | Run 2 | Run 3 | Run 4 |
| Manual Lab | off | 14 / 171 | 19 / 198 | 18 / 183 | 19 / 198 |
| session 1 | 19 / 286 | 6 / 61 | 6 / 61 | 6 / 61 | |
| session 2 | 14 / 138 | 7 / 80 | 7 / 71 | 7 / 85 | |
| session 3 | 15 / 163 | 7 / 77 | 7 / 77 | 7 / 117 | |
| Messages | off | 5 / 46 | 5 / 49 | 5 / 52 | 5 / 46 |
| session 1 | 5 / 43 | 5 / 46 | 6 / 88 | 5 / 49 |
Appendix figures & tables4 assets
Supplementary material from the paper’s appendix.
Appendix
| Metric | Vision parse | + OCR repair | |
| Elements found | 51.7% | 63.7% | +12.0 |
| Exact text | 49.2% | 57.6% | +8.4 |
| Tap hit | 26.4% | 32.0% | +5.6 |
| Elements made worse | – | 0 |
| Method | Model | Screen Representation | SR |
| (a) Published methods (paper-reported) | |||
| UI-TARS ( Qin et al., 2025 ) | UI-TARS-72B | Screenshot | 46.6 |
| Agent S2 ( Agashe et al., 2025 ) | Agent S2 | Screenshot | 54.3 |
| V-Droid ( Dai et al., 2026 ) | V-Droid (Llama-8B) | A11y tree | 59.5 |
| Mobile-Agent-v3 ( Ye et al., 2025 ) | GUI-Owl-32B | Screenshot | 73.3 |
| MobileRL ( Xu et al., 2026 ) | MobileRL-9B (GLM-4.1V-9B) | Screenshot + A11y tree | 80.2 |
| Per-step Reasoning | Routed (Coati) | ||||||||
| Task | Interface | Succ. | Time (s) | Steps | Reas. | Succ. | Time (s) | Steps | Reas. |
| L1 | native, several menus deep | 2/3 | 410.9 | 31.0 | 31.0 | 3/3 | 295.2 | 34.3 | 13.7 |
| L2 | native, search and text entry | 3/3 | 78.7 | 6.0 | 6.0 | 3/3 | 32.4 | 6.3 | 0.0 |
| L3 | native, dependent setting | 3/3 | 60.9 | 5.0 | 5.0 | 3/3 | 21.2 | 5.0 | 0.0 |
| W1 | custom canvas, no tree | 3/3 | 99.1 | 7.0 | 7.0 | 3/3 | 82.7 | 9.0 | 0.7 |
| W2 | canvas and text entry | 3/3 | 100.5 | 7.7 | 7.7 | 3/3 | 120.8 | 16.3 | 1.0 |
Mobile GUI Agents
Mobile GUI agents use visual and structured interface information to carry out tasks across smartphone apps.
See all 87 papers