DATA BASTION

What an OSDU stack looks like when you actually run it.

Not a slide deck. A loaded partition you can click through. Wells, trajectories, formation tops, production curves, live telemetry — every record addressable by its canonical OSDU id.

338,292 Wells indexed · Aramco Standard 1.0.0 · refreshed every 60s

A real corpus, not a sandbox.

The demo partition is loaded from Argentina's Secretaría de Energía — a public regulator registry, no NDA required to look at it. That gives us a corpus shaped like a real national operator's, not a 20-row test fixture.

  • 338,292 Wells — full national registry, OSDU-canonical, indexed and facetable.
  • 1,350,000 ProductionVolumes — twelve years of monthly volumes across 256 Tecpetrol-operated wells.
  • 30,142 wells flagged has_production — the rest are dry header records, and we surface that distinction in the facet rail instead of hiding it.
  • As-of timestamp on every page — baked at build, refreshed client-side every 60s from /stats.json.
Capabilities facet rail showing has_production (30,142), has_well_tops (16,167), has_trajectory (1,004), and has_well_logs (0) counts beside the well browser.
capabilities-facet.png · 1440x900 · 2026-06-18

Three things the demo proves, today.

Well browser + facets

338,292 wells indexed against Aramco Standard 1.0.0. Search by name, operator, basin, provincia, status. Every hit links to the live /api/storage/v2/records/{id}.

see it →

Capability filters

Filter the corpus by what each well actually carries: production (30,142) · well_tops (16,167) · trajectory (1,004) · well_logs (0, on purpose — LAS sits in MinIO). No false positives.

see it →

Telemetry → OSDU WellLog

A materializer drains Mosquitto every 5 minutes and writes canonical WellLog records into the partition. Rig signal becomes auditable history without a human re-keying it.

see it →
Trajectory panel showing a deviated wellbore path rendered as a concave polyline on the map beside its parent wellbore record and formation marker set.
trajectory-panel.png · 1440x900 · 2026-06-18

The graph is intact. Not just flat records.

OSDU's value isn't the records — it's that the records relate. Wells own wellbores. Wellbores own trajectories and marker sets. Marker sets reference stratigraphic columns. Break any one of those links and you've got a folder of JSON, not a data platform.

  • 16,167 MarkerSets — formation tops, each one resolvable back to its parent wellbore in one hop.
  • 1,004 Trajectories — directional surveys with deviated paths, rendered on the map as concave polylines, not straight-line approximations.
  • 6 unmapped wells, 12 trajectory-only wellbores — surfaced honestly. The LAS-ingest path doesn't carry surface coordinates for every record, and we say so.

Rig signal becomes canonical history. On a schedule you control.

Most “OSDU + IoT” demos stop at a Grafana panel. Ours closes the loop: the same MQTT stream that lights up the dashboard also writes WellLog records into the partition every five minutes.

The pipeline: Mosquitto (MQTT broker, TLS on :8883) → Redpanda (the bus) → TimescaleDB (hot history, queryable per-channel) → materializer (cron, 5-minute cadence) → OSDU WellLog records under your legal tag, addressable by /api/storage/v2/records/{id} like every other record in the partition.

53 → 55+ WellLog records and counting in the demo, each one tied back to the exact Timescale window it came from. You can change the cadence, the channels, the legal tag, or turn the materializer off entirely. It's your cluster.

Telemetry panel showing live MQTT channels in Grafana alongside the WellLog records materialized into the OSDU partition with their record ids.
telemetry-panel.png · 1440x900 · 2026-06-18

Two next steps.

Want to see how the records prove themselves to a regulator? → /audit walks through the chain-of-custody, the legal tags, and the exact query a Secretaría auditor would run against your partition.

Ready to scope a 90-day pilot on one of your basins? → /pilot.