Skip to content

FahrenheitResearch/bowecho

BowEcho icon

BowEcho

A fast, free, native weather-radar workstation.
Live NEXRAD, international networks, and mobile/research radars — with model soundings, GOES satellite, GLM lightning, and built-in severe-weather analysis, in a single small download. Core workflows use public, keyless data.


BowEcho is a native desktop application for monitoring and analyzing weather radar. It decodes raw radar volumes straight from public open-data sources and renders them with a fast CPU rasterizer that preserves the native super-resolution pixel pattern. It is built in Rust for speed: products switch instantly, panning stays fluid, and first pixels from a fresh volume arrive in well under a second on typical connections.

It starts as a radar viewer and grows into a storm-analysis workstation: dual-pol and derived products, mesocyclone and tornado-debris detection, HRRR/GFS model fields with native skew-T soundings, GOES satellite and lightning, an objective-analysis mesoanalysis suite, and a one-click severe-event explorer. The main live radar, model, satellite, lightning, hazard, and report workflows are built on public data sources with no app account or API key required.

Features

Radar — many networks, one map

  • NEXRAD Level II, live (real-time chunk feed) and full archive.
  • International networks via national open-data feeds: DWD (Germany), FMI (Finland), SMHI (Sweden), DMI (Denmark), CHMI (Czechia), GeoSphere (Austria), SHMÚ (Slovakia), and more.
  • Japan (JMA) via local/bridged feeds.
  • Mobile & research radars natively: DOW, COW, RaXPol — DORADE sweepfiles and deployment zips decode straight to the map. FARM facility radars light a LIVE chip and play the quicklook loop when deployed.
  • Multi-radar overlays with independent refresh, opacity, and visibility.
  • Local file ingest: ODIM H5, CfRadial, JMA GRIB2, DORADE.

Radar products

  • Base / dual-pol: Reflectivity, Velocity, Storm-relative velocity, Spectrum Width, ZDR, CC (ρhv), PHI, KDP — each with a purpose-built color table, GR2 presets, user .pal import, and a colorblind-safe velocity palette.
  • Derived: Composite Reflectivity, Echo Tops, VIL, VIL Density, Azimuthal Shear (LLSD), Radial Divergence, MARC (bow-echo / QLCS damaging-wind precursor), and a low-level severe-gust proxy.
  • Hail: MEHS (maximum expected hail size), POSH (probability of severe hail), POH (probability of any hail), with 0°C / −20°C heights sampled from the loaded model.
  • Velocity dealiasing: two engines — region-based unfolding (validated on real derecho data at 99% residual-fold reduction) and an experimental tilt-cascade unwrapper. Raw-velocity mode always carries a "folds possible" tag plus near-Nyquist warnings.

Severe-weather analysis

  • MDA/TDA mesocyclone & TVS detection with ranked markers and time-association (Stumpf et al. 1998; Mitchell et al. 1998).
  • Experimental TDS-style flag — tornado-debris-like dual-pol signal as a deterministic physics flag (ρhv < 0.82 inside > 30 dBZ echo within 5 km of a ranked circulation), with a magenta debris trail across the loop.
  • Rotation tracks — per-pixel maximum low-level cyclonic azimuthal shear accumulated across a loop.
  • SCIT storm-cell identification, tracking, and +15 / +30 / +45 min motion extrapolation (Johnson et al. 1998).
  • NWS warnings and SPC mesoscale discussions as clickable, product-aware polygons.
  • SPC convective outlooks, storm reports, and surveyed WCM tornado tracks.
  • Live draggable vertical cross-sections (RHI) and a dedicated Vrot couplet tool (click inbound/outbound gates → Vrot, ΔV, separation).

Model data & soundings

  • HRRR (CONUS) and GFS (global) ingested locally from NOAA NOMADS and rendered as map layers.
  • Native skew-T soundings: Alt+click for a point sounding; Ctrl+Alt+hover for streaming follow-mode under the cursor.
  • Model-sampled environment inputs (0°C / −20°C heights) feed the hail algorithms.
  • WoFS (NOAA Warn-on-Forecast) ensemble drapes.

Satellite & lightning

  • GOES-16 / 18 / 19 ABI imagery across supported bands and sectors (CONUS / Full Disk / Meso), with live follow, frame playback, and map drapes. The satellite tools are functional today and the UI is still being unified across sources.
  • GOES GLM lightning flashes, time-synced to the radar loop (free via AWS).

Mesoanalysis (objective analysis)

  • Bratseth successive-corrections OA blending a model surface field against live observations, producing SPC-style mesoanalysis fields locally: SCP, STP, SHIP, EHI, and more — each available as an instant map layer.

Workflow

  • 1 / 2 / 4-pane synced grids with per-pane products and tilts.
  • A unified Layers rail for every map overlay (radar, model, satellite, WoFS, obs, lightning, SPC, warnings, placefiles), drawn bottom-to-top in list order.
  • "Lowest beam here" — right-click to find the three WSR-88Ds with the lowest 0.5° beam over a point.
  • Event Explorer: pick a day, see SPC reports and tornado tracks; click a track to load the best radar at the right minute, with context scans either side.
  • Annotation tools (freehand, box, arrow, crosshair, text, and icon stamps: Low / High / Meso / Tornado / Hail), geo-anchored and included in screenshots and recordings.
  • Screenshots (F12 full window, Shift+F12 map-only), clean-screen mode (Tab), and rebindable hotkeys.
  • Offline built-in dark vector basemap, plus Esri / Maxar imagery and Streets / Topo tiles.

For the science behind every product, see docs/products-guide.md and the in-app Guide (Windows ▸ Guide).

Download

Grab the latest build from the Releases page:

