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

Uploaded Python 3

File details

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

File metadata

  • Download URL: devqubit-0.1.11.tar.gz
  • Upload date:
  • Size: 1.0 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.11.tar.gz
Algorithm Hash digest
SHA256 a483a85ed8eacfe6ccd2511eb0deebc799f8da4692a7b2ea024ebd3856617732
MD5 b02dc5bc8fc17dd72befdd0f38ae69df
BLAKE2b-256 78eae605098dc62f231c67465559b2101c28e1f53614e4c60662bb43a3ec1bba

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: devqubit-0.1.11-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.11-py3-none-any.whl
Algorithm Hash digest
SHA256 1a61a10a46495e1f74aec1fe5816ec86cc101c6b1ec64e82fc2ee559af4613c9
MD5 ae6f22a18c9f2c6173b30735188882c0
BLAKE2b-256 bf0522a80519b762096df7405f42ca275bbdca9702aba8097e71bde4eae17117

See more details on using hashes here.

Provenance

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