Quantum experiment tracking library
Project description
devqubit
Local-first experiment tracking for quantum computing. Capture code + circuits + backend/device context + configuration so runs are reproducible, comparable, and easy to share.
Status: Alpha. APIs and bundle formats may evolve in
0.x.xreleases.
Documentation
📚 Read the Docs: https://devqubit.readthedocs.io
The documentation source lives in this repository under docs/, but the canonical, rendered docs are on Read the Docs.
Features
- Automatic circuit capture — QPY, OpenQASM 3, and native SDK formats
- SDK adapters — Qiskit, Qiskit Runtime, Amazon Braket, Cirq, PennyLane
- Content-addressable storage — deduplicated artifacts with SHA-256 digests
- Reproducibility fingerprints — detect changes in program, device, or configuration
- Run comparison — TVD analysis, drift detection
- CI/CD verification — verify runs against baselines in pipelines
- Portable bundles — export/import runs for collaboration
Installation
Requirements
- Python 3.11+ (tested on 3.11–3.13)
Install from PyPI
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]"
Install from source (recommended for development)
This repo is a uv workspace (monorepo). For a complete local dev environment:
git clone https://github.com/devqubit-labs/devqubit.git
cd devqubit
# Core dev (fast)
uv sync --all-packages
# Full dev (adapters + UI extras)
uv sync --all-packages --all-extras
Quick start
from devqubit import track
with track(project="my-experiment") as run:
# Parameters
run.log_param("shots", 1000)
run.log_param("backend", "xyz_backend")
# ... execute your circuit ...
# Metrics
run.log_metric("fidelity", 0.95)
run.log_metric("execution_time_ms", 1234.5)
# Tags
run.set_tag("backend_type", "simulator")
run.set_tag("experiment_phase", "calibration")
# JSON artifacts
run.log_json(name="counts", obj=counts, role="results")
print(f"Run ID: {run.run_id}")
SDK adapters
Adapters automatically capture circuits, results, and device information. Use run.wrap() to wrap your backend.
Qiskit example
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") as run:
backend = run.wrap(AerSimulator())
job = backend.run(qc, shots=1000)
counts = job.result().get_counts()
run.log_json(name="counts", obj=counts, role="results")
Adapters for Qiskit Runtime, Amazon Braket, Cirq, and PennyLane follow the same pattern.
CLI
devqubit list # List recent runs
devqubit show <run_id> # Show run details
devqubit diff <run_a> <run_b> # Compare two runs
devqubit verify <run_id> --project myproj # Verify against baseline
devqubit pack <run_id> -o experiment.zip # Export portable bundle
Web UI
devqubit ui
Starts a local web interface (default: http://127.0.0.1:8080) for browsing runs, viewing artifacts, and comparing experiments.
Configuration
export DEVQUBIT_HOME=~/.devqubit # Workspace directory
export DEVQUBIT_CAPTURE_GIT=true # Capture git info
export DEVQUBIT_CAPTURE_PIP=true # Capture installed packages
See the configuration docs in docs/guides/configuration.md.
Development and contribution
- Install uv: https://docs.astral.sh/uv/getting-started/installation/
- Create / sync the dev environment:
uv sync --all-packages --all-extras
- Install git hooks:
uv run pre-commit install
- Run checks and tests:
uv run pre-commit run --all-files uv run pytest
For full contributor guidance, see CONTRIBUTING.md.
License
Apache 2.0
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.3.tar.gz.
File metadata
- Download URL: devqubit-0.1.3.tar.gz
- Upload date:
- Size: 623.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5c4531fa5a2e1866061247e9c20dc06573bccfeff40dc7f4ddbdcf683e6d5ecd
|
|
| MD5 |
79e5691f3db497f3d9f74c5e3ee9607f
|
|
| BLAKE2b-256 |
b35097a5aa1aec270556a9041c08c2319198a2206cae86746e1b5bb3f38ce4cf
|
Provenance
The following attestation bundles were made for devqubit-0.1.3.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.3.tar.gz -
Subject digest:
5c4531fa5a2e1866061247e9c20dc06573bccfeff40dc7f4ddbdcf683e6d5ecd - Sigstore transparency entry: 813223584
- Sigstore integration time:
-
Permalink:
devqubit-labs/devqubit@d210fab20a195c02ace02133fcc1b36b60941634 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/devqubit-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@d210fab20a195c02ace02133fcc1b36b60941634 -
Trigger Event:
push
-
Statement type:
File details
Details for the file devqubit-0.1.3-py3-none-any.whl.
File metadata
- Download URL: devqubit-0.1.3-py3-none-any.whl
- Upload date:
- Size: 14.3 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 |
567c753eb82ba2b2fa3de196926caeda29ac91f0c191cc40938d07ffa5f96550
|
|
| MD5 |
514fb086773ae8d0a02c71a7a9a76fbd
|
|
| BLAKE2b-256 |
e0c45711598e2754c63c4c1e241785507860d4b64be572263c56c0a6aed524f1
|
Provenance
The following attestation bundles were made for devqubit-0.1.3-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.3-py3-none-any.whl -
Subject digest:
567c753eb82ba2b2fa3de196926caeda29ac91f0c191cc40938d07ffa5f96550 - Sigstore transparency entry: 813223592
- Sigstore integration time:
-
Permalink:
devqubit-labs/devqubit@d210fab20a195c02ace02133fcc1b36b60941634 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/devqubit-labs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yaml@d210fab20a195c02ace02133fcc1b36b60941634 -
Trigger Event:
push
-
Statement type: