The specification

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.

01

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.

02

Per-stream field definitions

StreamFormatResolution / RateCalibration
VisualH.264 / H.2651080p @ 30 fpsWhite balance per run
Thermal16-bit TIFF sequence9 fps, radiometricFlat-field corrected, NIST traceable
EnvironmentalParquet timeseries1 Hz, multi-channelFactory calibrated, annual recert
TelemetryNative + normalised ParquetPer instrumentRaw + conversion factors
ProtocolJSONPer-step timestampsN/A (operator-logged)
EndpointJSON (customer schema)Per wellPer assay standard
03

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.

04

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.

05

Volume estimates

Approximate storage per run by assay type. Contact us for a precise estimate based on your capture spec.

Assay typeDurationTotal volumeStreams
Kinetic binding90 min~14 GBAll six
Endpoint ELISA3 hr~8 GBVisual + thermal + endpoint
Cell culture monitoring7 days~60 GBVisual (timelapse) + env + telemetry