Platform File
Windows x64 bowecho-windows-x64.zip
Windows ARM64 bowecho-windows-arm64.zip
macOS Apple Silicon bowecho-macos-apple-silicon.zip
macOS Intel bowecho-macos-intel.zip
Linux x64 bowecho-linux-x64.tar.gz
Linux ARM64 bowecho-linux-arm64.tar.gz

Windows: unzip and run bowecho.exe — that's it. The exe is fully self-contained (no installer, no runtime dependencies). Builds are not yet code-signed, so SmartScreen may show "Windows protected your PC" the first time: click More info → Run anyway.

Antivirus false positives. Windows Defender's machine-learning heuristics sometimes flag new, unsigned Rust executables with names like Trojan:Script/Sabsik.fl.A!ml or Wacatac.B!ml — the !ml suffix means "ML guess", not a matched virus signature, and it's a well-known false positive for freshly compiled open-source binaries. Every BowEcho release is built by GitHub Actions directly from the tagged source in this repository (the full build log is public under the Actions tab), and each asset ships with a .sha256 checksum so you can verify your download is byte-identical to what CI produced: Get-FileHash bowecho-windows-x64.zip (PowerShell) and compare. If Defender quarantines it, restore + add an exclusion, or report the false positive to Microsoft at https://www.microsoft.com/en-us/wdsi/filesubmission — developer submissions of !ml detections are typically cleared within days. You can always audit and build from source instead (see below).

macOS: unzip and open BowEcho.app. Release apps are signed and notarized when the repository's Apple Developer ID secrets are available. If Gatekeeper still shows a first-run warning after a manual download, right-click the app and choose Open once (or run xattr -d com.apple.quarantine BowEcho.app in Terminal).

Linux: untar and run ./bowecho (needs X11/Wayland + OpenGL, standard on desktops).

Trust and verification

BowEcho releases are produced by GitHub Actions from the exact tagged source in this repository. Each downloadable asset is published with a .sha256 file so users can verify that a local download matches the CI-built artifact.

Get-FileHash .\bowecho-windows-x64.zip -Algorithm SHA256

Compare the hash with the matching .sha256 file on the release page. For signing status, false-positive guidance, and responsible disclosure, see docs/SIGNING.md and SECURITY.md.

Quick start

  1. Launch BowEcho, pick a radar site from the sidebar (or right-click a marker on the map) — the latest volume loads automatically.
  2. The LIVE chip means auto-refresh is on; ARCHIVE/STALE chips tell you when you're not looking at current data.
  3. Arrow keys: ←/→ cycle products, ↑/↓ change tilt. Scroll to zoom, drag to pan.
  4. Quad view: sidebar → Layout 4 for a synced REF / VEL / CC / ZDR grid. Click a pane to focus it; the main (top-left) pane drives everything that isn't pinned.
  5. Inspector: hover for the data card (value, range/azimuth, beam height, Vrot, model value). Shift+click pins it through pan/zoom and loop updates.
  6. Open the in-app Guide (Windows ▸ Guide) for the complete reference.

Why it's fast

  • Native Rust, lean CPU rasterizer, full quality at every zoom.
  • Parallel block-bzip decompression pipelined with parsing — first pixels in tens of milliseconds once data arrives.
  • One bounded render worker serves every pane (no thread oversubscription), with keyed moment/sample caches shared across panes.
  • View-pure geometry (basemap projection, hazard tessellation) is cached per view, so idle repaints cost almost nothing.
  • Honest stage timings in the status bar: lookup, fetch, decode, render, texture, cache.

Data sources

  • NEXRAD Level II — Unidata AWS Open Data buckets (unidata-nexrad-level2 archive + -chunks real-time feed).
  • International — national open-data radar feeds (DWD, FMI, SMHI, DMI, CHMI, GeoSphere, SHMÚ, …).
  • Research / mobile — DORADE sweepfiles and deployment zips (DOW, COW, RaXPol, FARM).
  • Hazards & reports — NWS active alerts (api.weather.gov), SPC mesoscale discussions, convective outlooks, storm reports, and WCM tornado tracks.
  • Model — HRRR & GFS from NOAA NOMADS.
  • Satellite & lightning — GOES-16/18/19 ABI imagery and GLM flashes from NOAA open-data buckets.
  • Core built-in sources use public data with no BowEcho account, no app API key, and no middleman server. Optional custom feeds may have their own access requirements.

Build from source

git clone https://github.com/FahrenheitResearch/bowecho
cd bowecho
cargo run --release -p app_ui --bin bowecho

Rust stable (edition 2024). Linux needs pkg-config libgl1-mesa-dev libx11-dev libxi-dev libxkbcommon-dev.

Disclaimer

BowEcho is an enthusiast/analyst tool, not a warning service. Never use it as a substitute for official National Weather Service warnings and guidance. During severe weather, follow your local NWS office and emergency management.

Credits

  • Annotation graphics vocabulary contributed by GBW Overlay — grayskieswx (YouTube). The map annotation tools' front glyphs, hatch fills, warning-polygon styling, and icon designs reimplement his renderer's geometry in Rust, shared by the author for this purpose.
  • Research-radar color tables ("research" badge in the pickers) from GURT V3 — the Graphic Utility Radar Toolkit by ambient330 (Graphic-Utility-Radar-Toolkit-V3, MIT license), used with appreciation. The GURT reflectivity, velocity, spectrum width, CC, ZDR, and KDP ramps are ported value-for-value, tuned for DOW/COW mobile-radar (X-band) work.

License

Dual-licensed under MIT or Apache-2.0, at your option.

About

Fast, free, native NEXRAD Level II radar viewer — live storm-scale radar in a single small download

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors