"Don't be sorry HAL, I am sure you can do that"
— Dave
Orchestration Interface Specification for Quantum-HPC Workflows. A formal contract for how quantum backends plug into compilation and orchestration pipelines running on HPC clusters.
Above device interfaces, below applications. The missing middleware.
First-class SLURM and PBS scheduler integration
Consumes device interfaces, makes them composable and production-ready
Device interfaces tell you how to talk to hardware. But who orchestrates the work?
Quantum hardware is getting standardized device interfaces — QDMI, QIR, OpenQASM 3. That's necessary, but not sufficient. What's missing is the layer above: a formal contract for how quantum backends plug into compilation and orchestration pipelines running on HPC clusters. Today, every integration between a quantum compiler and a new backend is bespoke. Every SLURM workflow that dispatches hybrid quantum-classical jobs is hand-wired. Every multi-backend strategy is reimplemented from scratch.
| Layer | Concern | Example |
|---|---|---|
| Device Interface (QDMI, vendor APIs) | "Query this QPU's coupling map" | QDMI_device_query_device_property() |
| HAL Contract (this spec) | "Dispatch this compiled circuit to the best available backend via SLURM" | backend.submit(circuit, config).await |
| Application | "Run VQE to find ground state energy" | vqe.optimize(hamiltonian) |
A formal, versioned interface specification defined as Rust async traits, designed for HPC-native deployment.
The orchestration lifecycle. Every backend adapter must implement these async operations for concurrent multi-backend dispatch.
submit() — Submit compiled circuits for executionstatus() — Query job status within orchestration contextresult() — Retrieve results with standardized outputcancel() — Cancel jobs, including SLURM cleanupRuntime introspection for intelligent orchestration decisions — routing, transpilation, and queue management.
capabilities() — Topology, gate set, qubit countavailability() — Backend status, queue depth, wait timevalidate() — Pre-submission circuit validationAdvanced features that backends may expose via capability-negotiation. The orchestrator queries and adapts.
batch — Parameter sweep executionsessions — Iterative algorithms (VQE, QAOA)calibration — Hardware-aware compilation datapulse — Pulse-level control passthroughContract versions are immutable once released. New capabilities are added through extensions, never by breaking existing interfaces.
The smallest viable interface for interoperability. If something can be an extension, it is.
Rust async traits throughout. Quantum job submission is inherently asynchronous — the contract reflects this.
SLURM and PBS are first-class citizens. The contract includes job lifecycle hooks for HPC scheduler integration.
QDMI-compliant backends are a primary adapter target. The reference implementation includes a QDMI adapter mapping C-level device interfaces to async orchestration traits.
OpenQASM 3 as mandatory circuit format. QIR optional. Aligned with CEN-CENELEC TR 18202:2025 architecture layers.
HAL Contract does not duplicate or compete with existing standards. It occupies the orchestration layer that connects them into production workflows.
| Standard | Scope | Relationship |
|---|---|---|
| QDMI (MQSS/TUM) | C-level device management and property queries | HAL Contract consumes QDMI — QDMI backends are a first-class adapter target |
| OpenQASM 3 | Circuit description language | Required as the mandatory circuit format |
| QIR | Quantum intermediate representation | Supported as optional circuit format |
| CEN-CENELEC TR 18202:2025 | Standardized quantum computing architecture | HAL Contract aligns with the compilation/orchestration layer |
The same code runs on any HAL-compliant backend.
use arvak_hal::{Backend, Capabilities}; use arvak_ir::Circuit; #[tokio::main] async fn main() -> Result<()> { // Create a Bell state circuit let circuit = Circuit::bell(); // Run on simulator locally let sim = SimulatorBackend::new(); let result = run(&sim, &circuit).await?; // Same code, different backend - IQM hardware let iqm = IqmBackend::from_env()?; let result = run(&iqm, &circuit).await?; // Or IBM Quantum let ibm = IbmBackend::from_env()?; let result = run(&ibm, &circuit).await?; Ok(()) } // Generic function works with ANY backend async fn run(backend: &impl Backend, circuit: &Circuit) -> Result<Counts> { let caps = backend.capabilities(); println!("Running on {} ({} qubits)", caps.name, caps.num_qubits); let job_id = backend.submit(circuit, 1000).await?; let result = backend.wait(&job_id).await?; Ok(result.counts) }
import arvak from qiskit import QuantumCircuit # Create a circuit in Qiskit qc = QuantumCircuit(2, 2) qc.h(0) qc.cx(0, 1) qc.measure_all() # Use Arvak as a Qiskit backend from arvak.integrations.qiskit import ArvakProvider provider = ArvakProvider() backend = provider.get_backend('sim') job = backend.run(qc, shots=1000) result = job.result() print(result.get_counts()) # Convert between frameworks seamlessly qiskit_int = arvak.get_integration('qiskit') arvak_circuit = qiskit_int.to_arvak(qc) # Works with Cirq, Qrisp, PennyLane too print(arvak.list_integrations()) # {'qiskit': True, 'qrisp': True, 'cirq': True, 'pennylane': True}
/// The core Backend trait — HAL Contract v2 #[async_trait] pub trait Backend: Send + Sync { /// Get the name of this backend fn name(&self) -> &str; /// Capabilities — sync, infallible, cached at construction fn capabilities(&self) -> &Capabilities; /// Availability — queue depth, wait time, status async fn availability(&self) -> HalResult<BackendAvailability>; /// Validate circuit against backend constraints async fn validate(&self, circuit: &Circuit) -> HalResult<ValidationResult>; /// Submit a circuit for execution async fn submit(&self, circuit: &Circuit, shots: u32) -> HalResult<JobId>; /// Get the status of a job async fn status(&self, job_id: &JobId) -> HalResult<JobStatus>; /// Get the result of a completed job async fn result(&self, job_id: &JobId) -> HalResult<ExecutionResult>; /// Cancel a running job async fn cancel(&self, job_id: &JobId) -> HalResult<()>; /// Wait for a job to complete (provided default implementation) async fn wait(&self, job_id: &JobId) -> HalResult<ExecutionResult>; }
Arvak is the reference implementation of the HAL Contract — a Rust-native quantum compilation and orchestration platform for HPC environments.
A high-performance quantum computing framework with native SLURM integration, backend adapters for IQM, IBM Quantum, AWS Braket, Scaleway, QDMI, and NVIDIA CUDA-Q, and PennyLane compatibility. A complementary platform, not a replacement.
Arvak integrates deeply with major quantum frameworks. A complementary platform, not a replacement.
Bidirectional circuit conversion, ArvakProvider as a Qiskit BackendV2, and OpenQASM 3.0 interchange.
pip install arvak[qiskit]
High-level quantum types, automatic uncomputation support, and ArvakBackendClient for Qrisp sessions.
pip install arvak[qrisp]
LineQubit and GridQubit support, ArvakSampler and ArvakEngine for Cirq execution interfaces.
pip install arvak[cirq]
ArvakDevice for PennyLane's Device interface, QNode support, and automatic differentiation workflows.
pip install arvak[pennylane]
Ordered by integration priority. Seven adapters shipping today, five more planned.
| Status | Provider | Technology | Qubits | Region |
|---|---|---|---|---|
| Live | IBM Quantum | Superconducting | Eagle 127q, Heron 156q | US |
| Live | IQM | Superconducting | Garnet 20q, Emerald 54q, Sirius 16q | Finland / Germany |
| Live | AWS Braket | Multi-vendor | Rigetti 84q, IonQ 36q, simulators | US / EU |
| Live | NVIDIA CUDA-Q | GPU Simulation | cuStateVec, TensorNet | — |
| Live | QDMI (MQSS) | HPC Standard FFI | Any QDMI-compliant device | Germany (LRZ) |
| Q1 ’26 | Quantinuum | Trapped Ion | Helios 98q · 99.92% 2Q fidelity | UK |
| Q2 ’26 | AQT | Trapped Ion | PINE 50q · rack-mountable | Austria |
| Q2 ’26 | planqc | Neutral Atom | 1,000q target · LRZ Garching | Germany |
| Q3 ’26 | PASQAL | Neutral Atom | 250q · EuroHPC Italy | France |
| Q4 ’26 | Quandela | Photonic | Canopus 24q · EuroQCS-France | France |
HAL Contract is open source under Apache 2.0. The specification evolves based on real-world needs.
Add your quantum backend to the HAL Contract ecosystem. Implement the async traits and get production-ready orchestration for free.
Shape the specification. Whether you're a hardware vendor, HPC operator, or quantum researcher — your deployment experience matters.
Use HAL Contract in your quantum-HPC workflow. Write portable algorithms, benchmark across backends, deploy on clusters.
The HAL Contract is an open specification. We welcome feedback, contributions, and collaboration from the quantum computing community.