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.
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.
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.
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.
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.
What it takes to run all of this in a tab
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.
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.
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.
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.
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.
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.
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.