Skip to main content

PantoQA CLI

PantoQA CLI is a Python package for running QA flows against Android or iOS apps using natural-language prompts. It connects to the PantoQA service over WebSocket and can drive a locally connected device via the PantoQA bridge or manage remote device sessions.

Ask your agent to set it up

To configure your coding agent with the PantoQA skill, ask it to use the skill file here:

https://www.getpanto.ai/SKILL.md

This is the setup file the agent can reference for PantoQA workflows, commands, and local bridge usage.

Project overview

This repository packages the pantoqacli command and includes a skill definition used by the PantoQA agent tooling:

  • pantoqacli — command-line entry point for authentication, QA execution, bridge inspection, and remote device management
  • skills/pantoqa-agent/SKILL.md — exported skill metadata for agent integrations

Installation

Install from the project root with pip:

python -m pip install -e .

Or install the package from PyPI if available:

python -m pip install pantoqacli

For local developer setup with optional tooling:

python -m pip install -e .[dev]

CLI entry point

After installation, the package exposes:

pantoqacli --help

You can also check the installed version:

pantoqacli --version

Authentication

Most commands require a token. The CLI resolves it in this order:

  1. --token argument
  2. PANTOQA_TOKEN environment variable
  3. ~/pantoqa-agent/.token

Log in to create the token file:

pantoqacli login

Verify the configured key:

pantoqacli test-auth

The alias below is also supported:

pantoqacli auth

Local bridge setup

For local device testing, the bridge must be running and a device must be attached.

Start the bridge:

pantoqa_bridge

Check bridge health:

pantoqacli bridge status

List connected devices:

pantoqacli bridge devices

The serial_no returned by bridge devices is what you pass to --device-serial-no in a QA run.

Running QA prompts

Run a single prompt:

pantoqacli run \
  --prompt "Open Settings app"

Run multiple prompts sequentially in one session:

pantoqacli run \
  --prompt "Open Settings" \
  --prompt "Enable Wi-Fi"

Common optional flags:

pantoqacli run \
  --base-url https://qa-app.getpanto.ai \
  --token "$PANTOQA_TOKEN" \
  --prompt "Open Settings" \
  --prompt "Enable Wi-Fi" \
  --platform android \
  --driver-type BRIDGE_V2 \
  --session-exe-type EXECUTE \
  --bridge-base-url http://127.0.0.1:6565 \
  --device-serial-no emulator-5554 \
  --xml-mode adb \
  --verbose

Uploaded app builds

Upload an Android APK or iOS IPA. The CLI chooses the API form field from the file extension and prints the uploaded build record, including the id used by downstream test APIs:

pantoqacli remote app upload \
  --app-name "Example Android" \
  --file ./app-release.apk

List uploaded builds for the authenticated organization:

pantoqacli remote app list

Use an id from this response as --app-id when starting a remote device. Do not infer a build from its display name. When multiple records could match, ask the user to choose after showing each candidate's build id, display name, and upload time.

Both commands accept --base-url and --token. Uploads accept only .apk or .ipa files.

Bridge and remote device utilities

Inspect the bridge without running a prompt:

pantoqacli bridge status
pantoqacli bridge devices

Remote device lifecycle commands:

pantoqacli remote device start \
  --app-id <uploaded-app-id> \
  --base-url https://qa-app.getpanto.ai \
  --token "$PANTOQA_TOKEN"
pantoqacli remote device status --session-id <session-id>
pantoqacli remote device preview --session-id <session-id>
pantoqacli remote device stop --timeout 10

Exporting the skill definition

This project includes a skill file that can be exported for agent usage:

pantoqacli export-skill

Notes

  • run executes prompts over a WebSocket to the QA server.
  • bridge commands talk to the local bridge service that performs device actions.
  • Remote device commands are separate from local bridge execution and manage background remote sessions.
  • If a bridge is not reachable or no device is available, do not attempt to run automated prompts against it.

License

This project is licensed under the MIT License. See LICENSE for details.

Release files for pantoqacli 0.0.7

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

Built distribution (wheel)

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

Release files / pantoqacli-0.0.7-py3-none-any.whl

Download URL pantoqacli-0.0.7-py3-none-any.whl
Size 20.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5f9563fd10db4638b0515ea1faf3e967281d38c1ca176a083357af1335a41ac9
BLAKE2b-256 checksum
How to use checksums
b81cc8df3ccd0a4afa27b8807ca42b0eb1f0f7eb7c471897a07b5c2255a858c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.0

Release history Release notifications | RSS feed

0.0.8

1 release file

This release

0.0.7 This release

1 release file

0.0.6

1 release file

0.0.5

1 release file

0.0.4

1 release file

0.0.3

1 release file

0.0.2

1 release file

0.0.1

1 release file

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