Aliquot

Instrument run ingestion & provenance

Use my own credentials

What this is

Aliquot gets data off laboratory instruments and into a research data platform without losing track of where any of it came from. It is infrastructure, not science: it does not analyse images or interpret results.

An instrument declares what it is about to upload — name, size, SHA-256 — then uploads straight to object storage. Aliquot reads the bytes back, hashes them, and compares. Match and the run can be sealed and processed; mismatch and it is quarantined instead, naming the artifact. Nothing is ever edited after sealing: a correction is a new run that supersedes the old one, so a citation still points at exactly what it cited.

What to click

  1. Try the demo above — no account needed. It signs you in as a data steward on a seeded dataset, read-only.
  2. Runs — six runs across the whole lifecycle. Open the QUARANTINED one: an artifact failed its checksum, so it was never sealed. Then open the run that superseded it.
  3. Lineage — click a verified artifact inside a run to see what produced it, back to the instrument and the human. Same graph as W3C PROV-JSON.
  4. Audit chain — every state change, hash-chained. Press Verify chain: it recomputes every hash and reports the first broken link, or says the record is intact.
  5. Try it yourself — the four steps above are a recording. This one is not: it gives you a disposable tenant of your own and lets you run an acquisition through it, including corrupting a byte on purpose to watch the service refuse it.

Full walkthrough with expected results: docs/WALKTHROUGH.md. API reference at /docs.

One row per acquisition. Click a run to see its manifest — what the instrument declared and whether each artifact verified. Click a verified artifact to trace its lineage.

Run State Study Instrument Acquired Artifacts

Where an artifact came from, and what came from it. Nobody typed this: it is the rows the ingestion and processing paths wrote while doing their work. The graph scrolls horizontally.

Every state change, in a per-tenant hash chain. Each event carries the hash of its predecessor, and the application role holds INSERT and SELECT on this table and nothing else — there is no code path that can edit one.

Seq Action Actor Target Occurred Hash

Every other view on this page reads. This one writes. It hands you an empty tenant of your own for an hour and drives a real acquisition through it — declare, upload, verify, seal, process — against the same code paths a laboratory instrument would hit. Nothing you do here can reach the seeded dataset, and nothing you make here survives the hour.

What you get

A tenant, a study, an instrument and an operator account, created in one transaction and yours alone. The session it issues is an ordinary one — admin of a tenant that contains nothing except what you put in it. No guard is relaxed for it and every role check runs exactly as it does for a paying tenant; what contains it is the tenant, not the role. It is empty, it holds a quota, and it is deleted outright when its clock runs out.