Arvak

Rust-Native Quantum Compilation for HPC

Blazing-fast compilation, deep framework integration, and first-class European HPC support. Not a replacement — a platform that makes your circuits run everywhere.

pip install arvak

arvak[qiskit] · arvak[cirq] · arvak[pennylane] · arvak[all]

🦀
15 Rust Crates

39k+ lines, async/tokio, zero-copy parsing

⚛️
6 Backends

IQM, IBM Quantum, QDMI, LUMI, LRZ, Simulator

🖥️
HPC Native

First-class SLURM + PBS, OIDC auth

Get Started in 30 Seconds

Choose your path. Each gets you running circuits in under a minute.

quickstart.py
import arvak

# Build a Bell state
circuit = arvak.Circuit(2)
circuit.h(0)
circuit.cx(0, 1)
circuit.measure_all()

# Run on simulator
result = arvak.run(circuit, backend="sim", shots=1000)
print(result.counts)  # {'00': 498, '11': 502}

# Compile for IQM hardware
compiled = arvak.compile_circuit(circuit, target="iqm", optimization_level=2)
from qiskit import QuantumCircuit
from arvak.integrations.qiskit import ArvakProvider

# Your existing Qiskit circuit — no changes needed
qc = QuantumCircuit(2, 2)
qc.h(0)
qc.cx(0, 1)
qc.measure_all()

# Run on any Arvak backend
provider = ArvakProvider()
backend = provider.get_backend('sim')  # or 'iqm', 'ibm'
job = backend.run(qc, shots=1000)
print(job.result().get_counts())

# Convert between frameworks
import arvak
print(arvak.list_integrations())
# {'qiskit': True, 'qrisp': True, 'cirq': True, 'pennylane': True}
# ~/.arvak/config.yaml

site: lumi
scheduler:
  type: slurm
  partition: q_fiqci
  account: project_462000xxx

backend:
  type: iqm
  endpoint: https://qpu.lumi.csc.fi
  auth_method: oidc

defaults:
  shots: 1024
  optimization_level: 2
use arvak_ir::Circuit;
use arvak_hal::Backend;
use arvak_adapter_sim::SimulatorBackend;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let circuit = Circuit::bell();

    let backend = SimulatorBackend::new();
    let job_id = backend.submit(&circuit, 1000).await?;
    let result = backend.wait(&job_id).await?;

    println!("Results: {:?}", result.counts);
    Ok(())
}

Works With Your Framework

Deep, bidirectional integration. Not a replacement — a platform that makes your circuits portable.

Qiskit

BackendV2

Use Arvak as a Qiskit backend. Bidirectional circuit conversion via QASM3. Auto-discovery plugin.

pip install arvak[qiskit]

Qrisp

Backend Client

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

pip install arvak[qrisp]

Cirq

Sampler/Engine

LineQubit and GridQubit support. ArvakSampler and ArvakEngine for Google Cirq.

pip install arvak[cirq]

PennyLane

Device

ArvakDevice for QNode support. Automatic differentiation and QML workflows.

pip install arvak[pennylane]

6 Backends, One Interface

Write once, run on any HAL-compliant backend. Simulator to supercomputer.

Simulator

20 qubits · Full connectivity
Local, zero-config
H CX RZ RX

IQM Resonance

20 qubits · Star topology
Cloud API
PRX CZ

IQM LUMI

20 qubits · OIDC auth
On-premise, CSC Finland
PRX CZ HPC

IQM LRZ

20 qubits · OIDC auth
On-premise, Germany
PRX CZ HPC

IBM Quantum

127 qubits · Heavy-hex
Qiskit Runtime
SX RZ CX

QDMI (MQSS)

Vendor-neutral interface
Any QDMI-compliant device
Dynamic

Built for HPC

First-class SLURM and PBS support. OIDC authentication. LUMI and LRZ as first-class citizens.

Deploy on Any HPC Cluster

Config-driven quantum orchestration for European supercomputers

Arvak integrates natively with HPC job schedulers. Define your site configuration once, then submit quantum jobs through the same workflow as classical HPC workloads. OIDC authentication, partition mapping, and job persistence included.

SLURM PBS/Torque OIDC LUMI LRZ Config YAML Job Persistence
Deployment Guide
~/.arvak/config.yaml
site: lumi
scheduler:
  type: slurm
  partition: q_fiqci
  account: project_462000xxx

backend:
  type: iqm
  endpoint: https://qpu.lumi.csc.fi
  auth_method: oidc
  oidc_provider: https://auth.csc.fi

defaults:
  walltime: "00:30:00"
  shots: 1024
# Authenticate via OIDC
arvak auth login --provider csc

# Submit quantum job to LUMI
arvak run circuit.qasm \
    --backend iqm \
    --shots 1024

# List available backends
arvak backends

