Self-Hosted Weather Radar

LibreWXR is a free, open-source weather radar API you can host yourself. It's a drop-in replacement for Rain Viewer with real radar composites, a chain of regional high-resolution NWP models, ECMWF IFS for worldwide coverage, and global WMO weather alerts.

Loading frames...
Loading...

Features

Rain Viewer Compatible

Drop-in v2 API replacement. Works with any app or library that supports Rain Viewer tiles.

Multi-Region Radar

Real radar composites via NOAA MRMS (US), MSC (Canada), EUMETNET OPERA (Europe, 24 countries) plus DPC for native Italian coverage, MARN/SNET (El Salvador), CWA QPESUMS (Taiwan), JMA HRPN (Japan), and MET Malaysia (Peninsular Malaysia + Borneo + Singapore).

Regional NWP Chain

High-resolution rapid-refresh NWP layered specificity-first: HRRR (CONUS + Alaska), HRDPS (Canada), DMI DINI + ICON-EU (Europe), AROME Outre-Mer (Caribbean, French Guiana, SW Indian Ocean, New Caledonia, French Polynesia), WRF-SMN (Argentina), and JMA MSM (Japan + Korean Peninsula + Taiwan). Soft-feathered at every domain edge.

Global ECMWF IFS Coverage

ECMWF IFS 9 km data forms the global base of the NWP chain — covering every pixel the regional models don't reach.

Real Satellite Imagery

NOAA GMGSI hourly global mosaic (GOES-East + GOES-West + Meteosat-9 + Meteosat-10 + Himawari-9), rendered as a VIS-over-LW composite with a natural day/night terminator. Daytime shows continents and clouds as they appear from space; night side falls through to longwave IR cloud tops.

Weather Alerts

Global WMO CAP weather alerts (severe storm warnings, watches, advisories) returned as GeoJSON for any map library. NWS point-endpoint integration for US locations surfaces non-polygon alerts too.

Precipitation Nowcasting

Experimental 60-minute forecast using optical flow radar extrapolation with configurable blend modes: pure radar, blended radar-to-model, or pure model. The model side is taken from the active NWP chain — HRRR over CONUS, ICON-EU/DINI over Europe, WRF-SMN over the S. American Cone, JMA MSM over Japan + adjacent East Asia, IFS elsewhere.

Motion Arrows

Dark Sky-style arrows showing storm movement direction and speed, derived from optical flow. Available globally for both radar and ECMWF data.

Snow Detection

Per-pixel snow and rain classification. Regional NWPs (HRRR, WRF-SMN, DMI DINI, ICON-EU, JMA MSM) classify natively from their own 2-metre temperature field; ECMWF IFS snowfall ratio fills everywhere else.

13 Color Schemes

All Rain Viewer color schemes (NEXRAD III, Universal Blue, TITAN, Dark Sky, Rainbow, and more), the discrete 5-dBZ stepped Datameteo Valerio scale contributed by Datameteo Educational, and the high-resolution Viper HD palette by Ben Mitchell of WxTools, plus the MRMS CREF operational palette and the 33/40 Max Storm stepped palette.

Multi-Worker Deployment

Optional production mode splits the data pipeline from a pool of render workers that share state via memmap. Scales tile rendering across every core in the rack — no GIL bottleneck.

Memory Efficient

Radar frames, NWP grids, cloud, and nowcast data all use memory-mapped files. Smart fetch skips redundant downloads, saving ~90% of bandwidth per cycle.

Privacy First

Zero client logging. No IPs, user agents, or request details are recorded. You control the data.

No GDAL Required

Pure Python with numpy. No system geo libraries needed. Simple Docker deployment.

Free & Open Data

Radar data from this API is available under CC-BY-4.0. Free to use with attribution to LibreWXR.

Quick Start

Deploy your own instance with Docker in under a minute. Pick the mode that matches your hardware:

Single-container (personal / small-scale):

git clone https://github.com/JoshuaKimsey/LibreWXR.git
cd LibreWXR
cp .env.example .env
docker compose up -d

One process handles fetching, nowcasting, and tile rendering. Best for laptops, small VPSes, and home servers.

