Quantum experiment tracking library
Project description
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.xreleases.
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
Browse runs, view artifacts, compare experiments, and manage baselines.
Contributing
We welcome contributions of all kinds — bug fixes, docs, new adapters, or feature ideas.
- Read CONTRIBUTING.md for setup and guidelines
- Check open issues or start a discussion
- 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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5afd31e91542abf5239210627a00e220dc501a6c2eac720ac94bdf089e701282
|
|
| MD5 |
fa08111e3f974725c2a22f62202bb40d
|
|
| BLAKE2b-256 |
5eb26315ad7b8c46ab03340b5be0a6f0f5f9305ec69c05bf47bb96699f72a659
|
Provenance
The following attestation bundles were made for devqubit-0.1.10.tar.gz:
Publisher:
release.yaml on devqubit-labs/devqubit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devqubit-0.1.10.tar.gz -
Subject digest:
5afd31e91542abf5239210627a00e220dc501a6c2eac720ac94bdf089e701282 - Sigstore transparency entry: 872179340
- Sigstore integration time:
-
Permalink:
devqubit-labs/devqubit@34d47dfb9fbe5af82ad9f413e6d75b4b0cfed2b1 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/devqubit-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@34d47dfb9fbe5af82ad9f413e6d75b4b0cfed2b1 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4a1ddcaa8d3a054151916d849f662047978feecfdc3ebcb4593e0df943265e9e
|
|
| MD5 |
64ec2f5e93ab736cf8e82b77b21550a4
|
|
| BLAKE2b-256 |
ef06b8726aa075bc3698c85f485155dffd16bf210b2b44df41b9f0ff7244933b
|
Provenance
The following attestation bundles were made for devqubit-0.1.10-py3-none-any.whl:
Publisher:
release.yaml on devqubit-labs/devqubit
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
devqubit-0.1.10-py3-none-any.whl -
Subject digest:
4a1ddcaa8d3a054151916d849f662047978feecfdc3ebcb4593e0df943265e9e - Sigstore transparency entry: 872179386
- Sigstore integration time:
-
Permalink:
devqubit-labs/devqubit@34d47dfb9fbe5af82ad9f413e6d75b4b0cfed2b1 -
Branch / Tag:
refs/tags/v0.1.10 - Owner: https://github.com/devqubit-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@34d47dfb9fbe5af82ad9f413e6d75b4b0cfed2b1 -
Trigger Event:
push
-
Statement type: