Windfenster: open-source wind forecast and live wind map for kitesurfing, windsurfing and wing foiling
Self-hosted wind forecast for water sports: measured wind, ten weather models and an animated wind map, for every wind station and any spot on earth.
Each station shows what it measures now, what the models predict for ten days, and which model was closest to the measurements there.
An open-source alternative to Windfinder and Windy: one Docker container, no cloud, no tracking, no API key.
curl -O https://raw.githubusercontent.com/firsttris/windfenster/main/compose.yaml && docker compose up -dInstall • Features • Screenshots • Alternatives • FAQ • Documentation
Kiters and windsurfers check three apps before every session: one for the forecast, one for the live wind at the spot, one for the map. None of them says which weather model is actually right at your spot, and none runs on your own server.
- Know which model to trust: every model is checked against the station's measurements every hour; the page opens with the one that was closest there in the last 30 days.
- Forecast, measured and TAF in one table: see at a glance whether today's forecast is holding, hour by hour.
- A wind map that is fine where it matters: ICON-D2 at 2.2 km blended into ICON global and ECMWF without an edge, worldwide, ten days ahead.
- "It works from 2 to 5 pm": your spot's wind directions and your kites and wings turn the forecast into a window, with a push or e-mail when it comes.
Runs on a Linux server, a NAS (Synology, Unraid) or a Raspberry Pi 4/5, amd64 and arm64; used in any browser on desktop and phone, installable as an app.
With Docker Compose:
mkdir windfenster && cd windfenster
curl -O https://raw.githubusercontent.com/firsttris/windfenster/main/compose.yaml
docker compose up -dOpen http://localhost:8080, sign up, and make yourself admin with
docker compose exec windfenster windfenster admin you@example.org. The first station lists, measurements and model runs come within
minutes; the map's basemap and relief follow in the background. Podman Quadlet, a reverse proxy or
Cloudflare Tunnel, settings, disk space and backups are in the
installation guide.
- Every METAR airport in the world and every DWD wind station, plus any point by map click or search.
- The ten days at a glance: three-hourly wind bars with gusts, main direction, strongest wind and the models' agreement per day.
- Day cards: wind as a growing bar with the gust under it, direction, your gear, measured and TAF to compare, weather; hourly for today and tomorrow.
- Ten models (ICON-D2, ICON-CH1, ICON-CH2, ICON-2I, AROME, HARMONIE, ICON-EU, ECMWF, UKMO, GFS) and the Windfenster mix, weighted by how well each model hit at the station.
- Knots, m/s or km/h, German and English, light and dark.
- Live wind every 10 minutes, the raw METAR translated, the TAF in plain words.
- Model ranking per station ("Who hits here?") and automatic model choice from 30 days of verification.
- History of the last ten days and ten years of wind statistics per month (wind rose, windy days).
- Water levels from PEGELONLINE and the estimated current on the Rhine.
- Three models at once, the finest on top, blended without seams; wind or gusts.
- WebGL particles that move with the map when you pan and zoom, colour field in the Windfinder scale.
- Stations with their live wind, water gauges, a spot card with the coming hours, timeline, keyboard shortcuts, shareable links.
- Own basemap from OpenStreetMap with relief, cut by the server itself: no map service, no key.
- Passkeys or e-mail and password.
- Saved spots with the wind directions that work there.
- Your kites, wings, sails: the forecast shows what fits each hour.
- Wind alarms ahead from the forecast or live from the station, by Web Push and e-mail.
- See what the server does: background tasks, data sources, the Open-Meteo budget, disk and warnings on one page.
- Change it without a restart: models, refresh, basemap and relief (download now, ask first or never), limits; whatever the environment sets stays locked.
- Accounts: open sign-up, invite only or closed; disable, sign out, export, delete.
- Care: database backup, alarm deliveries, caches, log, legal notice and privacy policy, and a note when a new version is out.
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
|
Windfenster is made for riders who want the forecast, the measurements and the map in one place, on their own server.
| What it is | Where Windfenster differs | |
|---|---|---|
| Windfinder | wind forecasts and live stations, app and website | open source and self-hosted; shows which model was right at each station; measured and TAF in the forecast table |
| Windy | weather map with many models and layers | focused on wind for water sports; ICON-D2 blended into the global models; spot alarms with your gear |
| Windguru | forecast tables per spot | model ranking from verification instead of choosing by hand; live wind and history next to it |
| Open-Meteo | open weather API | Windfenster is an app on top of it, adding measurements, verification, a map and alarms |
Yes: Windfenster is AGPL-licensed, runs as one Docker container and uses only open data. More in the FAQ.
Windfenster tells you: it compares every model with the station's measurements every hour and ranks them per station. How it works.
Yes, by push and e-mail, ahead from the forecast or when the station measures it, optionally only when your gear fits. Alarms.
Yes: the map and the global models cover the world, and every airport with METAR reports is a station. The 1.5–2.2 km models cover Europe.
Yes, for private use. Open-Meteo's free API is non-commercial; commercial instances need an Open-Meteo subscription or their own Open-Meteo.
The full documentation, with search, is at firsttris.github.io/windfenster.
| User guide | station pages, the forecast, the map, spots and alarms |
| Installation | Docker Compose, Podman Quadlet, reverse proxy, Cloudflare Tunnel, backups |
| Configuration | every setting |
| Architecture | how the pieces fit together |
| The wind map | from GRIB2 to WebGL particles |
| Forecasts and models | models, verification, ranking, the mix |
| API | the JSON API |
| Development | building, checks, tests, releases |
Requires Rust (stable) and Bun 1.4 or newer.
git clone https://github.com/firsttris/windfenster && cd windfenster
bun install
bun run dev # server on :8080, web app with hot reload on :5173Rust (axum, SQLite, sqlx) with the React app (Vite, TanStack Router and Query, Tailwind, MapLibre, WebGL2) built into one binary. Architecture, tests and releases: Development.
Issues and pull requests are welcome. A good bug report names the station or place, the time and what you expected; for the map, the browser and graphics card. Please run the checks listed in Development before opening a pull request.
Weather data by Open-Meteo.com (CC BY 4.0), DWD Open Data (CC BY 4.0) and ECMWF open data (CC BY 4.0); METAR and TAF from the Aviation Weather Center; water levels from PEGELONLINE; map data © OpenStreetMap contributors via Protomaps; relief from Mapterhorn. Every source with its licence: Data sources.
⭐ Like Windfenster? A star on GitHub helps others find it.
🐛 Report a bug · 💡 Request a feature
License: AGPL-3.0 · © Tristan Teufel and contributors
Changed versions you pass on or run for others must offer their source code under the AGPL; a commercial license without these obligations is available via teufel-it.de.
Windfenster is not affiliated with Windfinder, Windy, Windguru, Open-Meteo, the Deutscher Wetterdienst or any other weather service.






