| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
All checks were successful
standards workspaces build + test / which workspaces this change touches (pull_request) Successful in 13s
wai-quantum command line / does this change touch it (pull_request) Successful in 16s
wai-quantum studio and desktop / does this change touch it (pull_request) Successful in 32s
wai-quantum command line / command line · linux (pull_request) Successful in 1m9s
repository checks / lockfiles, tests in CI, workflow hygiene, spec and section references, public text (pull_request) Successful in 2m4s
wai-quantum studio and desktop / studio · browser (pull_request) Successful in 2m41s
standards workspaces build + test / joule-code-rs (joule-code/joule-code-rs, joule-code-rs, linux-arm64, true) (pull_request) Successful in 10m11s
standards workspaces build + test / macOS energy backends (pull_request) Successful in 13m29s
wai-quantum command line / command line · macos (pull_request) Successful in 39s
wai-quantum studio and desktop / desktop app · macos (pull_request) Successful in 2m21s
The formulae job of the first full release run (wai-quantum-cli-v0.1.0) failed with a 403: it read each archive's .sha256 through its public download URL, and the public address refuses the Python library's default user agent. formulae.py now reads them at the forge's own address, the API's (over the private network, as the uploads go), with a user agent of its own. The formula and the manifest still point users at the public URLs. Run by hand against that release, it wrote both, which are attached there. Co-Authored-By: Claude Opus 5.5 <[email protected]> |
||
| .. | ||
| release | ||
| src | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
| smoke.sh | ||
wai-quantum
The command line of the WAI quantum stack. It runs OpenQASM programs on this machine, planned and run by the same engine as the quantum job service (wai_quantum::engine), so a job gives the same result here as there. It also sends programs to the service, checks and draws them, verifies receipts, and serves its tools to agents over MCP.
Installing it
| Where | How |
|---|---|
| Any platform with Rust | cargo install wai-quantum-cli (installs the wai-quantum binary) |
| macOS or Linux, with Homebrew | brew tap transaction-science/tap https://git.transaction.science/Transaction-Science/homebrew-tap then brew install wai-quantum |
| Windows, with Scoop | scoop bucket add transaction-science https://git.transaction.science/Transaction-Science/scoop-bucket then scoop install wai-quantum |
| Anywhere | a prebuilt archive from the releases tagged wai-quantum-cli-v… |
The prebuilt archives are:
- macOS for Apple silicon and for Intel, with the GPU state vector;
- Linux for x86_64 and arm64, linked statically, so any distribution runs them;
- Windows for x86_64.
Each archive has a .sha256 file beside it (shasum -a 256 -c). A tag wai-quantum-cli-v<version> builds them on the project's own runners (release/, .github/workflows/wai-quantum-cli-release.yml), and writes the Homebrew formula and the Scoop manifest for them.
Running a program
wai-quantum run bell.qasm --shots 1000
wai-quantum run prog.qasm -o "Z0 Z1" -o "0.5 X2" -a 000 -a 111
wai-quantum run prog.qasm --noise depolarizing_2q=0.01 --noise readout=0.02
wai-quantum run prog.qasm --method mps --option max_bond=128
cat prog.qasm | wai-quantum run --json > job.json
A program is OpenQASM 3, or the OpenQASM 2 forms in common use. The reader accepts:
- registers, and a gate applied to a whole register;
- the standard gates;
ctrlandnegctrlmodifiers;- gate definitions;
- measurement and
resetanywhere, andifon measured bits.
It refuses loops, inv and pow, giving the line of each.
--method auto (the default) picks the strongest method the program admits:
| Method | Takes |
|---|---|
| exact | dyadic angles; the state vector, the same bits on every machine |
| statevector | any angle |
| stabilizer | Clifford circuits, to tens of thousands of qubits |
| mps | matrix product states |
| pauli | Pauli dynamics, for expectation values |
| tensor_network | amplitudes |
| cutrank | a Clifford circuit with a layer of rotations |
| density_matrix, trajectories | noise |
wai-quantum methods lists each method's reach in a job's memory here (--memory-gb, default 16).
Each result names:
- its method, and why that method was chosen;
- its accuracy class;
- the counts, expectation values or amplitudes asked for;
- its receipt.
Receipts
Every result is signed over the request and the result in their canonical JSON. The service signs with its key; this tool signs with this user's key:
--key FILE, or$WAI_QUANTUM_KEY, names a file holding the key;- otherwise the key is
$XDG_CONFIG_HOME/wai/quantum-key, or~/.config/wai/quantum-key. It is made from the system's random source on first use and is readable by its owner only.
wai-quantum key prints the key's did:key. --demo-key signs with the published demo key. Its receipts show only that a result is unaltered, not who signed it.
wai-quantum run prog.qasm --json > job.json
wai-quantum verify job.json # VALID, and the signer's did:key
wai-quantum submit prog.qasm --json > svc.json
wai-quantum verify svc.json # the same check on the service's receipt
A receipt shows that this key signed this request and this result, and anyone can rerun the request to compare. It does not say who holds the key.
Checking and drawing
wai-quantum lint prog.qasm # ok, with its shape, or the line of the first problem
wai-quantum plan prog.qasm # the method and why, the memory and work, without running
wai-quantum draw prog.qasm --width 80
q0: ─────H─────●──M0──────
│
q1: ───────────⊕──●───M1──
│
q2: ──Rz(π/4)─────⊕───M2──
The service
wai-quantum submit sends a job to https://wai.transaction.science/quantum-jobs, or to --service URL (also read from $WAI_QUANTUM_SERVICE). It waits for a long job to finish, then prints the result just as run does.
For agents
wai-quantum mcp is a Model Context Protocol server on standard input and output. Its tools are:
run_quantum_circuitplan_quantum_circuitlint_qasmdraw_circuitverify_quantum_resultlist_methods
Runs happen on this machine and are signed with this user's key; nothing is sent anywhere. In an MCP client's configuration:
{ "mcpServers": { "wai-quantum": { "command": "wai-quantum", "args": ["mcp"] } } }
The research tools
wai-quantum lab … holds the research tools:
- algorithms from the catalogue, OpenQASM and QIR export, and receipts over them;
- error correction at circuit level;
- qLDPC memory;
- fault-tolerant resource estimates and architectures;
- DMRG, TDVP and molecules;
- neural quantum states;
- Gaussian boson sampling;
- optimisation;
- the compute fabric;
- information and transport.
wai-quantum lab help lists them. wai-quantum verify also checks the receipts they sign.
Builds
- Default:
submit, over HTTPS. --features metal: the single-precision state vector on the GPU (--method statevector_single), on macOS.--no-default-features --target wasm32-wasip2: a WASI component withoutsubmit. It gives the same output under any WASI runtime.
wai-quantum completions zsh (or bash, fish, elvish, PowerShell) prints shell completion.