About OpenSwells
Free, open-source surf reports and swell forecasts · GitHub
A free, open-source surf report and 16-day swell forecast for 170+ locations. Reports and forecasts come from The Environmental Modeling Center Operational Wave Models. New forecasts are received every 6 hours.
This project was previously a 3-day forecast for my local beach using an LSTM network, and later graph neural networks (site, github). I have since expanded it to a 16-day forecast for 170+ locations thanks to the Environmental Modeling Center and NOAA.
For local development, two repos work together: grib-parse-collect downloads
the wave model GRIB files and renders the forecast layers, and
open-swells-app serves the map.
Clone them side by side — the --local flag copies generated layers
into the sibling open-swells-app/data/forecast/ directory.
$ git clone https://github.com/open-swells/open-swells-app$ git clone https://github.com/open-swells/grib-parse-collect$ cd grib-parse-collect && ./run.sh --local --verbose$ cd ../open-swells-app && go run ./server- Go to
localhost:8081
- open-swells-app — Go 1.21+. Runs without configuration
(
PORT,DB_PATH, andFORECAST_DIRare configurable). - grib-parse-collect — Python 3.13+ managed with
uv (pygrib, numpy, scipy, matplotlib, shapely, geojson),
plus
rsyncfor the--localcopy step. --verboseshows a progress bar while the parser runs; the full log is written togrib-parse-collect/logs/grib-run.log. A full 16-day run processes 129 forecast hours — use--limit <n>for a quick check.
- Go + gin-gonic
- Tailwind CSS
- MapLibre GL (maps)
- D3.js (charts)
- EMC Operational Wave Models