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

Quality-controlled radar composites via NOAA MRMS (US, Alaska, Hawaii, Puerto Rico, Guam) with MSC blending (Canada) and OPERA (Europe, ~155 radars across 24 countries).

Regional NWP Chain

High-resolution rapid-refresh NWP layered specificity-first: HRRR (CONUS + Alaska), HRDPS (Canada), DMI DINI + ICON-EU (Europe), AROME Antilles (Caribbean), and WRF-SMN (Argentina). 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, plus snow detection and the cloud satellite layer.

Satellite Imagery

IFS-derived cloud cover tiles approximating infrared satellite imagery. Up to 12 hours of hourly animation with persistent disk caching.

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. Uses HRRR over CONUS, ICON-EU/DINI over Europe, 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 using ECMWF IFS snowfall data.

9 Color Schemes

All Rain Viewer color schemes including NEXRAD III, Universal Blue, TITAN, Dark Sky, and more.

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 (IFS-derived cloud cover)
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}/7/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}/7/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:

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) — 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, ECMWF IFS) 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.

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.