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.

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

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 --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

Development

Repository structure:

.
├── LICENSE
├── README.md
├── makefile
├── pyproject.toml
├── pantoqacli/
│   └── cli.py
├── docs/
└── skills/
    └── pantoqa-agent/
        └── SKILL.md

To run the package in editable mode for local development:

python -m pip install -e .

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.2

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.2
File Interpreter ABI Platform
pantoqacli-0.0.2-py3-none-any.whl Python 3 none any Details

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

Download URL pantoqacli-0.0.2-py3-none-any.whl
Size 19.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2ea99734ddb14b419cc6753206486c6a79e925057bb83c56cb0952897e59084d
BLAKE2b-256 checksum
How to use checksums
e75eb0cdb34e1f9f3ffe2caa7d91ee197072fcfa467009d921012a1fc7e7b0f3
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

0.0.7

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

This release

0.0.2 This release

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