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.10.tar.gz (1.6 MB 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.10-py3-none-any.whl (26.2 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for devqubit-0.1.10.tar.gz
Algorithm Hash digest
SHA256 5afd31e91542abf5239210627a00e220dc501a6c2eac720ac94bdf089e701282
MD5 fa08111e3f974725c2a22f62202bb40d
BLAKE2b-256 5eb26315ad7b8c46ab03340b5be0a6f0f5f9305ec69c05bf47bb96699f72a659

See more details on using hashes here.

Provenance

The following attestation bundles were made for devqubit-0.1.10.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.10-py3-none-any.whl.

File metadata

  • Download URL: devqubit-0.1.10-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.10-py3-none-any.whl
Algorithm Hash digest
SHA256 4a1ddcaa8d3a054151916d849f662047978feecfdc3ebcb4593e0df943265e9e
MD5 64ec2f5e93ab736cf8e82b77b21550a4
BLAKE2b-256 ef06b8726aa075bc3698c85f485155dffd16bf210b2b44df41b9f0ff7244933b

See more details on using hashes here.

Provenance

The following attestation bundles were made for devqubit-0.1.10-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