Kestrel Energy
A telemetry platform that keeps up with the grid
Kestrel Energy balances 1,900 MW of wind and battery storage across Norway and the UK on data that used to arrive twelve seconds late. We replaced a tag-licensed historian with a streaming platform that carries 2.8 billion readings a day and lands them in under a second.
- Client
- Kestrel Energy
- Sector
- Energy
- Run
- 10 months · Sep 2024 – Jun 2025
- Filed
- 2025-06-24
- Capability
- Data engineering · Cloud migration · Reliability engineering
- Stack
- Rust · Apache Flink · Apache Kafka · TimescaleDB · OPC UA · Kubernetes · Azure · Grafana · Terraform

Impact
2.8B
Meter and SCADA readings ingested per day
900 ms
Sensor-to-control-room latency, down from 12 seconds
£640k
Annual historian licence and colocation cost removed
Challenge
Energy
10 months · Sep 2024 – Jun 2025
The historian charged per instrumented tag, and Kestrel had hit its 250,000-tag ceiling eighteen months earlier — new turbines were being commissioned with telemetry switched off to stay under the limit. Control-room operators made balancing decisions on data that averaged twelve seconds old, which is an eternity when you are bidding into a fifteen-minute settlement period. Monthly regulatory submissions to NVE and Ofgem took two analysts nine working days of spreadsheet assembly, and the numbers did not always reconcile with the traded position.
Solution
We wrote the edge collectors in Rust because they run on constrained gateways at sixty sites and must buffer through a satellite link outage without dropping a reading; each one holds seventy-two hours locally and replays in order. Apache Flink does windowing and validation in the stream, so bad sensor data is quarantined before it reaches a dashboard rather than after an operator has acted on it. Eleven years and fourteen terabytes of historian archive were backfilled into TimescaleDB and reconciled against the original exports row by row. Regulatory reporting became a query: nine days of analyst time is now a forty-minute scheduled job with a signed export. The OT network stayed segmented to IEC 62443 zones throughout — collectors push out, nothing reaches in.
Plates

Plate 01Sensor to control room, with validation before display. 
Plate 02Latency is displayed on the wall so it stays everyone’s problem. 
Plate 03Fourteen terabytes reconciled year by year before switchover.
Testimony
They spent the first three weeks reading SCADA logs rather than talking to us. The plan they came back with named the two failure modes that had actually been costing us money, and ignored the four we had been arguing about internally for a year.
Rohan Agarwal · Head of Grid Operations Technology, Kestrel Energy5 out of 5