Fortitude Omnis · R&D

Flood twin of the River DonSheffield · running on your own GPU

A live flood-response digital twin that runs entirely in your browser. Real terrain, real gauge data, and a team of AI agents reasoning over it as the water rises.

DON · GAUGE 2.31 m ▲ rising
The twin

The water you see rising is the water that actually rose

Don Watch rebuilds the Don valley from LIDAR elevation and drapes the real river over it. It replays the November 2019 Sheffield flood from the Environment Agency's own gauge records, hour by hour. Scrub the timeline and the flood tracks the readings. A live mode swaps in the EA's current flood-monitoring feed, so you can point it at today.

Click a landmark and it tells you what it is. Pan around and the district names hold their place like a map. None of it is decoration. Every surface on screen is tied to a real number.

Signature move

Cut the network

Everything runs on the visitor's machine. The 3D and the water run on the GPU through WebGPU. The AI runs there too, an open model loaded straight into the browser. No server, no API key, nothing leaving the device. There's a button marked "cut the network". Press it mid-demo and nothing stops. The model is already on your disk and the flood keeps rising.

The agents

Five agents work the flood while the twin plays

An orchestrator hands the job out and four specialists take a piece each. What they decide shows up on the map in front of you. One thing to be straight about: the numbers come from deterministic hydrology code, not the model. The agents read those numbers, work out what matters, and write it up.

Orchestrator

Runs the pass, delegates the work

Watches the replay clock, decides when to run and which specialist gets what. On the twin: it lights up the agent graph in the top-right HUD as it delegates, and narrates each step in the reasoning feed.

Ingest · Gaugeriver level
Reads
River-level readings for the current instant, straight from the EA gauge record.
On the twin
This is the water. The flood surface sits at the real gauge height and rises and falls as the clock moves.
Ingest · Rainfallcatchment input
Reads
Rainfall totals feeding the catchment upstream of the gauge.
On the twin
Context for the forecast, and the running commentary in the reasoning feed.
Forecastprojection
Reads
The recent trend, projected ahead by deterministic hydrology maths.
On the twin
Where the level is heading next, so you're watching a rise before it lands.
Riskasset triage
Reads
The flood surface against each landmark's own ground height. Care homes, schools, substations.
On the twin
The markers change colour as the water reaches them. Only the ones actually in the water move.
safewatchat riskinundated
Commsbriefing
Reads
Everything the others found, pulled together.
On the twin
A plain-language brief in the feed, the kind a duty officer would actually send out.
Under the hood

What it takes to run all of this in a tab

Rendering

WebGPU, not WebGL

The terrain, the water and the bloom run through three.js on the WebGPU renderer, shaded with TSL. The flood is a level-driven fill that spreads only from the real river.

Inference

The model lives in the tab

An open model in the 1 to 2 billion range loads through WebLLM and runs on your GPU. The backend is pluggable, so it can talk to Ollama or a local NIM instead.

Numbers

Deterministic core

The hydrology, forecast and risk maths are plain TypeScript. The model reasons over the results and writes them up. It never makes the numbers.

Resilience

Works with the wire cut

A service worker caches the app, the model and the data. Once it has run once, it runs offline, on a locked-down laptop, in a field office with no signal.

Geography

All from open data

LIDAR-derived elevation, the River Don and its tributaries, the at-risk sites and the district labels, every one from a public source and cited in the app.

Delivery

A static site

It ships as a Next.js static export and installs as a progressive web app. No backend to run, nothing to keep alive between visits.

Straight about the data

What this is, and what it isn't

The data is public and cited in the app. Gauge and rainfall records from the Environment Agency, the river and landmarks from OpenStreetMap, the terrain from open elevation data. Nothing is invented. Where a series has been reconstructed, it says so on screen.

And to be clear about what it does: Don Watch is a decision-support projection built to show what the technology can do. It is not an official flood warning, and it doesn't pretend to be one.