Quick start
…) 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 |
qiskitqiskit-aerqiskit-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 |
| 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.