Skip to main content

CLI for the Quapp quantum/cloud computing platform

Project description

Quapp CLI

A command-line interface for the Quapp quantum/cloud computing platform. Submit quantum jobs, manage functions and projects, and automate workflows from your terminal or Python scripts.

Requirements

Python 3.10+ and pip.

Install

pip install quapp

Or download a standalone binary from the GitLab CI pipeline artifacts — no Python required.

Quick Start

# 1. Authenticate (interactive prompt — use --email/--password flags for CI)
quapp login

# 2. Create a project and note the ID from the output
quapp project create --name my-project

# 3. Set it as default (avoids --project on every command)
quapp config set project-id <project-id>

# 4a. One-shot: upload handler, deploy, and run a job
quapp deploy \
  --project my-project \
  --function my-qec \
  --handler handler.py \
  --device Simulator \
  --shots 1024 \
  --wait

# 4b. Step-by-step (use when you need fine-grained control)
quapp function create --name my-qec --sdk-version 0.45.3 --lang qiskit
quapp function version <function-id> --description "v1" --files main.py
quapp job run --function <function-id> --device Simulator --shots 1024 --wait

What's New

Feature Summary
Unified error format All errors: ✗ ErrorType message + hint line (e.g. → Run 'quapp login' to re-authenticate)
Live spinner polling --wait on deploy and invoke shows a Rich spinner + elapsed time. Ctrl+C detaches (job keeps running).
Shell completion quapp --install-completion installs tab completion. Git Bash: run source ~/.bashrc to activate.
Grouped help panels quapp --help groups commands under: Projects, Functions, Jobs, Workflows. Key commands include usage examples in their --help epilog.
quapp watch <job-id> Top-level shortcut — live Rich dashboard with job status, elapsed time, function/provider info, and log tail. Equivalent to quapp job watch <job-id>.
quapp browse Interactive three-pane browser: Projects → Functions → Jobs. Arrow-key navigation; d on a function to deploy; q to quit. Git Bash: use --fallback for numbered-menu mode.

Commands

Auth

quapp login                                  Authenticate (prompts for email + password)
quapp logout                                 Invalidate session
quapp whoami                                 Show the currently authenticated user

quapp login accepts --email / -e and --password flags for non-interactive/CI use.

Config

quapp config show                            Print base_url, project_id, and masked token
quapp config set <key> <value>               Set base-url or project-id

Use quapp config set project-id <id> to set a default project. Project IDs are shown by quapp project list.

SDKs

quapp sdk list                               List valid SDK names and versions for function create

Projects

quapp project create --name X [--description Y] [--permission private|group]
quapp project list                           IDs shown here — use with config set project-id
quapp project get <id>
quapp project delete <id>

Functions

quapp function create --name X --sdk-version X --lang qiskit|cuda [--description Y] [--project / -p <id>]
quapp function version <id> --description X --files file.py [--project / -p <id>]
quapp function list [--project / -p <id>]
quapp function get <id> [--project / -p <id>]
quapp function logs <id> [--project / -p <id>]
quapp function delete <id> [--project / -p <id>]

quapp function version accepts one or more --files entries.

Jobs

quapp job run --function <id> --device X --shots N [--provider X] [--wait] [--project / -p <id>]
quapp job list [--project / -p <id>]
quapp job status <id> [--project / -p <id>]
quapp job results <id> [--project / -p <id>]
quapp job cancel <id> [--project / -p <id>]
quapp job retry <id> [--project / -p <id>]
quapp job watch <id> [--project / -p <id>]

quapp job watch live-polls until the job reaches a terminal state.

Use quapp sdk list to discover available providers and devices.

Deploy (all-in-one)

quapp deploy --project X --function X --handler handler.py --device X [--sdk-version X]
             [--requirements requirements.txt] [--provider X] [--shots N]
             [--input KEY=VALUE ...] [--wait]

Uploads the handler, creates a function version, deploys it, and submits a job — all in one command. --requirements is auto-detected if omitted. Default provider is Quapp.

Invoke (name-based shortcut)

quapp invoke invoke --project X --function X --device X [--provider X] [--shots N]
                    [--input KEY=VALUE ...] [--wait]

Resolves project/function/device names to IDs and submits a job without needing explicit IDs. Note: the command is quapp invoke invokeinvoke is both the command group and the subcommand.

Watch (shortcut)

quapp watch <job-id>                         Live dashboard: status, elapsed time, function/provider, log tail

Equivalent to quapp job watch <job-id>. Press q to quit (job keeps running).

Browse (interactive)

quapp browse [--fallback]                    Three-pane interactive browser: Projects → Functions → Jobs
  • Arrow keys to navigate, Enter to drill down, Backspace to go back
  • d on a function to deploy, q to quit
  • --fallback: numbered-menu mode for terminals without raw key support (Git Bash)

TUI

quapp tui                                    Launch the interactive terminal UI

Global flags

--json    Output raw JSON instead of Rich tables

Note: --json must precede the subcommand: quapp --json job status <id>.

Python SDK

The quapp package can be used as a Python SDK — no CLI required.

from quapp.config import load_config
from quapp.api.client import QuappClient
from quapp.api.jobs import run_job, get_job_status

config = load_config()
client = QuappClient(config.base_url, token=config.token, project_id=config.project_id)

job = run_job(client, function_id="f123", provider="Quapp", device="Simulator", shots=1024)
status = get_job_status(client, job["jobId"])
print(status["status"])

Full SDK reference: docs/SDK.md

Development

pip install -e .
python -m pytest tests/ -v
quapp tui          # launch interactive UI

License

MIT

Project details


Download files

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

Source Distribution

quapp-0.1.5.tar.gz (55.0 kB view details)

Uploaded Source

Built Distribution

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

quapp-0.1.5-py3-none-any.whl (52.4 kB view details)

Uploaded Python 3

File details

Details for the file quapp-0.1.5.tar.gz.

File metadata

  • Download URL: quapp-0.1.5.tar.gz
  • Upload date:
  • Size: 55.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for quapp-0.1.5.tar.gz
Algorithm Hash digest
SHA256 42837cfbdc85b1805fc96d989bb3e11ac382816ea693965bd41c1cd8a1331299
MD5 b8626c202cb0fc4e7938d9d8e5b269ec
BLAKE2b-256 35b1f298290eb2390c3e027ffe59a8bda365955e72a63f1684d992c857fc9b72

See more details on using hashes here.

File details

Details for the file quapp-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: quapp-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 52.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for quapp-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 1c748269c340625f5fb3b8f4b24f04d7f50fb279ab7b1002633bdba4355f3f24
MD5 872d45a1315c7e2973c559e0565a5760
BLAKE2b-256 bd714a9781f4488590dfba81430eae4db19369df4725b07562bc61e2d3b888f0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page