You care about what a device actually does, and about being able to say exactly what you ran. The lab is built to make both checkable.
Reproducibility, by construction
- A project is files, and every run is submitted from a
.qasmyou can read. The Runs rail keeps shots, machine and cost per run; the run detail keeps the submitted circuit and the counts. Nothing is priced or transformed client-side. - The codename you see is the machine's public
targetId— the same string in every SDK, so a run description in a paper ("<codename>, 4096 shots") is enough for someone else to repeat it. - The circuit builder refuses to draw anything it cannot draw honestly (custom gates, multiple registers, QASM 3 keep you in code with the parser's own reason). The emulator is an ideal statevector — no noise, no sampling — and says so on its header; it stops at 16 qubits in the browser rather than pretend, and past that it points you at the server simulator that fits (22 qubits per the catalogue) instead of a dead end.
- The library quotes observed output for every runnable item and marks reference material Reading only with licence and upstream path.
Simulator vs device, side by side
The GHZ template is the canonical experiment: run ghz.qasm on a simulator and on a real machine at the same shot count, then open both runs from the Runs rail. The simulator gives 000 and 111 and nothing else; the device gives the other six outcomes too, and their share is a rough, honest read of what three entangling gates cost on that machine today. The histogram sorts outcomes and expands to all of them; the credit line says what was held and settled.
Python where you need it
The browser kernel is CPython 3.12 with numpy, matplotlib and the real roro_platform SDK — including LocalSimulator, noise-model and mitigation plugins, Observable expectation values and SPSA in roro_platform.optimize — so parameter sweeps and small VQE/QAOA loops run offline in a notebook, free, with figures under the cells. Compiled stacks (qiskit, scipy, pennylane) are not available in the browser; write against roro_platform here and run the same code on your machine with the platform SDK from the RoRo repository (not on PyPI yet). Every result you'd cite is exportable: Runs rail → ⋯ on a run → Manifest (JSON) (machine, shots, QASM + SHA-256, counts, cost) or Counts (CSV/JSON) / Histogram (SVG); pick 2–4 runs with Compare for side-by-side histograms and pairwise total-variation distances; library items carry a Cite section (BibTeX + plain).
Keeping the record
- Share produces an immutable snapshot link — a citation-grade pointer to exactly the code you ran, revocable if needed.
- Notebooks save outputs into the file, so a shared notebook carries its plots.
- Ask Explain this result for a first-pass narration; treat it as a draft. Copilot's transcript shows every file it read and every diff you approved, and its cost per turn.
Limits to know
In-browser simulation caps at 16 qubits — both the kernel's LocalSimulator and the builder's emulator (the server simulators take 22); the kernel has no threads or subprocesses; a .py cannot submit to hardware from inside the lab — that goes through the .qasm Run rail, which quotes and confirms first.
Related: Circuit builder & emulator · Notebooks · Machines & credits