Bloq
Quantum workload orchestration — one SDK, every backend.
Bloq is a Python SDK by Bloq Quantum that lets you schedule and run quantum circuits across simulators, hardware providers, and the Bloq Quantum managed platform — from a single, unified interface.
Status:
0.4.0, pre-1.0. The public surface is frozen within a minor and takes bug-fix patches; breaking changes are allowed at the next minor until1.0.estimate_cost/set_budget/spend_summaryare reserved signatures that currently raiseBloqCloudRequired.
What it does
Bloq sits between your circuit-authoring SDK of choice (Qiskit, Cirq, Braket, PennyLane, pytket, pyquil, QIR, raw OpenQASM, …) and the backend where the circuit actually runs (simulators or real quantum hardware). You write your circuit in whichever framework you prefer; Bloq handles transpilation, credential management, job dispatch, and result retrieval.
There are two ways to run a circuit through Bloq:
- Direct providers — use your own API keys / credentials from IBM, AWS Braket, IonQ, Rigetti, and others. Bloq routes the job to the provider on your behalf.
- Bloq Quantum platform — use a single Bloq API key and spend credits on any provider integrated into the Bloq platform. No per-provider accounts required.
Why Bloq?
| Without Bloq | With Bloq |
|---|---|
| Learn each provider's SDK separately | Write once, run anywhere |
| Manage credentials in scattered configs | Centralised credential store |
| Manually convert circuits between formats | Automatic transpilation via OpenQASM and other IRs |
| No unified job tracking | Single scheduler with status and results |
| Pay each provider individually | Use Bloq credits via the managed platform |
Architecture (planned)
┌────────────────────────────────────────────────┐
│ BloqClient │
│ (submit, list_backends, credentials, config) │
├────────────────────────────────────────────────┤
│ Provider Registry │
│ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────────────┐ │
│ │ IBM │ │ AWS │ │IonQ │ │ Bloq Cloud │ │
│ └──┬───┘ └──┬───┘ └──┬───┘ └──────┬───────┘ │
├─────┼────────┼────────┼────────────┼───────────┤
│ Circuit Transpiler / IR │
│ (OpenQASM + adapters) │
├─────┼────────┼────────┼────────────┼───────────┤
│ Job Scheduler │
│ (queue, dispatch, monitor, results) │
└────────────────────────────────────────────────┘
Installation
pip install bloq
Bloq does not require any quantum framework to be installed. Use whichever framework you already have — Qiskit, Cirq, Braket, PennyLane, pytket, pyquil, pyqir, or none — and Bloq will work alongside it.
Optional convenience extras
If you're starting fresh and want Bloq to pull in a framework pinned to a version range we've tested against, you can use an extra:
pip install "bloq[qiskit]" # Bloq + qiskit >=2.0,<3.0
pip install "bloq[aer]" # Bloq + qiskit + qiskit-aer >=0.17
pip install "bloq[ibm]" # Bloq + qiskit + qiskit-ibm-runtime >=0.45
pip install "bloq[cirq]" # Bloq + cirq-core >=1.5
pip install "bloq[braket]" # Bloq + amazon-braket-sdk >=1.100
pip install "bloq[pennylane]" # Bloq + pennylane >=0.40
pip install "bloq[pytket]" # Bloq + pytket >=2.0,<3.0
pip install "bloq[qir]" # Bloq + pyqir >=0.12,<0.13
pip install "bloq[quantinuum]" # Bloq + qnexus >=0.46,<0.48
pip install "bloq[iqm]" # Bloq + iqm-client >=34.0,<36.0
pip install "bloq[all-providers]" # Bloq + all of the above
To combine extras, comma-separate them inside one bracket (repeating the
package as "bloq[qiskit]" "bloq[cirq]" is unnecessary, and older pip rejects
it with "Double requirement given"):
pip install "bloq[qiskit,cirq,aer]"
Keep the quotes: in zsh the brackets are a glob pattern and an unquoted
bloq[...] fails with no matches found. Installing from a git reference
still works, and extras attach to it the same way, e.g.
pip install "bloq[qiskit,cirq] @ git+https://github.com/bloq-quantum/bloq.git@main".
Extras are purely a convenience. If you already have a framework installed —
especially one pinned by your team or another dependency — stick with plain
pip install bloq and Bloq will use whatever version you have, as long as it
falls inside our supported range.
Tested matrix (August 2026)
| Package | Tested | Supported range |
|---|---|---|
qiskit |
2.4.x | >=2.0,<3.0 |
qiskit-aer |
0.17.x | >=0.17,<1.0 |
qiskit-ibm-runtime |
0.48.x | >=0.45,<1.0 |
cirq-core |
1.7.x | >=1.5,<2.0 |
amazon-braket-sdk |
1.125.x | >=1.100,<2.0 |
pennylane |
0.45.x | >=0.40,<1.0 |
pytket |
2.18.x | >=2.0,<3.0 |
pyqir |
0.12.x | >=0.12,<0.13 |
qnexus |
0.47.x | >=0.46,<0.48 — 0.48 is excluded; it imports selene_core without declaring it |
iqm-client |
35.0.x | >=34.0,<36.0 |
httpx |
0.28.x | >=0.27 |
Qiskit 1.x is not supported — Bloq targets the Qiskit 2.x API. Versions
outside the supported range raise UnsupportedProviderVersion at first use
with a clear remediation message. BloqClient.version_report() returns the
actually installed versions for easy copy-paste into bug reports.
Supported providers
Gate-model hardware and cloud services:
| Provider | Extra | Notes |
|---|---|---|
| IBM Quantum | bloq[ibm] |
via qiskit-ibm-runtime |
| Amazon Braket | bloq[braket] |
cloud QPUs and the local simulator |
| IonQ | bloq[ionq] |
direct, over api.ionq.co/v0.4 (no extra deps) |
| Azure Quantum | bloq[azure] |
|
| Quantinuum | bloq[quantinuum] |
H-series via Nexus, with emulators and syntax checkers |
| IQM | bloq[iqm] |
Crystal + Star, via IQM Resonance |
| Rigetti | bloq[rigetti] |
needs a local quilc; Python 3.11 to 3.12 only |
| Bloq Quantum Cloud | (core) | backend="bloq-cloud:<device>", one API key across the above |
Neutral-atom (analog) hardware:
| Provider | Extra | Notes |
|---|---|---|
| PASQAL | bloq[pasqal] |
FRESNEL plus the EMU_* cloud emulators |
| QuEra | bloq[quera] |
Aquila over Braket AHS, plus the Bloqade emulator |
Local simulators:
| Simulator | Extra | Notes |
|---|---|---|
| Qiskit Aer | bloq[aer] / bloq[aer-gpu] |
|
| PennyLane Lightning | bloq[pennylane] |
lightning-gpu, lightning-kokkos extras for accelerators |
| Qulacs | bloq[qulacs] / bloq[qulacs-gpu] |
|
| stim | bloq[stim] |
Clifford only, at million-qubit scale |
| cuQuantum | bloq[cuquantum] |
tensor-network / MPS, CUDA only |
| Quantum Rings | bloq[quantumrings] |
high-width statevector; needs a free activation token |
Circuit-authoring frameworks you can hand to Bloq directly: Qiskit, Cirq, Braket, PennyLane, pytket, pyquil, QIR, Pulser, Bloqade, and raw OpenQASM 3.
Development
git clone https://github.com/bloq-quantum/bloq.git
cd bloq
python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev,docs]" # installs Bloq with dev tooling
pre-commit install
Common tasks
pytest # run the test suite
ruff check src/ tests/ # lint
ruff format src/ tests/ # format
mypy src/ # type check
python -m build # build sdist and wheel
Project layout
bloq/
├── src/bloq/ # Main package (to be populated)
├── tests/ # Pytest test suite
├── .github/workflows/ # CI and PyPI publish workflows
├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
└── pyproject.toml # Build, lint, type-check, and test config
Contributing
Contributions are welcome. See CONTRIBUTING.md for setup, workflow, and pull-request guidelines.
License
Licensed under the Apache License 2.0.
Built by Bloq Quantum.
Metadata
Release files for bloq 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| bloq-0.4.0.tar.gz | 580.0 kB | With provenance | Details for bloq-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| bloq-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for bloq-0.4.0-py3-none-any.whl |
Total release size: 1.0 MB
Release files / bloq-0.4.0.tar.gz
| Download URL | bloq-0.4.0.tar.gz |
|---|---|
| Size | 580.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cc15c3aea4cd2555cff5c3c88bbcafeed672d001eea1319109d95b72d01499d7
|
|
BLAKE2b-256 checksum How to use checksums |
3520f64099ff4e8616ec71b848cf634bf34816f7b20b7d3e6a95ae287197e4f6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 5, 2026.
Transparency logRelease files / bloq-0.4.0-py3-none-any.whl
| Download URL | bloq-0.4.0-py3-none-any.whl |
|---|---|
| Size | 441.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
32da9b94c26500bc9395c728833f047867fa32beaa80a384b99ecd3fba132945
|
|
BLAKE2b-256 checksum How to use checksums |
b75760fae453d7135fac1b9ccc6fc69b5fd729bc6d04ed7f7659482525fce28a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
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 Oct 5, 2026.
Transparency logSecurity for bloq 0.4.0
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for bloq-0.4.0.tar.gz
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 Oct 5, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.