One API for simulating quantum circuits with any method: statevector, MPS, stabilizer, Pauli propagation, density matrix and more. Runs on a laptop CPU, NVIDIA GPUs, or an MPI cluster.
Write a circuit once, then change one config field to switch from a 30-qubit statevector to a 100-qubit matrix product state, or from CPU to GPU. Already using Qiskit or PennyLane? Change one import and keep your code.
pip install qoro-maestroimport maestro
from maestro.circuits import QuantumCircuit
qc = QuantumCircuit()
qc.h(0)
qc.cx(0, 1)
qc.measure_all()
result = qc.execute(shots=1000)
print(result["counts"]) # about {"00": 500, "11": 500}The default is a CPU statevector. To run the same circuit with another method, pass a SimulatorConfig:
config = maestro.SimulatorConfig(simulation_type=maestro.SimulationType.MatrixProductState)
result = qc.execute(shots=1000, config=config)Requires Python 3.10+. Pre-built wheels are available for Linux, macOS and Windows.
Qiskit: qiskit-maestro provides a backend, Sampler and Estimator you can use in place of Aer:
pip install qiskit-maestrofrom qiskit_maestro import MaestroBackend, MaestroSampler, MaestroEstimator
backend = MaestroBackend() # was AerSimulator()
sampler = MaestroSampler() # was StatevectorSampler()
estimator = MaestroEstimator() # was StatevectorEstimator()On 120–200 qubit MPS workloads, MaestroEstimator is up to 7× faster than Aer's EstimatorV2.
PennyLane: pennylane-maestro adds a Maestro device, including adjoint gradients for variational algorithms:
pip install pennylane-maestroimport pennylane as qml
dev = qml.device("maestro.qubit", wires=2) # was "default.qubit"Maestro can also load OpenQASM 2.0 programs directly.
- Many simulation methods behind one API: statevector, density matrix, matrix product state (MPS), matrix product operator (MPO), tensor network, stabilizer, extended stabilizer, Pauli propagation and path integral. See Choosing a simulation method for which method suits which circuits.
- GPU and cluster scaling: NVIDIA GPU backends built on cuQuantum, a statevector split across the GPUs in one node, or across nodes with MPI.
- Realistic noise: Pauli and coherent errors, T1/T2 relaxation, crosstalk, readout errors and time-correlated noise. Noise runs as Monte Carlo trajectories, or as exact channels on density-matrix and MPO backends.
- Beyond sampling: expectation values of Pauli observables, statevectors and probabilities, mid-circuit measurement with classical control, and Stim/Sinter integration for error-correction studies.
- C/C++ and JSON interfaces: link
libmaestrodirectly, or send batch jobs through the native JSON request API. Neither needs Python.
The pip package runs on the CPU. GPU backends come from a separate plugin, which you can access in three ways:
- Qoro cloud: run on our GPUs with free starter credits.
- Free academic licence: run the plugin on your own hardware.
- Enterprise site licence: run it on your organization's infrastructure.
See Get GPU access for details. Once the plugin is installed, select the GPU in the config:
config = maestro.SimulatorConfig(
simulator_type=maestro.SimulatorType.Gpu,
simulation_type=maestro.SimulationType.Statevector,
)
result = qc.execute(shots=1000, config=config)| Backend | Methods |
|---|---|
QCSim (CPU, default) |
All methods listed above |
Gpu |
Statevector, density matrix, MPS, MPO, tensor network, Pauli propagation |
DistributedGpu |
Statevector split across the GPUs in one node (Linux) |
DistributedMpiGpu |
Statevector split across MPI ranks and nodes (Linux, CUDA-aware MPI) |
Optional Qiskit Aer and QuEST backends are also available. See Scaling: multi-GPU and MPI for a complete MPI example.
| Repository | What it is | Install |
|---|---|---|
| qiskit-maestro | Qiskit provider: MaestroBackend, MaestroSampler and MaestroEstimator |
pip install qiskit-maestro |
| pennylane-maestro | PennyLane device maestro.qubit, with adjoint gradients |
pip install pennylane-maestro |
| maestro-demos | Example simulations written with Maestro | — |
Full documentation: qoroquantum.github.io/maestro
| Get started | First circuit · Coming from Qiskit Aer · PennyLane · GPU access |
| Guides | Building circuits · Choosing a method · Sampling and shots · Expectation values · Noise and QEC · Scaling |
| Reference | Python API · C++ API · Native JSON API · Benchmarks |
| C++ and source builds | Install from source · C++ tutorial |
| More | Examples · Changelog · Contributing |
If you use Maestro in your research, please cite:
@article{bertomeu2025maestro,
title={Maestro: Intelligent Execution for Quantum Circuit Simulation},
author={Bertomeu, Oriol and Ghayas, Hamzah and Roman, Adrian and DiAdamo, Stephen},
organization={Qoro Quantum},
year={2025}
}Maestro is licensed under GPL-3.0. The GPU plugin is licensed separately; see Get GPU access.