What is a QVM?
A QVM, or quantum virtual machine, is software that runs quantum programs without tying them to a single physical quantum processor. The term covers two different kinds of tools, so check which one a page means before you install anything.
Simulators run on classical computers and imitate quantum hardware. Rigetti’s open-source QVM simulates programs written in its Quil language, and Google’s Quantum Virtual Machine uses noise data to mimic its own processors.
An execution layer takes one program and sends it to real machines. Quip Network’s QVM, the Quip Virtual Machine, works this way: you write the problem once, then choose where it runs. It is live on the Aglais testnet.
| Rigetti QVM | Google Quantum Virtual Machine | Quip Virtual Machine | |
|---|---|---|---|
| Purpose | Simulate Quil programs | Mimic Google processors | Run one program across different backends |
| Runs on | Classical computer | Classical computer | CPU, GPU, D-Wave quantum annealer or Quip Network |
| Program format | Quil | Cirq circuits | Quadratic models, written in a constraint language or built in Python |
Which problems the Quip Virtual Machine runs
The XQuad toolchain handles combinatorial problems that reduce to quadratic binary models. Route planning, graph coloring, knapsack and portfolio optimization all fall in range. Support for gate-based hardware, starting with IonQ, is coming. Until then, if your work needs a gate-level circuit simulator for research, the Rigetti and Google tools above are built for that job.
Run a job on your own machine
You need Python 3.13 or newer. Start by installing the toolchain:
pip install "xquad[quip]"This example describes a small problem and solves it on your CPU, with no account and no network connection. Variable 0 gets a reward for being on, and the pair gets a penalty when both variables are on:
from xqffi.vm import XqmxModel
from xqsa import SolverCPU
model = XqmxModel.binary(2)
model.set_linear(0, -1)
model.set_quad(0, 1, 2)
result = SolverCPU().solve(model)
print(result.sample.values, result.energy)The solver looks for the lowest energy, so it turns on variable 0 and leaves variable 1 off:
[1, 0] -1Send the same model to the network
To move the job to the network, change the solver and keep the model:
from xqsa.quip import SolverQuip
solver = SolverQuip.for_network("aglais")
print(solver.create_order(model).quote())
result = solver.solve(model)
print(result.sample.values, result.energy)The first run creates a keystore at ~/.quip/keystore.json and draws test tokens from the faucet. Keep the keystore private. AGLS, the test token, holds no value, so this job costs you nothing real.
When we ran this model on November 1, 2026, the quote came to 1.002 AGLS: a 1 AGLS reward plus a fee of about 0.002 AGLS. When the job completes, the client checks that the energy recorded on chain matches the result it hands back. Expect the amounts to change with runtime upgrades, because they come from the chain at the time you ask.
Where to go next
Submit your first compute job covers payout rules, deadlines, quality floors and what happens to a job after you post it. Ising topologies explains how models map onto hardware.
Use These Docs with AI
Connect Claude Code, Cursor, VS Code, Codex or any other MCP client to these docs, or read any page as Markdown. No sign-in needed.
Post-Quantum Signature Schemes for Blockchains
Compare the post-quantum signature schemes available to blockchains by key size, signature size and the state a signer has to keep, then pick one for your wallet or chain.