Weather plugin for Hermes Agent.
It provides 13 tools for observations, forecasts, alerts, model imagery, radar, soundings, calculations, and ECAPE. The plugin is packaged for Hermes plugin autodiscovery and bootstraps its Rust backends on first use instead of requiring users to clone and build multiple repos by hand.
bash`r`npip install git+https://github.com/FahrenheitResearch/hermes-weather-plugin.git`r`n
Then start Hermes normally:
hermesHermes should auto-discover the plugin through the Python entry point.
The plugin is Python-first, but several heavy paths use Rust binaries or Rust-backed Python packages.
- Data tools call NWS, SPC, METAR, and Open-Meteo directly from Python.
wx_model_imageusesrusbiefor model access, tries the newerwrf-rustrender path first, and falls back torustweatherwhere needed for GRIB model-map rendering.wx_radar_imageandwx_storm_imageuse a radar backend binary.wx_ecapeuses theecape-rsrunner.wx_calcandwx_soundingusemetrustin-process.
If a required Rust binary is missing, the plugin will try to build it on first use into:
~/.hermes/weather/bin
and cache downloaded source/build work under:
~/.hermes/weather/src
The plugin can bootstrap these binaries automatically:
radar-renderfromrustdarrun_casefromecape-rs- bundled
nexrad-render-cli
This requires a working Rust toolchain (cargo, rustc) on the user machine unless they point the plugin at prebuilt binaries.
If you already have binaries installed, set optional overrides:
export RADAR_BACKEND=rustdar
export RADAR_RENDER_PATH=/path/to/radar-render
export NEXRAD_RENDER_PATH=/path/to/nexrad-render-cli
export ECAPE_RS_RUNNER=/path/to/run_caseWindows PowerShell:
$env:RADAR_BACKEND = 'rustdar'
$env:RADAR_RENDER_PATH = 'C:\path\to\radar-render.exe'
$env:NEXRAD_RENDER_PATH = 'C:\path\to\nexrad-render-cli.exe'
$env:ECAPE_RS_RUNNER = 'C:\path\to\run_case.exe'| Tool | What it returns |
|---|---|
wx_conditions |
Current observed conditions |
wx_forecast |
NWS 7-day or hourly forecast |
wx_alerts |
Active NWS alerts |
wx_metar |
Raw and decoded METAR |
wx_brief |
Conditions + short forecast + alert count |
wx_global |
Global weather via Open-Meteo |
wx_severe |
SPC categorical outlook + active watches |
| Tool | What it returns |
|---|---|
wx_model_image |
Model field PNG rendered with wrf-rust |
wx_radar_image |
NEXRAD Level 2 radar image through the configured radar backend |
wx_storm_image |
Reflectivity image with storm-analysis overlays and metadata |
| Tool | What it returns |
|---|---|
wx_calc |
Rust-backed meteorological calculations through metrust |
wx_sounding |
Model sounding plus derived parameters |
wx_ecape |
ECAPE, NCAPE, CAPE, CIN, LFC, EL, storm motion, optional parcel path |
Verified model subsets currently exposed in Hermes:
wx_model_imageaigfs,gdas,gefs,gfs,graphcast,hiresw,hrrr,hrrrak,nam,nbm,rap
wx_soundinggdas,gfs,graphcast,hrrr,hrrrak,rrfs
wx_ecape- same verified profile subset as
wx_sounding
- same verified profile subset as
Models outside those sets may exist lower in the backend stack, but they are not exposed until their Hermes extraction path is verified.
Hermes keeps a stable radar tool contract and routes it through the configured radar backend.
Current backends:
rustdar(default)nexrad
Supported radar products:
- both backends:
ref,vel,sw,zdr,rho,phi rustdaronly:srv,vil
wx_sounding downloads a verified model pressure-level profile and computes:
- CAPE/CIN: surface-based, mixed-layer, most-unstable
- LCL/LFC/EL
- LI, K-index, Total Totals
- bulk shear and SRH
- precipitable water, lapse rates, freezing level
- standard pressure-level profile output
wx_ecape runs the parity-verified ecape-rs runner on the same profile.
Defaults:
cape_type=most_unstablestorm_motion_type=right_movingpseudoadiabatic=true
Supported storm-motion modes:
right_movingleft_movingmean_winduser_defined
Set include_parcel_profile=true to return the aligned parcel path arrays.
This package is intended to be installed with pip from GitHub, not copied manually into ~/.hermes/plugins.
The package exposes the Hermes plugin entry point directly, ships plugin.yaml, ships the bundled nexrad-render-cli source, installs the bundled skill on first load, and bootstraps Rust binaries on demand.
Plugin (Python)
|- Data: requests -> NWS / SPC / METAR / Open-Meteo APIs
|- Model images: rusbie -> wrf-rust
|- Radar: rustdar or bundled nexrad-render-cli
`- Calculations: metrust + ecape-rs
Python package dependencies:
requestsnumpymetrustrusbierustweatherwrf-rust
Optional system dependency for first-use binary builds:
- Rust toolchain (
cargo,rustc)
- Solarpower07 for model imagery color tables and product styling
metrustfor Rust-backed meteorological calculationsecape-rsfor the parity-verified ECAPE runner- Hermes Agent by Nous Research