Skip to main content

appium-pilot

An agent-first, session-based CLI for driving native mobile apps via Appium. One verb per invocation, state persisted across calls, output tuned for an LLM agent: snapshot the screen to get element refs, then act on them by ref.

Install

pipx install .          # or: pip install -e .

You also need Node + the Appium server and drivers (appium-pilot does not install them — run appium-pilot doctor to see what's missing):

npm i -g appium
appium driver install uiautomator2   # Android
appium driver install xcuitest       # iOS

Quick start

# Launch an installed Android app (auto-picks a booted emulator)
appium-pilot open --platform android --app-package com.example.app

# Or an iOS Simulator app bundle
appium-pilot open --platform ios --app /path/to/MyApp.app

# Inspect the screen — returns filtered XML with e1..eN refs
appium-pilot snapshot

# Act on a ref from the latest snapshot
appium-pilot tap e7

# Multiple parallel sessions
appium-pilot -s=checkout open --platform ios --app /path/to/MyApp.app

Session state lives under ~/.appium-pilot/ (so any invocation can reattach regardless of cwd). Artifacts you want to find — screenshots and videos — are written to ./appium-pilot/ in the current directory (override with APPIUM_PILOT_OUTPUT).

Use from AI coding agents

A skill ships inside the package so agents discover the commands and drive the CLI themselves. Install it into whichever tool you use — no manual symlink:

appium-pilot skills install                # Claude Code (~/.claude/skills/), the default
appium-pilot skills install --tool cursor  # Cursor       (.cursor/rules/)
appium-pilot skills install --tool copilot # GitHub Copilot (.github/copilot-instructions.md)
appium-pilot skills install --tool agents  # AGENTS.md (the cross-tool standard)
appium-pilot skills install --tool all     # all of the above
appium-pilot skills uninstall --tool all   # remove

claude installs user-level (once, for every project); the others write into the current project. The skill source lives at src/appium_pilot/skilldata/SKILL.md; re-run skills install after editing it.

Platform support

  • macOS — full: iOS Simulator + Android Emulator.
  • Windows / Linux — Android only (iOS needs a Mac). External tools are resolved through shutil.which (honoring PATHEXT, so appium.cmd/adb.exe work) and background processes detach via OS-appropriate flags. On Windows, make is uncommon — run the underlying commands directly (.venv\Scripts\pytest, python -m appium_pilot ...). The Windows path is implemented but not yet exercised on a Windows host.

Testing

Two tiers (see tests/):

make install          # pip install -e ".[dev]"
make test             # fast unit tests, no device — run after every change
make test-e2e-android # device-backed E2E (auto-boots an emulator)
make test-e2e-ios     # device-backed E2E (auto-boots a simulator)
make test-e2e         # both platforms
  • Unit (tests/unit/, ~0.2s, no device): locks in the snapshot filtering, per-platform locators, quoting, output/JSON contract, parsing and config logic. pytest runs only these by default.
  • E2E (tests/e2e/, marked e2e): drives the real CLI against official Appium sample apps — ApiDemos (Android) and TestApp (iOS, built on demand) — covering every command on both platforms. Apps are cached under tests/_apps/; tests skip cleanly if a device/toolchain is unavailable.

Status

All v1 commands implemented and smoke-tested end-to-end on an iOS Simulator (open → snapshot → tap → re-snapshot → screenshot → stale-ref handling → close):

open · close · list · close-all · kill-all · snapshot [--raw] · source · screenshot [ref] · devices · doctor · tap · type · clear · swipe · scroll · press · hide-keyboard · orientation · wait · video-start/video-stop · launch/activate/terminate/background/install/remove/reset.

Targets iOS Simulator + Android Emulator. Deferred to v2: hybrid webview, geolocation, network conditions, deep links, real devices, cloud farms.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

appium_pilot-0.2.0.tar.gz (51.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

appium_pilot-0.2.0-py3-none-any.whl (49.9 kB view details)

Uploaded Python 3

File details

Details for the file appium_pilot-0.2.0.tar.gz.

File metadata

  • Download URL: appium_pilot-0.2.0.tar.gz
  • Upload date:
  • Size: 51.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for appium_pilot-0.2.0.tar.gz
Algorithm Hash digest
SHA256 be52bdc76f82175d415a8a57c8e50ba65066aea8907c0e18f8dadee79640b40b
MD5 bfb8fa0d0e271a15366ce9961435a494
BLAKE2b-256 bbf7f8d820b427a96a609497e0e52dfbe7f5b8add7364dcb0ade058515c6c8f6

See more details on using hashes here.

File details

Details for the file appium_pilot-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: appium_pilot-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 49.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for appium_pilot-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0fabfe3f24deaa83202ea8f35b504fbd7c0ad4c46f1a0e8b7653e69951f9ed1a
MD5 2bd45c6e8435d332378f461a327a9652
BLAKE2b-256 ed0f14d7fbadf91f03cd71bc03cf654306df0cf62e8facd5c1008bb94670ac66

See more details on using hashes here.

Release history Release notifications | RSS feed

0.3.0

2 files

This release

0.2.0 This release

2 files

0.1.0

2 files

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