Skip to main content

Quantum experiment tracking library

Project description

CI PyPI Python Docs License

devqubit

Local-first experiment tracking for quantum computing. Capture circuits, backend state, and configuration — runs are reproducible, comparable, and easy to share. Access your data via Python API, CLI, or Web UI.

Status: Alpha — APIs may evolve in 0.x releases.

Why devqubit?

General-purpose experiment trackers (MLflow, Weights & Biases, DVC) are great for logging parameters, metrics, and artifacts. But quantum workloads need extra structure that isn't first-class there by default: capturing what actually executed (program + compilation), where it executed (backend/device), and how it executed (runtime options).

Challenge MLflow / W&B / DVC devqubit
Circuit artifacts manual file logging OpenQASM 3 + SDK-native formats (automatic)
Device context manual backend snapshots, calibration/noise context (automatic)
Reproducibility depends on what you log program + device + config fingerprints (automatic)
Result comparison metric/table-oriented distribution-aware, structural diff, drift detection
Noise-aware verification requires custom logic configurable policies with noise tolerance
Portable sharing artifact/version workflows self-contained bundles (manifest + SHA-256 digests)

devqubit is quantum-first: same circuit, same backend, different day — different results. devqubit helps you track why.

Features

  • Automatic circuit capture — QPY, OpenQASM 3, SDK-native formats
  • Multi-SDK support — Qiskit, Qiskit Runtime, Braket, Cirq, PennyLane
  • Content-addressable storage — deduplicated artifacts with SHA-256 digests
  • Reproducibility fingerprints — detect changes in program, device, or config
  • Run comparison — TVD analysis, structural diff, calibration drift
  • CI/CD verification — baselines with configurable noise-aware policies
  • Portable bundles — export/import runs as self-contained ZIPs

Documentation

📚 https://devqubit.readthedocs.io

Installation

Requirements: Python 3.11+

pip install devqubit

# With SDK adapters
pip install "devqubit[qiskit]"          # Qiskit + Aer
pip install "devqubit[qiskit-runtime]"  # IBM Quantum Runtime
pip install "devqubit[braket]"          # Amazon Braket
pip install "devqubit[cirq]"            # Google Cirq
pip install "devqubit[pennylane]"       # PennyLane
pip install "devqubit[all]"             # All adapters

# With local web UI
pip install "devqubit[ui]"

Quick start

Track an experiment

from qiskit import QuantumCircuit
from qiskit_aer import AerSimulator
from devqubit import track

qc = QuantumCircuit(2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

with track(project="bell-state", run_name="baseline-v1") as run:
    backend = run.wrap(AerSimulator())
    job = backend.run(qc, shots=1000)
    counts = job.result().get_counts()

    run.log_param("shots", 1000)
    run.log_metric("p00", counts.get("00", 0) / 1000)

print(f"Run saved: {run.run_id}")

The adapter automatically captures: circuit (QPY + QASM3), backend config, job metadata, and results.

Compare runs

from devqubit.compare import diff

result = diff("baseline-v1", "experiment-v2", project="bell-state")

print(result.identical)           # False
print(result.program.match_mode)  # "structural"
print(result.tvd)                 # 0.023

Or via CLI:

devqubit diff baseline-v1 experiment-v2 --project bell-state

CI/CD verification

from devqubit.compare import verify_baseline, VerifyPolicy

result = verify_baseline(
    "nightly-run",
    project="vqe-hydrogen",
    policy=VerifyPolicy(tvd_threshold=0.05),
)

assert result.ok, result.reason
# With JUnit output for CI pipelines
devqubit verify nightly-run --project vqe-hydrogen --junit results.xml

CLI

devqubit list                          # List runs
devqubit show <run> --project myproj   # Run details
devqubit diff <a> <b> --project myproj # Compare runs
devqubit ui                            # Web interface

See CLI reference for all commands.

Web UI

devqubit ui
# → http://127.0.0.1:8080

Runs list    Run comparison

Browse runs, view artifacts, compare experiments, and manage baselines.

Contributing

We welcome contributions of all kinds — bug fixes, docs, new adapters, or feature ideas.

  1. Read CONTRIBUTING.md for setup and guidelines
  2. Check open issues or start a discussion
  3. Fork, branch, and submit a PR
git clone https://github.com/devqubit-labs/devqubit.git
cd devqubit
uv sync --all-packages
uv run pre-commit install
uv run pytest

Early project = high impact contributions. Jump in!

Community

  • 💬 Discussions — questions, ideas, feedback
  • 🐛 Issues — bug reports, feature requests
  • 📚 Docs — guides and API reference

License

Apache 2.0 — see LICENSE.

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

devqubit-0.1.9.tar.gz (896.3 kB view details)

Uploaded Source

Built Distribution

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

devqubit-0.1.9-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

Details for the file devqubit-0.1.9.tar.gz.

File metadata

  • Download URL: devqubit-0.1.9.tar.gz
  • Upload date:
  • Size: 896.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for devqubit-0.1.9.tar.gz
Algorithm Hash digest
SHA256 4f4d8dddba784155540098b3230ec2fd8ef1a1c5ec406b225d4fb69c4af14a4d
MD5 19aa5e1f896b3281e995ee08b931dd97
BLAKE2b-256 500a0b9857e3c8a542f2d86c044fad8dce81e1d5b5395eb5648286e372355cbb

See more details on using hashes here.

Provenance

The following attestation bundles were made for devqubit-0.1.9.tar.gz:

Publisher: release.yaml on devqubit-labs/devqubit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file devqubit-0.1.9-py3-none-any.whl.

File metadata

  • Download URL: devqubit-0.1.9-py3-none-any.whl
  • Upload date:
  • Size: 26.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for devqubit-0.1.9-py3-none-any.whl
Algorithm Hash digest
SHA256 016f51b6536bc5ef5ff69bb8200d377190aaf280b0bfb8c62bcd1157a510dc0a
MD5 9c03bd95da832361e3e8869f3b932c4a
BLAKE2b-256 63efb1ccd0a70389a5e616c3a62d685d23b24ffdb62a40778fc9416db33bc2e3

See more details on using hashes here.

Provenance

The following attestation bundles were made for devqubit-0.1.9-py3-none-any.whl:

Publisher: release.yaml on devqubit-labs/devqubit

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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