Skip to content
Static snapshot of QMint (git 5b73a0bb93c1) — live experiments run locally

Docs · Start

Getting started

Install the Python environment and the web app, run the API, run the tests.

What QMint is

QMint is an open-source research platform for quantum money and quantum payment security. It reproduces published bounds (Molina–Vidick–Watrous 2012, Kent et al. 2022, Schiansky et al. 2023), runs attack simulations, analyses a public photon dataset and compares quantum protocols with classical baselines. Every number it shows carries an evidence label that says where it came from.

Prerequisites

  • Python 3.11–3.13 (requires-python in pyproject.toml) and uv (opens in a new tab) for the environment.
  • Node.js ≥ 20.9 and pnpm 9 for the web app. Use pnpm only; the lockfile is web/pnpm-lock.yaml.
  • No API keys. Network access and paid hardware are off by default.

Python environment

Dependencies are pinned in requirements.lock. Install them into a fresh virtual environment, then install the package itself without re-resolving dependencies.

repository root
uv venvuv pip install -r requirements.lockuv pip install --no-deps -e .qmint doctor

qmint doctor reports required and optional dependencies, drift from the lock, which lane entrypoints are present, and whether credential variables are set (booleans only, never values).

Run the research API

The website reads everything from one FastAPI service in qmint/api. It wraps the merged research lanes and labels every response with a status and an evidence kind.

repository root
python -m uvicorn qmint.api.app:app --port 8787

Open http://127.0.0.1:8787/docs for FastAPI's interactive explorer, or read the API reference here.

Run the web app

web/
pnpm installpnpm dev# http://localhost:3000 — /api/* is rewritten to the API on :8787

Point the web app at another API with QMINT_API_ORIGIN (for example QMINT_API_ORIGIN=http://127.0.0.1:8782 pnpm dev -p 3002). Server components call the API directly; the browser always calls same-origin /api/*.

After changing an API model, regenerate the typed client with pnpm gen:api. It rewrites lib/api/openapi.json, schema.d.ts and evidence-labels.json; never edit those by hand.

Run the tests

repository root
python -m pytest tests/contracts tests/unit -qpython -m pytest tests/unit/api -qpython -m ruff check qmint tests
web/
pnpm typecheckpnpm lintpnpm testpnpm buildpnpm e2e

Tests marked slow, network or realdata need large solvers, public network access or the downloaded Zenodo archive; see pyproject.toml for the markers.

Support, license and disclosure

This effort is supported by Qollab & IonQ.