Skip to content

Catalogue format

A QUniLator subscribes to a list of catalogues — the project’s own, a user group’s, an operator’s private one — so publishing your own is a first-class thing to do, not a fork of this site.

A catalogue is a static JSON file on any web server. There is no software to run.

{
"schema": "qunilator-catalog/1",
"name": "The QUniLator project's own catalogue",
"updated": "2026-08-05",
"configurations": [
{
"id": "xxdp-rl02",
"title": "XXDP 2.5 on an RL02",
"summary": "DEC's diagnostic monitor on an emulated RL11 with four RL02 drives.",
"bus": "qbus",
"devices": ["MEM", "MRV11-D", "DL11", "RL11", "RL02"],
"guest": "XXDP 2.5",
"page": "https://qunilator.com/configurations/xxdp-rl02/",
"download": {
"url": "https://…/xxdp-rl02.qcfg.zip",
"bytes": 11534336,
"sha256": ""
},
"doc": { }
}
]
}
FieldWhy QUniLator needs it
busA UNIBUS configuration names devices a QBone does not have. QUniLator offers only what it can run.
devicesShown before download, so an operator sees what the machine carries.
bytesMedia runs to hundreds of megabytes. QUniLator reports progress against this rather than downloading blind.
sha256Verified before import. A truncated bundle must fail loudly, not half-import.
pageWhere a human reads the full documentation.
docThe structured documentation below.

Every configuration carries its own documentation, in named fields rather than free prose — so a catalogue can say what a machine is for without parsing anybody’s Markdown, and a form can validate it.

Field
motivationWhat this machine is for.
usageA list: how to log in, what to try first.
bugsA list of known problems. May be empty.
links{label, url} pairs — manuals, tickets, sources.
maintainer{name, contact}. Who to ask.
addedYYYY-MM-DD.

The fields carry links and lists, not full Markdown: enough for a usage list and a links section, little enough to render without sanitising a document somebody else wrote.

A configuration arriving without documentation, or short a field, is still imported and marked undocumented — every configuration that exists today is one, and refusing them would make this a wall rather than a habit. QUniLator says what is missing, and a catalogue may too.

Two requirements beyond putting the file somewhere:

CORS. A QUniLator on an isolated LAN has no route to your web server, but the operator’s browser usually does — in that case the browser fetches the index and the bundle and posts what it got to QUniLator. That only works if the catalogue is served with Access-Control-Allow-Origin: *. This site does; so should yours.

Stable URLs for bundles. QUniLator records what it has imported by id and checksum. Re-publishing a bundle at the same URL with different contents makes QUniLator’s record wrong — give the new one a new id, or a versioned URL.

Not in git. A .qcfg.zip carries its media and runs to tens or hundreds of megabytes, so bundles are published as release assets and the catalogue points at them. What is committed is the entry: the metadata, the documentation, and the checksum of the bundle it names.