Home/SDKs/Amazon Braket
🟠

Amazon Braket

AWS-managed quantum computing service. Free local simulator, cloud simulators (SV1, DM1, TN1), and access to real QPUs from IonQ, Rigetti, and Oxford Quantum Circuits.

AWS ManagedLocal FreeCloud SimReal QPU

What is Amazon Braket?

Amazon Braket is a fully managed quantum computing service that lets you explore and experiment with quantum computers from multiple providers — all through a consistent Python SDK. The local simulator is completely free. Cloud simulators charge a small per-task fee. Real QPU shots are priced per-shot.

Local Simulator
Runs on your machine
Free Forever
Cloud Simulators
SV1, DM1, TN1
~$0.075/task + compute
Real QPU
IonQ, OQC hardware
$0.01–$0.90/shot

Installation & Setup

terminal
pip install amazon-braket-sdk # AWS credentials (needed for cloud features) # Option 1: AWS CLI aws configure # Option 2: Environment variables export AWS_DEFAULT_REGION=us-east-1 export AWS_ACCESS_KEY_ID=your_key export AWS_SECRET_ACCESS_KEY=your_secret

Free Local Simulator

The LocalSimulator is completely free, runs on your machine, and needs no AWS account.

braket_local.py
from braket.circuits import Circuit, FreeParameter from braket.devices import LocalSimulator # Free — no AWS credentials needed device = LocalSimulator() # Build a Bell state circuit circuit = Circuit() circuit.h(0) circuit.cnot(0, 1) circuit.probability() # Return outcome probabilities task = device.run(circuit, shots=0) # shots=0 for exact probabilities result = task.result() print(result.values) # [[0.5, 0, 0, 0.5]] # With sampling (shots) circuit2 = Circuit().h(0).cnot(0, 1) task2 = device.run(circuit2, shots=1000) counts = task2.result().measurement_counts print(counts) # {'00': ~500, '11': ~500}

Parametric Circuits

braket_parametric.py
from braket.circuits import Circuit, FreeParameter from braket.devices import LocalSimulator # FreeParameters for variational circuits theta = FreeParameter("theta") phi = FreeParameter("phi") circuit = Circuit() circuit.ry(0, theta) circuit.ry(1, phi) circuit.cnot(0, 1) circuit.expectation(observable=braket.Observable.Z() @ braket.Observable.Z(), target=[0, 1]) device = LocalSimulator() # Sweep parameters import numpy as np for t in np.linspace(0, 2 * np.pi, 20): task = device.run(circuit, shots=200, inputs={"theta": t, "phi": 0.5}) result = task.result() print(f"theta={t:.2f}: {result.values}")

Cloud Simulators (SV1, DM1, TN1)

braket_cloud_sim.py
from braket.aws import AwsDevice from braket.circuits import Circuit # SV1 — Statevector simulator (up to 34 qubits) sv1 = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/sv1") # DM1 — Density matrix with noise (up to 17 qubits) dm1 = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/dm1") # TN1 — Tensor network (up to 50 qubits, sparse circuits) tn1 = AwsDevice("arn:aws:braket:::device/quantum-simulator/amazon/tn1") circuit = Circuit().h(0).cnot(0, 1) # Note: cloud sims have per-task + compute costs (~$0.075/task) task = sv1.run( circuit, shots=1000, s3_destination_folder=("your-s3-bucket", "results/") ) print(task.result().measurement_counts)

Real QPU Hardware

braket_hardware.py
from braket.aws import AwsDevice from braket.circuits import Circuit # IonQ Aria (trapped-ion, ~$0.01/shot) ionq_device = AwsDevice( "arn:aws:braket:us-east-1::device/qpu/ionq/Aria-1" ) # Oxford Quantum Circuits (superconducting) oqc_device = AwsDevice( "arn:aws:braket:eu-west-2::device/qpu/oqc/Lucy" ) circuit = Circuit().h(0).cnot(0, 1) # Check device availability before submitting print(ionq_device.status) print(ionq_device.properties.paradigm.qubitCount) # Submit (costs apply per shot on real hardware) task = ionq_device.run(circuit, shots=50) print(task.result().measurement_counts)
💡

Also available via HLQuantum

Want to run the same circuit on multiple backends without rewriting your code? HLQuantum abstracts this SDK (and 5 others) behind a single unified API.

python
import hlquantum as hlq qc = hlq.Circuit(2) qc.h(0).cx(0, 1).measure_all() # One line to switch between any backend result = hlq.run(qc, shots=1024) # auto-detect result = hlq.run(qc, shots=1024, backend="braket") # explicit