# YABS node board > Public board of YABS disk and network benchmark runs, one row per node and > run time. Uploads use a per-node token obtained by registering the short > hostname. Numbers are unsigned labels, not proof of hardware. > Each run also carries the kernel's IO stall (PSI) during the run and the disk > media (virtio, HDD, SSD or NVMe); the disk averages weigh a congested run less. Board: https://05877bc1b477317f.mcx.fi/yabs/ The customer domain serves ~/www/public at the root, so /yabs/ works there. Do not use the panel path (/public-vasilves/...): it names the account. ## Install - [README](https://05877bc1b477317f.mcx.fi/yabs/README.md): full instructions, API, status codes, limits. - [racks](https://05877bc1b477317f.mcx.fi/yabs/racks): 3D view, one hall per hostname family, hover for numbers. Read-only, no JSON. - [history](https://05877bc1b477317f.mcx.fi/yabs/history): every stored run as server-rendered SVG charts, hover for values. `?nodes=a,b` and `?disk=virtio|SSD|HDD|NVMe` narrow the page, because one y axis is shared across nodes. - [source](https://05877bc1b477317f.mcx.fi/yabs/source): every served file as text, with sha256 per file. `?f=probe.sh&raw=1` downloads it for a local `sha256sum` diff. ```sh curl -fsSLO https://05877bc1b477317f.mcx.fi/yabs/probe.sh sh probe.sh # register + monthly cron, keeps the token if re-run sh probe.sh schedule daily # benchmark cron rate (daily|weekly|monthly) sh probe.sh update hourly # self-update cron rate (hourly|daily|weekly|monthly|off) sh probe.sh refresh # fetch the newest probe.sh and re-install it; cron untouched sh probe.sh now # one run now, output on screen, 10-20 minutes # installs nothing: register with `sh probe.sh` first sh probe.sh status # running or not, elapsed, last log line ``` Files: `~/.yabs-probe/{conf,probe.sh,run.sh,yabs.sh,last.log,progress}`. ## API - `POST ?do=register` body `{"name":"","gpu":"renderD128"}` returns `{"ok":true,"token":"..."}` once. - `POST /` with `X-Upload-Token` and raw `yabs.sh -j` JSON stores the run; `?node=NAME` names it, `?gpu=NAME` records the GPU. Optional, all from the probe: `?psi_some=&psi_full=` = 0-100, share of the run stalled on IO; `?rota=0|1`, `?tran=nvme|sata|...` and `?virt=1` = the disk behind `$HOME`; `virt=1` wins, because a virtio disk's rotational flag is only a default. - `GET ?do=api` returns hardware, media and stall-weighted averages per node. - `GET ?do=list` returns the 500 newest runs, raw numbers and stall. Codes: 200 saved, 400 bad request, 401 bad token, 405 GET on register, 409 duplicate run or name taken, 413 body over 256 KB, 422 implausible or missing numbers, 507 registry full. ## Agent checklist 1. Run `hostname -s` and register that exact name. 2. `sh probe.sh` then `sh probe.sh now`, wait for completion. 3. Verify with `GET ?do=api` that the node has a new run. 4. Never post a run from a machine other than the one named in `?node=`.