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-pythoninpyproject.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.
uv venvuv pip install -r requirements.lockuv pip install --no-deps -e .qmint doctorqmint 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.
python -m uvicorn qmint.api.app:app --port 8787Open http://127.0.0.1:8787/docs for FastAPI's interactive explorer, or read the API reference here.
Run the web app
pnpm installpnpm dev# http://localhost:3000 — /api/* is rewritten to the API on :8787Point 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
python -m pytest tests/contracts tests/unit -qpython -m pytest tests/unit/api -qpython -m ruff check qmint testspnpm typecheckpnpm lintpnpm testpnpm buildpnpm e2eTests 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.
- License. QMint's own code is MIT-licensed: LICENSE (opens in a new tab). Third-party dependencies keep their own licences; no third-party source is vendored.
- Disclosure. DISCLOSURE.md (opens in a new tab) lists the starting material, the published research that is reproduced (not invented here), the dependencies, and how AI assistance (Claude Code) was used under the human author's direction and review.
- Source. github.com/udsy19/qmint (opens in a new tab)