Skip to main content

AndroidCtl

PyPI CI License: GPL-3.0-or-later

A Playwright-like CLI for Android automation, built for AI agents.

AndroidCtl lets your agent operate apps on an Android phone or emulator. The agent reads the screen as compact XML, acts on its elements, waits for results and takes screenshots; it can also run shell scripts and transfer files.

Works with Claude Code, Codex, OpenCode and any other agent that can run shell commands.

  • No root, no ADB for daily use. The Android app runs through Shizuku and accepts connections over your network after a one-time pairing.
  • Built for agents. Snapshots carry refs such as e6, and every command reports done, failed, not sent or UNKNOWN. Uncertain actions are never resent automatically.
  • Light on context. Snapshots and screenshots are saved as files and each command prints a short result, so the agent reads only what it needs.
  • Everything in one package. pip install androidctl includes the CLI, the matching Android app and the agent skill.

Requirements

  • Python 3.12 or newer on Windows, macOS or Linux.
  • Android 11 or newer on arm64-v8a or x86_64, main user and default display only.
  • Shizuku started through ADB or wireless debugging. Root mode is not supported.
  • A network route from the computer to the phone.

Setup

1. Install

pip install androidctl
androidctl apk --out androidctl.apk

Install androidctl.apk on the phone, for example with adb install androidctl.apk. It always matches the installed CLI; the two versions must be the same.

2. Install The Skill

Export the skill into the directory your agent loads skills from:

mkdir -p ~/.claude/skills
androidctl skill --out ~/.claude/skills/androidctl

That is the location for Claude Code. For Codex, use ~/.agents/skills instead; OpenCode reads both. The export contains SKILL.md, the agent's workflow, and reference.md, the full command reference.

3. Pair

Start Shizuku, open AndroidCtl, tap Authorize Shizuku and turn on Gateway. When it shows Listening and Executor attached, tap Show new pairing code. Give your agent the address and code, or pair yourself:

androidctl pair 192.168.1.20:18843 000042 --name phone

The first pairing trusts the certificate the phone presents, so pair on a network you trust. For an emulator or a phone without a network route, use an ADB route. After the phone restarts, start Shizuku and turn on Gateway again.

Ask Your Agent

With the skill installed, ask for the result you want:

  • "Open Settings on my phone and turn on dark mode."
  • "Go through the sign-up flow in the Example app and take a screenshot of each screen."
  • "Copy the newest file in /sdcard/Download on my phone to this folder."

If your agent does not support skills, start with: "Use androidctl to control my phone. First run androidctl skill --out androidctl-skill and read its SKILL.md."

To run several agents, start each one with its own session and device:

ANDROIDCTL_DEVICE=phone ANDROIDCTL_SESSION=checkout claude

A phone serves one session at a time, so agents on different phones run in parallel and agents sharing a phone take turns.

What Your Agent Runs

androidctl session open
androidctl snapshot
androidctl fill e3 "Groceries" --submit
androidctl click e6
androidctl wait --contains "Saved"
androidctl screenshot
androidctl session close

Run androidctl COMMAND --help for options, or read the skill for the complete workflow.

Upgrading

  • Finish active work, then run androidctl daemon stop before replacing the Python package, even with the same version.
  • Finish device work before installing a new app version. Before reinstalling the same version, tap Stop idle executor.
  • Delete the exported skill directory and run androidctl skill --out again so the instructions match the new version.

Development

See Repository Guidelines for environment setup and quality checks, and Release Operations for signing, local candidates and manual publishing.

Metadata

Release files for androidctl 0.3.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for androidctl 0.3.0
File Size Uploaded Provenance Actions
androidctl-0.3.0.tar.gz 2.5 MB Without provenance Details for androidctl-0.3.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for androidctl 0.3.0
File Interpreter ABI Platform Actions
androidctl-0.3.0-py3-none-any.whl Python 3 none any Details for androidctl-0.3.0-py3-none-any.whl

Total release size: 5.0 MB

Release files / androidctl-0.3.0.tar.gz

Download URL androidctl-0.3.0.tar.gz
Size 2.5 MB
Tags Source
SHA-256 checksum
How to use checksums
82aa4d42b4d2724922eaff952b45c6035b13939e926f024cbf36c8b01d889205
BLAKE2b-256 checksum
How to use checksums
fafbac434372af8358739ab7417108e4a5fd6dd8970ab8d03be22df39f301646
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Release files / androidctl-0.3.0-py3-none-any.whl

Download URL androidctl-0.3.0-py3-none-any.whl
Size 2.5 MB
Tags Python 3
SHA-256 checksum
How to use checksums
4062938c6cea2afe58ad790edb9da78753c98fa68f7fe11b5e4852704c41228c
BLAKE2b-256 checksum
How to use checksums
66fd832b2c808771ba82137ccd2e87e845e2e9c9fc07014f727fbe9e804ad82b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.13

Security for androidctl 0.3.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page