QuBins

Prebuilt Qiskit environments. Click a badge to run in your browser, or docker pull on your laptop.

QuBins — the place for your QuBits: prebuilt quantum compartments, pick one, run your Qiskit notebook on (my)binder or as a container (“bin”).

cosign-signed Trivy-scanned daily-rebuilt multi-arch SLSA-attested

Build matrix status GitHub repo

Quick start

Launch latest Qiskit () in your browser Opens latest-xl on mybinder.org. First start is slow (image pull); subsequent launches are cached.

Or run locally with Docker:

docker run --rm -p 8888:8888 ghcr.io/qubins/images:latest-small

Watch stdout for the tokenised http://127.0.0.1:8888/lab?token=… URL. Mount a folder with -v "$PWD:/home/jovyan/work".

Launch your repo or notebook on QuBins

Which flavor? xl for tutorials, addons + scientific stack (the usual pick). small for a lean image with just core Qiskit. xxl adds the AI transpiler (PyTorch + CUDA — large, amd64-only).

Paste a GitHub repo URL (or a /blob/ URL, or a raw .ipynb URL). You get a Binder launch URL to share, and an optional Markdown badge for your README.

Why does this go through /launch/?

The link in the badge points at our /launch/ redirector rather than straight to mybinder.org. When mybinder's URL form changes (it has, historically), every badge already in the wild keeps working with no edit needed on the reader's side.

All images

Every image is daily-rebuilt, Trivy-scanned (HIGH/CRITICAL gated), and cosign-signed via GitHub Actions OIDC. The Docker tag template for every row is: docker run --rm -p 8888:8888 ghcr.io/qubins/images:<tag>

small vs xl vs xxl — full comparison
small xl xxl
Use for Lean image, fast pull, core Qiskit work Tutorials, docs notebooks, addons, scientific stack (the usual pick) Everything in xl plus the local AI transpiler
Approx. size ~250 MB ~1 GB ~3.4 GB
Included qiskit
qiskit-aer
qiskit-ibm-runtime
Qiskit ecosystem: qiskit[all], all qiskit-addon-*, qiskit-experiments, qiskit-serverless, qiskit-ibm-catalog
Scientific stack: scipy, sklearn, pyscf, plotly, sympy, ffsim, pandas
Notebook tooling: pylatexenc, nbgitpuller, jupyterlab-open-url-parameter
Everything in xl, plus qiskit-ibm-transpiler[ai-local-mode] (pulls PyTorch + the full CUDA 13 wheelset)
Single-notebook ?fromURL= ✓ (via jupyterlab-open-url-parameter) ✓ (inherits from xl)
arm64 caveats none gem-suite omitted (no aarch64 wheels) amd64-only — the AI transpiler chain has no aarch64 wheels
Filter:
Qiskit Flavor Launch Docker tag

How it works

Dockerfile is parameterised by Qiskit version × flavor and installs the matching versions/<target>/requirements.txt. A GitHub Actions workflow builds per-arch (amd64 + arm64), gates on a Trivy scan, publishes the multi-arch manifest to GHCR with a SLSA provenance attestation, signs it with cosign, and force-pushes a tiny stub branch that mybinder.org consumes to skip the dependency-tree rebuild.

A daily cron rebuilds everything against the current base image to absorb upstream CVE fixes. Dependabot watches the docker base, GitHub Action versions, and the latest Qiskit minor's pip pins.

More in the repository README.