Get radar tiles on screen in 5 minutes.
- Docker Desktop 24+ (or Docker Engine + Docker Compose v2)
- 4 GB RAM allocated to Docker (8 GB recommended for full NEXRAD ingestion; 8 GB+ for all 159 stations)
- No GPU required — NEXRAD Level 2 provides native 250m resolution tiles without upscaling
git clone https://github.com/cwdaniel/radrview.git
cd RadrViewcp .env.example .envThe defaults work out of the box. Edit .env if you need to change the port or storage path. See Configuration for all options.
docker compose -f docker/docker-compose.yml up -dThis starts the following containers:
| Container | Role |
|---|---|
radrview-redis |
Frame index, queues, pub/sub |
radrview-ingest-mrms |
NOAA MRMS CONUS ingester |
radrview-ingest-alaska |
NOAA MRMS Alaska ingester |
radrview-ingest-hawaii |
NOAA MRMS Hawaii ingester |
radrview-ingest-mrms-type |
MRMS CONUS precipitation type |
radrview-ingest-mrms-alaska-type |
MRMS Alaska precipitation type |
radrview-ingest-mrms-hawaii-type |
MRMS Hawaii precipitation type |
radrview-ingest-canada |
Environment Canada ingester |
radrview-ingest-dwd |
DWD Germany ingester |
radrview-ingest-nexrad |
NEXRAD Level 2 ingester (all 159 WSR-88D stations, z8+) |
radrview-tiler-1 |
Tile generation worker |
radrview-tiler-2 |
Tile generation worker |
radrview-compositor |
Multi-source tile merger |
radrview-cleanup |
Data retention pruning |
radrview-server |
HTTP tile server + WebSocket |
radrview-situation-api |
Aviation weather intelligence API + WebSocket |
https://radrview.com
MRMS data starts flowing within 30–60 seconds. NEXRAD Level 2 data is automatically enabled — no additional setup or API keys required. The ingester polls the public unidata-nexrad-level2 S3 bucket and begins serving 250 m tiles at zoom 8+ as volume scans become available (~5–10 minutes per station on startup). Station markers on the map show live status in green (active), orange (stale), or red (unavailable).
Check the health endpoint:
curl https://radrview.com/healthA healthy response looks like:
{
"status": "ok",
"sources": {
"mrms": { "status": "ok", "lastFrame": "20260322143000", "ageSeconds": 45, "consecutiveErrors": 0 }
},
"latestComposite": "20260322143000",
"uptimeSeconds": 120
}Check available frames:
curl "https://radrview.com/frames?source=composite&limit=5"docker compose -f docker/docker-compose.yml downTile data is stored in a named Docker volume (radrview-data). It persists across restarts. To clear all data:
docker volume rm radrview-data- Configuration — Tune zoom levels, retention, log levels, and NEXRAD station selection
- API Reference — Integrate tiles, station status, and sweep WebSocket into your own map application
- Sources — Understand what each source covers, including NEXRAD Level 2 details
- Palettes — Choose or create a color palette