# Compile for target hardware
arvak compile circuit.qasm \
    --target iqm \
    --output compiled.qasm

See It in Action

The Arvak CLI compiles, runs, and manages quantum circuits from your terminal.

arvak@hpc:~

Built in Rust, Served via gRPC

15 crates, 39k+ lines. Production-ready gRPC service with comprehensive Python client.

#[async_trait]

Async-first design with Tokio. All backend operations are non-blocking, perfect for concurrent job management.

Zero-Copy Parsing

QASM3 parser uses zero-copy techniques for blazing fast circuit loading. Parse megabyte files in milliseconds.

Type-Safe Circuits

QubitId, GateOp, and Circuit types catch errors at compile time. No runtime surprises.

Send + Sync

All core types are thread-safe. Run compilations in parallel, share backends across threads.

gRPC Service (tonic)

Production-ready gRPC server with 7 RPCs, 3 storage backends, Prometheus metrics, and OpenTelemetry tracing.

PyO3 Bindings

First-class Python support via PyO3. Use from Jupyter notebooks or integrate with existing Qiskit code.

4
unsafe (FFI only)
15
crates
39k+
lines of Rust
100%
stable Rust
arvak-ir arvak-qasm3 arvak-compile arvak-hal arvak-sched arvak-cli arvak-grpc arvak-dashboard arvak-python arvak-types arvak-auto arvak-adapter-sim arvak-adapter-iqm arvak-adapter-ibm arvak-adapter-qdmi
grpc_example.py
from arvak_grpc import ArvakClient

client = ArvakClient("localhost:50051")

# Submit a Bell state circuit
qasm = """
OPENQASM 3.0;
qubit[2] q;
h q[0];
cx q[0], q[1];
"""

job_id = client.submit_qasm(qasm, "simulator", shots=1000)

# Wait for results
result = client.wait_for_job(job_id)
print(f"Counts: {result.counts}")  # {'00': 502, '11': 498}

client.close()
from arvak_grpc import AsyncArvakClient
import asyncio

async def main():
    client = AsyncArvakClient("localhost:50051", pool_size=10)

    # Submit 10 jobs concurrently
    job_ids = await asyncio.gather(*[
        client.submit_qasm(qasm, "simulator", shots=1000)
        for _ in range(10)
    ])

    # Wait for all results
    results = await asyncio.gather(*[
        client.wait_for_job(jid) for jid in job_ids
    ])

    await client.close()

asyncio.run(main())
# Basic gRPC client
pip install arvak-grpc

# With export support (Arrow/Parquet)
pip install arvak-grpc[export]

# With DataFrame support
pip install arvak-grpc[polars]

# With visualization
pip install arvak-grpc[viz]

# Everything
pip install arvak-grpc[all]

Live Dashboard

Circuit visualization, compilation, job monitoring, and result histograms. Running right now.

Circuit Visualization

q[0] q[1] H M M → c[0] → c[1]
2
Qubits
3
Gates
1
Depth

VQE H₂ Ground State

Iteration Energy (Ha) -1.07 -1.19 -1.31
VQE Energy Exact: -1.3114 Ha

Measurement Results

|00⟩ |01⟩ |10⟩ |11⟩ 498 1 2 499
1000
Shots
99.7%
Entangled

Backend Status

Simulator

20 qubits

IQM

20 qubits

IBM

127 qubits

LUMI

HPC

LRZ

HPC

QDMI

Dynamic
Open Live Dashboard →

Circuit visualization, backend monitoring, job management

Why Arvak?

A complementary platform for the quantum ecosystem. Not a replacement.

Without a Unified Platform

  • Rewrite code for each quantum provider
  • Manual circuit conversion between frameworks
  • No HPC scheduler integration out of the box
  • Python-only compilation (slow for large circuits)
  • Separate tools for each backend

With Arvak

  • One interface, six backends
  • Automatic bidirectional conversion (Qiskit, Cirq, Qrisp, PennyLane)
  • First-class SLURM/PBS with OIDC
  • Rust-native compilation (zero-copy, async)
  • Unified dashboard, gRPC service, and CLI

Start Building

Three paths into Arvak. Pick the one that fits.

For Researchers

Run algorithms on any backend without rewriting code.

  • pip install arvak[all]
  • 5 Jupyter notebooks included
  • VQE, QAOA, Grover demos
  • Cross-framework benchmarking
Get Started

For HPC Centers

Deploy Arvak on your cluster in minutes.

  • SLURM + PBS support
  • OIDC authentication
  • LUMI/LRZ configs included
  • Docker deployment ready
Deployment Guide

For Rust Developers

Build on the Rust core or use the gRPC API.

  • 15 composable crates
  • gRPC Python client v1.6.0
  • Async/tokio throughout
  • cargo install one-liner
Explore Crates

Let's Build This Together

Arvak is open source. We welcome contributions, feedback, and collaboration.