Let an AI agent tap and type on an Android device by referring to buttons and fields by their visible label
Script fast, repeated taps and screen checks for Android automation without pixel coordinates
Wait for specific text to appear on an Android screen before continuing a script
Integrate Android control into another program by parsing Handsets' JSON output
| elliotgao2/handsets | moritzheiber/crowbar | adysec/clawbot | |
|---|---|---|---|
| Stars | 35 | 35 | 37 |
| Language | Rust | Rust | Rust |
| Last pushed | — | 2023-06-01 | — |
| Maintenance | — | Dormant | — |
| Setup difficulty | easy | moderate | moderate |
| Complexity | 3/5 | 2/5 | 3/5 |
| Audience | developer | ops devops | developer |
Figures from each repo's GitHub metadata at analysis time.
No app install or rooted phone needed, connects over the standard ADB cable connection.
Handsets is a command-line tool for controlling an Android phone or tablet from a computer, designed to be fast enough for automated use by AI agents as well as manual scripting. It lets you tap buttons, type text, take screenshots, and wait for specific text to appear on screen, all from shell commands that complete in 2 to 7 milliseconds per call. That is considerably faster than the standard alternatives, which the README benchmarks at 30 to 700 milliseconds per call. The tool works by pushing a small Java file (a single jar of a few hundred kilobytes) onto the Android device over the standard Android developer connection cable, ADB. No app installation is required, and no rooted phone is needed. The jar runs on the device and exposes Android's accessibility layer, which is the same system that screen readers use to understand what is currently on screen. Handsets connects to this over a local TCP port forwarded through ADB. The key design choice that makes it useful for automation is label-based selection. Instead of having to specify exact pixel coordinates to tap a button, you can refer to elements by their visible text or HTML-like attributes. For example, you can tap a button labeled "Continue" by name, or target an input field by its placeholder hint text. It also supports a selector syntax similar to CSS for more precise targeting: visible-only filters, has-text matching, spatial relationships like below or near, and so on. For integration with other code, Handsets can output JSON from every command, making it easy to parse results in any programming language. Official Python bindings are available as a pip package. For other languages, you run the CLI as a subprocess and read one JSON line per call. The tool is described as pre-1.0 but with a stable command-line interface since version 0.1.0. It is released under the MIT license and runs on macOS and Linux. The README notes it does not include features that tools like Appium or uiautomator2 offer, such as test recorders, HTML reports, or iOS support, and is specifically aimed at tap-heavy scripting where call speed matters.
A fast command-line tool for controlling an Android device from a computer, tapping, typing, and reading screen text by label instead of pixel coordinates.
Mainly Rust. The stack also includes Rust, ADB, Python.
MIT license: use, copy, modify, and distribute freely, including commercially, as long as you keep the copyright notice.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.