Six streams, one clock, one manifest.
Every run produces a single manifest that ties video, thermal, environmental, telemetry, protocol, and endpoint data to a shared timeline. This page describes the full structure.
Run manifest schema
The manifest is the entry point for every run. It enumerates all streams, their locations, and the clock alignment that makes them joinable.
// Run manifest (JSON)
{
"run_id": "erid_run_01HQ8X",
"study_id": "std_4471",
"assay": "kinetic_binding_v2",
"lab_id": "gv_04",
"started_at": "2026-07-14T04:12:08.221Z",
"clock_sync_tolerance_ms": 12,
"streams": [
{ "type": "video", "uri": "s3://...", "fps": 30, "res": "1920x1080" },
{ "type": "thermal", "uri": "s3://...", "fps": 9, "units": "degC" },
{ "type": "environment", "uri": "s3://...", "hz": 1 },
{ "type": "telemetry", "uri": "s3://..." },
{ "type": "protocol", "uri": "s3://...", "steps": 34, "deviations": 1 }
],
"endpoint": { "affinity_nm": 12.4, "replicate": 3, "schema_v": "2.1" }
}Note the deviations: 1 field. Surfacing deviations rather than hiding them is a deliberate signal. A model trainer
wants to know when something went off-protocol, because that's signal, not noise.
Per-stream field definitions
| Stream | Format | Resolution / Rate | Calibration |
|---|---|---|---|
| Visual | H.264 / H.265 | 1080p @ 30 fps | White balance per run |
| Thermal | 16-bit TIFF sequence | 9 fps, radiometric | Flat-field corrected, NIST traceable |
| Environmental | Parquet timeseries | 1 Hz, multi-channel | Factory calibrated, annual recert |
| Telemetry | Native + normalised Parquet | Per instrument | Raw + conversion factors |
| Protocol | JSON | Per-step timestamps | N/A (operator-logged) |
| Endpoint | JSON (customer schema) | Per well | Per assay standard |
Time synchronisation
Clock alignment is what turns a recording into a dataset. Every sensor on the edge pod synchronises to a shared PTP grandmaster clock. Guaranteed alignment tolerance is ±12 ms across all streams.
Each stream's timestamps are expressed as UTC with sub-millisecond precision. The protocol trace clock is aligned to the same reference, so a specific frame of video, a thermal reading, and the operator action that triggered them can be joined with no manual alignment.
Delivery
API pull
Streams retrieved via the Erid API by run ID and stream type. Partial retrieval supported.
Bucket delivery
Streams land in your S3-compatible bucket as they complete. Retention configurable.
Streaming (live)
Data flows during the run. You see telemetry and video while the study is running, not after.
Volume estimates
Approximate storage per run by assay type. Contact us for a precise estimate based on your capture spec.
| Assay type | Duration | Total volume | Streams |
|---|---|---|---|
| Kinetic binding | 90 min | ~14 GB | All six |
| Endpoint ELISA | 3 hr | ~8 GB | Visual + thermal + endpoint |
| Cell culture monitoring | 7 days | ~60 GB | Visual (timelapse) + env + telemetry |