Skip to content

Getting started

Every app runs in your browser at https://met-al-lab.pages.dev/ — no install, no clone. Most apps compute entirely client-side; the real-data apps stream de-identified MET output live from Cloudflare R2, so a network connection is expected.

Each of the first nine apps also ships as a fully self-contained dist/<name>.html: download one file and double-click it. It opens straight from file:// with no server — all modules, styles, images, and fallback data are inlined (see Single-file builds for how).

Two apps intentionally have no single-file build:

  • Real-Data Demo — its entire point is streaming from R2 over the network.
  • WebGPU FSS — needs a WebGPU-capable browser; it is served, not baked.

The apps/<name>/index.html sources are ES-module apps. Browsers block file:// module imports (CORS origin: null), so serve the tree over HTTP:

Terminal window
python3 -m http.server 8000
# open http://127.0.0.1:8000/

The landing page index.html is the gallery; every app links both its served source and its single-file build.

The shared libraries carry standalone, dependency-free test harnesses (plain node, no npm):

Terminal window
node lib/selftest.mjs # met-stats: 129/129 pass
node lib/met-stat-parse.selftest.mjs # met-stat-parse: 97/97 pass
node apps/webgpu-fss/fss-parity.selftest.mjs # FSS CPU parity: 148/148 pass
node apps/met-pipeline-explorer/data/realcase.selftest.mjs # 88/88 vs MET .stat
Terminal window
node tools/inline.mjs apps/<name>/index.html dist/<name>.html

The inliner prints byte size + module count and self-checks that the output is genuinely self-contained (exit 1 otherwise).