whatisgithub

What is handsets?

elliotgao2/handsets — explained in plain English

Analysis updated 2026-05-18

35RustAudience · developerComplexity · 3/5LicenseSetup · easy

In one sentence

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.

Mindmap

mindmap
  root((Handsets))
    What it does
      Tap and type via CLI
      Screenshots
      Wait for on-screen text
    How it works
      Small jar pushed over ADB
      Accessibility layer
      Label based selection
    Tech stack
      Rust
      ADB
      Python bindings
    Use cases
      AI agent phone automation
      Manual Android scripting

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

What do people build with it?

USE CASE 1

Let an AI agent tap and type on an Android device by referring to buttons and fields by their visible label

USE CASE 2

Script fast, repeated taps and screen checks for Android automation without pixel coordinates

USE CASE 3

Wait for specific text to appear on an Android screen before continuing a script

USE CASE 4

Integrate Android control into another program by parsing Handsets' JSON output

What is it built with?

RustADBPython

How does it compare?

elliotgao2/handsetsmoritzheiber/crowbaradysec/clawbot
Stars353537
LanguageRustRustRust
Last pushed2023-06-01
MaintenanceDormant
Setup difficultyeasymoderatemoderate
Complexity3/52/53/5
Audiencedeveloperops devopsdeveloper

Figures from each repo's GitHub metadata at analysis time.

How do you get it running?

Difficulty · easy Time to first run · 5min

No app install or rooted phone needed, connects over the standard ADB cable connection.

MIT license: use, copy, modify, and distribute freely, including commercially, as long as you keep the copyright notice.

So what is it?

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.

Copy-paste prompts

Prompt 1
Explain how Handsets uses Android's accessibility layer to find elements by label instead of coordinates
Prompt 2
Help me write a script that taps a 'Continue' button and waits for text using Handsets
Prompt 3
Show me how to use Handsets' Python bindings versus running the CLI as a subprocess
Prompt 4
Compare Handsets to Appium or uiautomator2 for automating an Android device

Frequently asked questions

What is handsets?

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.

What language is handsets written in?

Mainly Rust. The stack also includes Rust, ADB, Python.

What license does handsets use?

MIT license: use, copy, modify, and distribute freely, including commercially, as long as you keep the copyright notice.

How hard is handsets to set up?

Setup difficulty is rated easy, with roughly 5min to a first successful run.

Who is handsets for?

Mainly developer.

Open on GitHub → Ask about another repo

This repo across BitVibe Labs

Verify against the repo before relying on details.