devqubit
Local-first experiment tracking for quantum computing.
Capture circuits, backend state, and configuration automatically — runs are reproducible, comparable, and easy to share. Access your data via Python API, CLI, or Web UI.
[!WARNING] Status: Alpha — devqubit APIs may evolve in
0.xreleases. Users should expect frequent changes that are likely to be incompatible with previously published versions.
Why devqubit?
General-purpose experiment trackers (MLflow, W&B, neptune.ai) work well for classical ML, but quantum workloads need structure they don't provide out of the box: what actually executed (program + compilation), where it ran (backend/device), and how it ran (runtime options, calibration state).
| Challenge | MLflow / W&B / neptune.ai | 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 TVD, structural diff, drift detection |
| Noise-aware verification | Requires custom code | Configurable policies with noise tolerance |
| Portable sharing | Artifact/version workflows | Self-contained bundles (manifest + SHA-256 digests) |
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, CUDA-Q
- 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 detection
- CI/CD verification — baselines with configurable noise-aware policies
- Portable bundles — export/import runs as self-contained ZIPs
- Web UI — browse runs, view artifacts, compare experiments
Documentation
📚 https://devqubit.readthedocs.io
Installation
Python 3.11+ required.
pip install devqubit
Install with an SDK adapter:
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[cudaq]" # NVIDIA CUDA-Q
pip install "devqubit[all]" # all adapters
Optional extras:
pip install "devqubit[ui]" # local web 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 the circuit, 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.structural_match) # True — same circuit structure
print(result.tvd) # 0.023
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="bell-state",
policy=VerifyPolicy(tvd_max=0.05, noise_factor=1.2),
)
assert result.ok
# With JUnit output for CI pipelines
devqubit verify nightly-run --project bell-state --junit results.xml
CLI
devqubit list # list runs
devqubit show <run> --project <proj> # run details
devqubit diff <a> <b> --project <proj> # compare runs
devqubit baseline set <proj> <run> # set baseline
devqubit verify <run> --project <proj> # verify against baseline
devqubit pack <run> -o bundle.zip # export bundle
devqubit ui # launch web UI
See the CLI reference for all commands.
Web UI
pip install "devqubit[ui]"
devqubit ui
# → http://127.0.0.1:8080
Browse runs, view artifacts, compare experiments, and manage baselines.
Architecture
devqubit is a monorepo with multiple packages:
| Package | Description |
|---|---|
devqubit |
Public Python API (thin facade) |
devqubit-engine |
Core logic: tracking, storage, comparison, CLI |
devqubit-ui |
Web UI (optional) |
devqubit-qiskit |
Qiskit adapter |
devqubit-qiskit-runtime |
Qiskit Runtime adapter |
devqubit-braket |
Amazon Braket adapter |
devqubit-cirq |
Google Cirq adapter |
devqubit-pennylane |
PennyLane adapter |
devqubit-cudaq |
NVIDIA CUDA-Q adapter |
Users install devqubit (plus optional extras). All public API lives in the devqubit namespace; engine internals are not part of the public API.
Contributing
We welcome contributions — 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.
Metadata
Release files for devqubit 0.1.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| devqubit-0.1.12.tar.gz | 1.2 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| devqubit-0.1.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.2 MB
Release files / devqubit-0.1.12.tar.gz
| Download URL | devqubit-0.1.12.tar.gz |
|---|---|
| Size | 1.2 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f9b7ba5d019f16ee6dc00581d296fb3b2b114215fc3de348c92c8f6a78b34b03
|
|
BLAKE2b-256 checksum How to use checksums |
3b08d78ccb3446a487773957830c800b63d4ca2e4252dea85fa5fceab5710b52
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.
Transparency logRelease files / devqubit-0.1.12-py3-none-any.whl
| Download URL | devqubit-0.1.12-py3-none-any.whl |
|---|---|
| Size | 27.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e80ab847108b63c70be5cf44655db61d1692e4926639160ae031e1db2d89a48c
|
|
BLAKE2b-256 checksum How to use checksums |
26e463f5c3538c56d9a678a59619aec8385f8814a7b7b9d52de68ca46a8bfdb8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Feb 13, 2026.
Transparency log