A self-managed provider uses your own account with a quantum vendor or cloud: an IonQ API key, an AWS account for Amazon Braket, an IBM Quantum token, and so on. The qBraid SDK is only the client library. Your jobs go straight to the vendor, the vendor bills you, and qBraid never sees them.

Don’t have your own vendor account? You probably want Run on qBraid instead. One qBraid API key reaches every device in the qBraid catalog, with no vendor account, and it’s how most people use the qBraid SDK.

When self-managed makes sense

  • You already have a contract, credits, or a reservation with a vendor.
  • You need a device qBraid doesn’t run jobs on. IBM Quantum is the main one.
  • Your organization requires jobs to run in its own cloud account.

How the two compare

Run on qBraidSelf-managed
CredentialsOne qBraid API keyYour own credentials for each vendor
BillingqBraid creditsThe vendor’s own billing
Job historyYour qBraid Quantum JobsThe vendor’s console only
Installpip install qbraidpip install 'qbraid[<extra>]', listed below
ProviderQbraidProviderThe vendor’s provider class, listed below

Devices with openquantum: IDs are the one exception on the qBraid side. They run through qBraid but spend credits from your linked Open Quantum account.

Providers

VendorProvider classInstallAlso on qBraid
Amazon BraketBraketProviderpip install 'qbraid[braket]'Yes
AQTAQTProviderpip install 'qbraid[aqt]'Yes
Azure QuantumAzureQuantumProviderpip install 'qbraid[azure]'
IBM QuantumQiskitRuntimeProviderpip install 'qbraid[qiskit]'
IonQIonQProviderpip install 'qbraid[ionq]'Yes
Open QuantumOpenQuantumProviderpip install qbraidYes
OQCOQCProviderpip install 'qbraid[oqc]'
Origin QuantumOriginProviderpip install 'qbraid[origin]'
PasqalPasqalProviderpip install 'qbraid[pasqal]'
QPerfectQPerfectProviderpip install 'qbraid[qperfect]'
QuantinuumQuantinuumProviderpip install 'qbraid[quantinuum]'
QUDORAQudoraProviderpip install qbraid
RigettiRigettiProviderpip install 'qbraid[rigetti]'Yes

Every provider class runs on the same qBraid Runtime interface, so code written for one, such as provider.get_device(...) and device.run(...), carries over to another, including QbraidProvider.