The HAL Contract

"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.

Orchestration Layer

Above device interfaces, below applications. The missing middleware.

HPC-Native

First-class SLURM and PBS scheduler integration

🔗
QDMI-Compatible

Consumes device interfaces, makes them composable and production-ready

The Gap

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)

Three-Layer Architecture

A formal, versioned interface specification defined as Rust async traits, designed for HPC-native deployment.

Required

Layer 1: Core

The orchestration lifecycle. Every backend adapter must implement these async operations for concurrent multi-backend dispatch.

  • submit() — Submit compiled circuits for execution
  • status() — Query job status within orchestration context
  • result() — Retrieve results with standardized output
  • cancel() — Cancel jobs, including SLURM cleanup
Required

Layer 2: Capabilities

Runtime introspection for intelligent orchestration decisions — routing, transpilation, and queue management.

  • capabilities() — Topology, gate set, qubit count
  • availability() — Backend status, queue depth, wait time
  • validate() — Pre-submission circuit validation
Optional

Layer 3: Extensions

Advanced features that backends may expose via capability-negotiation. The orchestrator queries and adapts.

  • batch — Parameter sweep execution
  • sessions — Iterative algorithms (VQE, QAOA)
  • calibration — Hardware-aware compilation data
  • pulse — Pulse-level control passthrough

Design Principles

Stability

Contract versions are immutable once released. New capabilities are added through extensions, never by breaking existing interfaces.

Minimalism

The smallest viable interface for interoperability. If something can be an extension, it is.

Async-Native

Rust async traits throughout. Quantum job submission is inherently asynchronous — the contract reflects this.

HPC-First

SLURM and PBS are first-class citizens. The contract includes job lifecycle hooks for HPC scheduler integration.

QDMI-Compatible

QDMI-compliant backends are a primary adapter target. The reference implementation includes a QDMI adapter mapping C-level device interfaces to async orchestration traits.

Standards-Aligned

OpenQASM 3 as mandatory circuit format. QIR optional. Aligned with CEN-CENELEC TR 18202:2025 architecture layers.

Relationship to Other Standards

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

See It In Action

The same code runs on any HAL-compliant backend.

example.rs
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>;
}

Reference Implementation

Arvak is the reference implementation of the HAL Contract — a Rust-native quantum compilation and orchestration platform for HPC environments.

Arvak

HPC-Integrated Quantum Orchestration Platform

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.

IQM Support IBM Quantum NVIDIA CUDA-Q QDMI (MQSS) Neutral-Atom Simulator Dynamic Plugins SLURM/PBS Job Routing Benchmarks (QV/CLOPS/RB) Python Bindings QASM3 Quantum Types Auto-Uncompute Qiskit Cirq Qrisp PennyLane PyPI Jupyter Notebooks Web Dashboard
Explore Arvak View on GitHub
9
Backends
v1.8.0
Latest Release
235
Commits

Framework Integrations

Arvak integrates deeply with major quantum frameworks. A complementary platform, not a replacement.

Qiskit

IBM Quantum

Bidirectional circuit conversion, ArvakProvider as a Qiskit BackendV2, and OpenQASM 3.0 interchange.

pip install arvak[qiskit]

Qrisp

High-Level

High-level quantum types, automatic uncomputation support, and ArvakBackendClient for Qrisp sessions.

pip install arvak[qrisp]

Cirq

Google Quantum AI

LineQubit and GridQubit support, ArvakSampler and ArvakEngine for Cirq execution interfaces.

pip install arvak[cirq]

PennyLane

Quantum ML

ArvakDevice for PennyLane's Device interface, QNode support, and automatic differentiation workflows.

pip install arvak[pennylane]

Backend Roadmap

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

Full Roadmap on GitHub →

Get Involved

HAL Contract is open source under Apache 2.0. The specification evolves based on real-world needs.

Implement an Adapter

Add your quantum backend to the HAL Contract ecosystem. Implement the async traits and get production-ready orchestration for free.

  • Implement the Backend trait for your API
  • Expose capabilities through standard interfaces
  • Run the conformance test suite
View Specification

Give Feedback

Shape the specification. Whether you're a hardware vendor, HPC operator, or quantum researcher — your deployment experience matters.

  • Open issues for spec discussions
  • Propose extensions for your use case
  • Share integration experience
Join Discussions

Integrate

Use HAL Contract in your quantum-HPC workflow. Write portable algorithms, benchmark across backends, deploy on clusters.

  • Write portable quantum algorithms
  • Benchmark across multiple backends
  • Deploy on SLURM/PBS clusters
Try Arvak

Let's Build This Together

The HAL Contract is an open specification. We welcome feedback, contributions, and collaboration from the quantum computing community.

Why now

The Unix fragmentation problem.
Quantum edition.

IBM / Qiskit
·
Google / Cirq
·
IQM / own SDK
QUASI

Every QPU vendor ships their own stack. Programs are not portable. Algorithms get reimplemented for each backend. There is no common format, no shared runtime, no abstraction layer that belongs to nobody.

QUASI is the POSIX moment for quantum computing.

Hardware-agnostic language (Ehrenfest). Portable compiler (Afana). Standard package format (Urns).

QUASI Quantum OS →