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 invoke — invoke 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
don a function to deploy,qto 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:
--jsonmust 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
42837cfbdc85b1805fc96d989bb3e11ac382816ea693965bd41c1cd8a1331299
|
|
| MD5 |
b8626c202cb0fc4e7938d9d8e5b269ec
|
|
| BLAKE2b-256 |
35b1f298290eb2390c3e027ffe59a8bda365955e72a63f1684d992c857fc9b72
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1c748269c340625f5fb3b8f4b24f04d7f50fb279ab7b1002633bdba4355f3f24
|
|
| MD5 |
872d45a1315c7e2973c559e0565a5760
|
|
| BLAKE2b-256 |
bd714a9781f4488590dfba81430eae4db19369df4725b07562bc61e2d3b888f0
|