Multi-worker (production / multi-core):

git clone https://github.com/JoshuaKimsey/LibreWXR.git
cd LibreWXR
cp .env.example .env
docker compose -f docker-compose.multiworker.yml up -d

The data pipeline runs as a sidecar process while N tile-server workers share state via memmap — scaling tile rendering across every core in the rack with no GIL bottleneck. Defaults target an 80-core / 32 GB rack.

Either way, the server starts in about 6 seconds and begins serving tiles immediately. Historical frames backfill in the background.

Using the API

LibreWXR exposes a Rain Viewer v2 compatible API, plus a few extensions of its own (weather alerts, motion arrows). Point any Rain Viewer client at your instance:

# Metadata endpoint (timestamps + tile paths)
GET https://api.librewxr.net/public/weather-maps.json

# Radar tile
GET https://api.librewxr.net/v2/radar/{timestamp}/{size}/{z}/{x}/{y}/{color}/{smooth}_{snow}.png

# Satellite tile (NOAA GMGSI VIS-over-LW composite)
GET https://api.librewxr.net/v2/satellite/{timestamp}/{size}/{z}/{x}/{y}/0/0_0.png

# Weather alerts (GeoJSON FeatureCollection — global by default, lat+lon, or bbox)
GET https://api.librewxr.net/v2/alerts
GET https://api.librewxr.net/v2/alerts?lat=39.7&lon=-104.9
GET https://api.librewxr.net/v2/alerts?bbox=-95,30,-90,35

# Health check
GET https://api.librewxr.net/health

For Leaflet, the tile URL pattern is:

# Radar tiles
https://api.librewxr.net/v2/radar/{timestamp}/256/{z}/{x}/{y}/10/1_1.png

# With motion arrows (light for dark maps, dark for light maps)
https://api.librewxr.net/v2/radar/{timestamp}/256/{z}/{x}/{y}/10/1_1.png?arrows=light

# Satellite tiles (timestamps from satellite.infrared in metadata)
https://api.librewxr.net/v2/satellite/{timestamp}/256/{z}/{x}/{y}/0/0_0.png

See the full documentation for a web integration guide, configuration reference, and Rain Viewer migration instructions. Try the interactive examples to see LibreWXR in action, or browse the source on GitHub.

Data Sources

Radar composites:

Regional NWP models (layered ahead of global IFS):

Global base layer:

Satellite imagery:

Weather alerts:

All data sources are freely available from government-funded institutions. ECMWF IFS data is provided by Open-Meteo under the CC-BY-4.0 license.

Data Licensing

API Data (CC-BY-4.0, with one carve-out) — Radar data, satellite tiles, and all other data served by the public LibreWXR API at api.librewxr.net is available under the Creative Commons Attribution 4.0 International (CC-BY-4.0) license. You are free to use, share, and adapt this data for any purpose, including commercial use, provided you give appropriate credit to LibreWXR. The underlying data from government agencies (NCEP MRMS, IEM, ECCC, EUMETNET OPERA, MARN/SNET El Salvador, CWA Taiwan, JMA Japan, MET Malaysia, ECMWF IFS, NOAA GMGSI) is public domain or freely available under their respective terms — the CC-BY-4.0 license applies to the aggregated composite data as served by this API instance, not to the original government data.

Italy (ITCOMP region only) is the exception: tiles that include native Italian radar data from DPC inherit the upstream CC-BY-SA 4.0 share-alike obligation. If you redistribute or build derivative works from DPC-derived tiles, you must do so under the same CC-BY-SA 4.0 terms and credit "Radar-DPC" as the data source. This is the only source in the LibreWXR stack with a share-alike clause; every other layer is permissive.

Software (AGPL-3.0-or-later) — The LibreWXR software itself is licensed under AGPL-3.0-or-later. If you modify and host LibreWXR, you must make your source code changes available under the same terms.

Self-Hosted Instances — You may choose your own data licensing terms for data served by your own LibreWXR instance. The AGPL-3.0-or-later license for the software applies regardless.

Open Source

LibreWXR is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0). Contributions are welcome on GitHub.