Most organizations will not operate a single quantum target forever. They will use simulators, cloud QPUs, vendor-specific runtimes, reserved capacity, local test backends, and eventually internal hardware. A broker layer prevents every application from learning every provider API directly.
Provider platforms differ in execution modes, job objects, local development flows, reservations, billing, and target semantics. IBM Qiskit Runtime exposes execution modes such as jobs, sessions, and batches; Amazon Braket supports hybrid jobs and local debugging workflows; Azure Quantum has workspace, job, cost, and provider abstractions. A broker should hide accidental differences while preserving meaningful hardware differences. [R146]
View diagram source
flowchart TB
App[Application] --> Gateway[Quantum API gateway]
Gateway --> Broker[Broker and policy layer]
Broker --> IBM[IBM Runtime adapter]
Broker --> AWS[Amazon Braket adapter]
Broker --> Azure[Azure Quantum adapter]
Broker --> Lab[Internal lab adapter]
Broker --> Sim[Simulator adapter]Do not erase physics
A broker is not a portability fantasy. It should normalize control-plane mechanics, not pretend all backends are equivalent.
View diagram source
flowchart LR
Portable[Portable concerns] --> Auth[Auth]
Portable --> Metadata[Metadata]
Portable --> Cost[Cost controls]
Portable --> Submission[Submission]
Portable --> Results[Result retrieval]
Specific[Target-specific concerns] --> NativeGates[Native gates]
Specific --> Connectivity[Connectivity]
Specific --> Noise[Noise]
Specific --> Timing[Timing]
Specific --> Queue[Queue semantics]The broker should expose capabilities explicitly.
Capability negotiation
View diagram source
sequenceDiagram
participant App as Application
participant Broker as Broker
participant Catalog as Capability catalog
participant Provider as Provider adapter
App->>Broker: Request workload constraints
Broker->>Catalog: Find compatible targets
Catalog-->>Broker: Candidate capabilities
Broker->>Provider: Validate current availability
Provider-->>Broker: Availability and constraints
Broker-->>App: Ranked execution planCapability records should include:
- target type;
- supported circuit features;
- shot limits;
- dynamic-circuit support;
- reservation support;
- data-region constraints;
- cost model;
- queue behavior;
- calibration metadata availability.
Routing policy
View diagram source
flowchart TB
Workload[Workload] --> Classify[Classify]
Classify --> Need{Needs hardware?}
Need -- no --> Simulator[Simulator route]
Need -- yes --> Constraints[Apply constraints]
Constraints --> Rank[Rank targets]
Rank --> Policy{Policy allow?}
Policy -- yes --> Submit[Submit]
Policy -- no --> Review[Review or deny]Routing features:
| Feature | Purpose |
|---|---|
| simulator-first routing | avoid unnecessary QPU runs |
| region-aware routing | respect data and latency constraints |
| cost-aware routing | stay within budget |
| calibration-aware routing | match workload to device state |
| reservation-aware routing | exploit reserved windows |
Provider adapters
Adapters translate broker contracts into provider-specific calls.
View diagram source
flowchart LR
Contract[Broker contract] --> Adapter[Provider adapter]
Adapter --> Submit[Submit job]
Adapter --> Poll[Poll status]
Adapter --> Results[Fetch results]
Adapter --> Metadata[Fetch metadata]
Adapter --> Costs[Estimate or record cost]Adapter outputs should be normalized into a canonical job record.
canonical_job:
broker_job_id: qb-2026-04-19-001
provider: provider-name
provider_job_id: provider-specific-id
target_id: target-name
execution_mode: batch-or-session-or-job
status: completed
submitted_at: 2026-04-19T00:00:00Z
completed_at: 2026-04-19T00:12:00Z
result_uri: warehouse://results/qb-001Semantic versioning for the gateway
Changing the gateway contract can break downstream applications. Version it.
View diagram source
stateDiagram-v2
[*] --> Experimental
Experimental --> StableV1: adoption and tests
StableV1 --> StableV2: incompatible API change
StableV1 --> Deprecated: replacement exists
Deprecated --> Removed: migration window ends
StableV2 --> DeprecatedThe gateway should publish:
- API version;
- capability-schema version;
- result-schema version;
- policy-bundle version;
- deprecation windows.
Cross-cloud failover
Failover is constrained by hardware semantics. The broker must distinguish equivalent fallback, degraded fallback, and no fallback.
View diagram source
flowchart LR
Primary[Primary target] --> Failure{Failure}
Failure -- transient API --> Retry[Retry same target]
Failure -- target unavailable --> Fallback{Fallback class}
Fallback -- equivalent --> Alternate[Alternate QPU]
Fallback -- degraded --> Degraded[Run with changed claim]
Fallback -- none --> Hold[Hold workload]A degraded fallback must modify the claim label. It is invalid to route from hardware to simulator and preserve a hardware-performance claim.
Broker observability
View diagram source
flowchart TB
Broker[Broker] --> Metrics[Metrics]
Broker --> Traces[Traces]
Broker --> Logs[Logs]
Metrics --> MTTR[Routing MTTR]
Metrics --> Cost[Cost per accepted job]
Metrics --> Waste[Invalid route rate]
Traces --> Debug[Cross-provider debugging]
Logs --> Audit[Audit trail]Key metrics:
- route decision latency;
- target rejection reasons;
- provider failure rate;
- fallback rate;
- cost per accepted job;
- policy-denial rate;
- stale capability count.
Operating rule
Build a broker to standardize operational contracts, not to hide the fact that different quantum targets are scientifically different machines.
Additional technical sources: [R232].