Skip to content

CLI / SDK Quickstart

This tutorial walks you through installing the QubitHub CLI, running your first quantum circuit, and publishing changes — all from the terminal.

Time to complete: ~5 minutes

Terminal window
pip install qubithub-sdk

This installs both the Python SDK and the qubithub CLI. Verify:

Terminal window
qubithub --help

Interactive login (opens a prompt):

Terminal window
qubithub login

Enter your email and password when prompted.

Non-interactive login (CI/CD, scripts):

Terminal window
# With an API key
qubithub login --api-key qh_abc123...
# With an environment variable
export QUBITHUB_API_KEY=qh_abc123...

Verify you’re authenticated:

Terminal window
qubithub whoami

List available circuits:

Terminal window
qubithub circuits list

Filter by framework:

Terminal window
qubithub circuits list --framework qiskit

Filter by tag:

Terminal window
qubithub circuits list --tag entanglement

View details of a specific circuit:

Terminal window
qubithub circuits info QubitHub/bell-state

Execute a circuit and watch the results:

Terminal window
qubithub execute QubitHub/bell-state --shots 1024 --watch

The --watch flag polls until the run completes and displays a histogram of measurement results.

Output (example):

✓ Resolved QubitHub/bell-state → abc123
Submitted run run_456 on qiskit_aer (1024 shots)
⣿ Polling... completed
Measurement Histogram (1024 shots)
|00⟩ ████████████████████ 512 (50.0%)
|11⟩ ████████████████████ 512 (50.0%)

For JSON output (useful for scripting):

Terminal window
qubithub execute QubitHub/bell-state --shots 1024 --watch --format json

Clone a circuit’s files to your local machine:

Terminal window
qubithub circuits clone QubitHub/bell-state
cd bell-state

This downloads:

  • circuit.py — the quantum circuit code
  • qubithub.toml — circuit manifest (metadata)
  • README.md — documentation
  • metadata.json — auto-generated metadata

Open circuit.py in your editor and make changes.

After editing, push your modified circuit back to QubitHub:

Terminal window
qubithub circuits push

The CLI validates your qubithub.toml, uploads all files, and creates a new version.

Scaffold a new circuit project:

Terminal window
qubithub circuits init my-algorithm --framework qiskit

This generates a directory with template files:

my-algorithm/
├── circuit.py # Your circuit code
├── qubithub.toml # Manifest (edit this!)
└── README.md # Documentation

Edit the files, then push:

Terminal window
cd my-algorithm
qubithub circuits push
CommandDescription
qubithub loginAuthenticate (interactive or --api-key)
qubithub logoutClear stored credentials
qubithub whoamiShow current user
qubithub execute <repo>Execute a circuit
qubithub circuits listBrowse circuits
qubithub circuits info <repo>Circuit details
qubithub circuits clone <repo>Download circuit files
qubithub circuits pushUpload local circuit
qubithub circuits init <name>Scaffold new circuit
qubithub circuits fork <repo>Fork a circuit
qubithub circuits metadataShow parsed manifest (-f json|toml)
qubithub runs listList your runs
qubithub runs info <id>Run details and results
qubithub runs cancel <id>Cancel a running execution
qubithub runs statsShow run statistics
qubithub keys createCreate an API key
qubithub keys listList API keys
qubithub keys revoke <id>Revoke an API key
qubithub config set <key> <val>Set a CLI default
qubithub config get <key>Get a CLI default
qubithub config listList all CLI defaults
qubithub config unset <key>Remove a CLI default

The qubithub-sdk package also exposes a Python client:

from qubithub_sdk import QubitHubClient
from qubithub_sdk.models import RunCreateRequest
client = QubitHubClient(api_key="qh_abc123...")
# List circuits
circuits = client.list_circuits(framework="qiskit")
for c in circuits.circuits:
print(f"{c.repo_name}{c.title}")
# Execute a circuit
run = client.create_run(RunCreateRequest(
circuit_id="<circuit-uuid>",
backend_name="qiskit_aer",
shots=1024,
))