Forecast model feed reference
Every builder supplies the same surface fields, five fields on each pressure
level — plus vertical velocity and per-level cloud fraction where the
transport carries them — and model terrain elevation to the shared
derivation. Feeds that publish them also supply the optional science
fields: 10 m gusts, surface-based CAPE and CIN, model boundary-layer
height, and layered cloud. Access, resolution, cadence, horizon, retention,
and field semantics vary by model; each model’s curated pressure-level set
and science-field capabilities are declared in
models.json.
Measurements use live service responses checked through 2026-08-11. When provider documentation and live capabilities disagree, use the live response and update the verification date.
Feed summary
The catalogue columns — slug, provider, kind, grid, cadence, horizon, and
status flags — render from models.json at build time. Transport and
verification dates are this page’s own record; an em dash means no dated
per-feed verification is recorded here and the model’s section below holds
what is known.
Scroll horizontally to see all columns.
| Model | Provider | Kind | Grid | Runs used (UTC) · step | Horizon | Transport | Verified |
|---|---|---|---|---|---|---|---|
| HRDPS Westhrdps-westexperimental feed | ECCC | deterministic | 1 km | 00/12Z · 1 h step | 48 h | Alpha Datamart, whole-domain GRIB2 | — |
| HRDPS continentalhrdps-continental | ECCC | deterministic | 2.5 km | 00/06/12/18Z · 1 h step | 48 h | Datamart, whole-domain GRIB2 | 2026-08-08 |
| HRRR CONUShrrr-conus | NOAA | deterministic | 3 km | 00/06/12/18Z · 1 h step | 48 h | Cloud bucket, byte-ranged GRIB2 | 2026-08-11 |
| RDPSrdps | ECCC | deterministic | 10 km | 00/06/12/18Z · 1 h step | 84 h | Datamart, whole-domain GRIB2 | 2026-08-08 |
| GDPSgdps | ECCC | deterministic | 15 km | 00/12Z · 3 h step | 240 h | Datamart, whole-domain GRIB2 | 2026-08-08 |
| GFSgfs | NOAA | deterministic | 25 km | 00/06/12/18Z · 3 h step | 384 h | Cloud bucket, byte-ranged GRIB2 | 2026-08-11 |
| NAMnamretires 2026-10-06 | NOAA | deterministic | 12 km | 00/06/12/18Z · 1 h step | 84 h | noaa-nam-pds, byte-ranged GRIB2 | 2026-08-08 |
| NAM CONUS nestnam-conus-nestretires 2026-10-06 | NOAA | deterministic | 3 km | 00/06/12/18Z · 1 h step | 60 h | noaa-nam-pds, byte-ranged GRIB2 | 2026-08-08 |
| REPSreps | ECCC | ensemble | 10 km | 00/06/12/18Z · 3 h step | 72 h | Datamart, all-members GRIB2 | 2026-08-08 |
| GEPSgeps | ECCC | ensemble | 50 km | 00/12Z · 3 h step | 384 h | Datamart, all-members GRIB2 | 2026-08-08 |
| RAQDPS wildfire smokeraqdpsexperimental feed | ECCC | deterministic · smoke | 10 km | 00/12Z · 1 h step | 72 h | Datamart, whole-domain GRIB2 | — |
| GOES-18 downward shortwavegoes18-dsr | NOAA | observation | 3 km | 10 min granules | — | noaa-goes18, whole NetCDF granules | 2026-08-10 |
| GOES-18 aerosol optical depthgoes18-aod | NOAA | observation | 3 km | 10 min granules | — | noaa-goes18, whole NetCDF granules | 2026-08-10 |
| RRFSrrfsadoption staged | NOAA | deterministic | 3 km | hourly cycles | 84 h (00/06/12/18Z), 18 h others | noaa-rrfs-pds prototype, byte-ranged GRIB2 | 2026-08-08 |
| IFS open data—evaluated, not adopted | ECMWF | deterministic | — | 00/12Z | 360 h | ECMWF open data | — |
| RAP—evaluated, not adopted | NOAA | deterministic | 13 km | hourly cycles | 21 h; 51 h at 03/09/15/21Z | Cloud bucket, byte-ranged GRIB2, two files | 2026-08-08 |
| ICON global—evaluated, not adopted | DWD | deterministic | ~13 km | 00/12Z · hourly to 78 h, then 3-hourly | 180 h (00/12Z), 120 h (06/18Z) | DWD open data, bz2 GRIB2 per field | 2026-08-08 |
ECCC Datamart transport — shared facts
Five of the six ECCC forecast models below — HRDPS continental 2.5 km, RDPS, GDPS, REPS, and GEPS — read whole-domain GRIB2 from the main Datamart; HRDPS West 1 km reads the same way from the separate alpha Datamart. The earlier GeoMet WCS transports of HRDPS continental, RDPS, GDPS, and REPS are retired (GEPS was Datamart-only from the start).
| Fact | Value |
|---|---|
| Hosts | dd.weather.gc.ca (primary) · hpfx.collab.science.gc.ca (mirror, identical paths) · dd.alpha.weather.gc.ca (alpha Datamart, the 1 km feed — a third, unmirrored host: its tree is not date-rooted and does not exist on hpfx) |
| Tree | https://dd.weather.gc.ca/YYYYMMDD/WXO-DD/<model path>/HH/hhh/ — date-rooted; the old undated trees are gone from the root listing |
| Filenames | deterministic files use the MSC scheme YYYYMMDDTHHZ_MSC_<MODEL>_<Var>_<Level>_<Grid>_PThhhH.grib2 |
| Fetch unit | the whole-domain file — no .idx sidecars exist, deterministic files are one GRIB message per file, and there is nothing to range against, so NOAA-style byte-ranging is impossible |
| Retention | ~30 days on dd.weather.gc.ca, ~51 days on the hpfx.collab.science.gc.ca mirror. The docs claim 30-day retention on both; live root listings show dd’s oldest date 29 days back against hpfx’s 51 |
| Host selection | the forecast engine selects the host per invocation via METEO_DATAMART_BASE |
| Rate limits | the usage policy caps an application at 86,400 requests/day (about 1 request per second, averaged) and documents no HTTP connection ceiling — the 500-connection limit applies to AMQP clients only |
| Packing | grid_jpeg; ecCodes 2.48.0 decodes it |
| Verified | 2026-08-08 — HRDPS and GEPS directory listings for the day were filename-identical across the two hosts, and the builders’ probe URLs answered 200 on hpfx |
The mirror is MSC’s documented alternative server and suits backfill and load-spreading: “bandwidth multiplied by 10” during peak demand, but no 24/7 redundancy on its link (“best effort”), so consumers should be able to fall back to dd.
Shared quirks, verified 2026-08-08:
- Polling etiquette: the usage policy asks for a meaningful User-Agent,
no
no-cacheheaders, and no directory-listing polls to detect new data — AMQPS is the sanctioned push channel;wget/curlare “reserved for ad hoc data retrieval”. The builders send a project User-Agent and probe availability with one HEAD of a concrete file per model per tick, never a listing; a worst-case day with every model landing fresh runs each check stays under the daily budget. - Per-element reads re-decode the whole field: every
codes_get_double_elementcall re-decodes the entire field internally (~0.21 s per call on HRDPS’s 3.3M points, identical to a fullcodes_get_values) — samplers decode a message’s values once and index into the array, never extract point by point. - Terrain is published at PT000 only for RDPS, GDPS, REPS, and GEPS —
builders fetch it from the
000/directory even when hour 0 is otherwise skipped. HRDPS publishes terrain every hour. - HRDPS encodes GRIB
forecastTimein minutes where RDPS/GDPS use hours — the builders take valid times from the schedule and never read the raw key. - Gusts come in two semantics per step (verified by decode): an
instantaneous 10 m gust (paramId 228029,
stepType=instant) and an hourly Max/Min pair (paramId 237318, PDT 8). The Max files’ interval metadata is broken (lengthOfTimeRange=0), so the window semantics were established empirically on full fields: Max at PT hh is the maximum model-timestep gust over the hour (hh−1, hh] — Max24 < Max23 at ~46–56 % of points (not a run-length max), Max24 ≥ instant24 at 100.0 % of points, and Max24 > max(instant23, instant24) at 59 % (the max is over internal timesteps, not hourly outputs). The builders publish the hour-max aswindGustMps(capabilitiesgust: "hourMax"— the pilot’s “gusting to”) and re-assert Max ≥ instant at the sampled sites on every build. The instantaneous file runs systematically lower (field means 5.03 vs 6.59 m/s at PT024). - CAPE is surface-based only, with in-band sentinels: all four models
publish GRIB 0-7-6 CAPE (the 1 km’s
CAPE_ETAL_10000departs eta = 1.0 — the lowest model level, i.e. surface-based); RDPS/GDPS add 0-7-7 CIN; the HRDPS family has no CIN at all. “Not computed” is encoded in the values: 9999 in RDPS/GDPS CAPE and CIN (27–38 % of the grid on the verification day, collocated), −1 in HRDPS-family CAPE (21–33 %). The builders mask sentinels to absence before anything reaches a document — an unmasked GDPS field “means” CAPE 4 152 on a naive average. - PBL height is metres above ground: paramId 159
blh, plain metres AGL — night-side minima of ~2 m are only possible AGL — at every populated step. Renderers must add model terrain before plotting it on an MSL altitude axis. - Cloud is total-only: no low/mid/high layers and no per-pressure-level
cloud fraction exist anywhere on Datamart for these models (every
cloud-matching filename in the 00Z listings inventoried 2026-08-08;
CloudWater_EAtmis column-integrated kg/m², not a fraction).
HRDPS continental 2.5 km — supported
Environment and Climate Change Canada’s High Resolution Deterministic Prediction System.
| Fact | Value |
|---|---|
| Grid | 2.5 km rotated lat-lon (2540 × 1290 at 0.0225°) over nearly all of Canada |
| Runs | 00/06/12/18Z, 48 hourly steps |
| Availability | the run streams out in forecast-hour order roughly T+2:55 → T+3:55 (verified from listing mtimes) |
| Path | model_hrdps/continental/2.5km |
| Variable names | old-style tokens (TMP_ISBL_0850, SHTFL_Sfc, WDIR_AGL-10m) |
| Levels | 28 isobaric levels published per field; the build samples the curated 14-level 1015–600 hPa band |
| Science fields | GUST/GUST-Max_AGL-10m, CAPE_Sfc (−1 sentinel, no CIN), HPBL_Sfc — hourly including hour 000 |
| Cost | ~166 MB per forecast step for the curated field set, ~7.8 GiB per run, four runs a day; the science fields add ~0.4 GiB per run |
| Verified | 2026-08-08 |
Quirks:
- Omega is sparse:
VVELexists at 250/500/700/850/1000 only, soverticalVelocityPaSis published on the three curated levels that carry it (1000/850/700). - A true 2 m dew point exists (
DPT_AGL-2m), which GeoMet never exposed. Level moisture remains a dew-point depression (DEPR, Td = T − DEPR) and the depression clamps at exactly 30 K — dew points in very dry air saturate at T − 30. WDIR/WINDare earth-relative despite the rotated grid — verified at four points againstUGRD/VGRDrotated through the grid transform, agreeing to ≤0.3° where the unrotated component direction was off by up to 32°. Wind is consumed directly with no rotation.- Heat fluxes are instantaneous:
SHTFL_Sfc/LHTFL_Sfcdecode as paramId 231, W/m² — they feed w* with no differencing. - Precipitation is a fixed window:
APCP-Accum1h_Sfc; mm over one hour is mm/h directly. Hour 000 publishes no precipitation or flux files.
HRDPS West 1 km — supported, experimental
ECCC also runs an experimental 1 km HRDPS over BC and western Alberta. The GRIB decoder handles the grid rotation, so the sampler only ever speaks geographic coordinates; the builder downloads each whole-domain file before sampling the catalogue. The 1 km feed keeps the old GRIB tokens for the science fields, with the shared ECCC semantics above.
| Fact | Value |
|---|---|
| Grid | rotated lat-lon, 1330 × 1180 points, over BC and western Alberta |
| Runs | 00Z and 12Z only |
| Transport | whole-domain GRIB2 on the alpha Datamart — no subsetting |
| Retention | roughly 24 hours |
| Science tokens | GUST_TGL_10/GUST_MAX_TGL_10, CAPE_ETAL_10000 (eta 1.0: surface-based, −1 sentinel, no CIN), HPBL_SFC_0 |
Quirks:
- The feed goes dark occasionally — schedule it as its own job, so a 1 km failure warns without blocking a 2.5 km publish.
- The 1 km grid earns its terrain: one launch’s measured elevation
(site-context’s
elevationpick) is 1,476 m; model terrain elevation is 1,311 m at 1 km and 1,072 m at 2.5 km. The 1 km grid reduces the terrain error from 404 m to 165 m, and that 239 m shift propagates into cloud base, boundary-layer top, and which pressure levels lie above model terrain.
RDPS 10 km — supported
The Regional Deterministic Prediction System extends the Meteogram from HRDPS’s two days to three and a half, and the run completes before HRDPS.
| Fact | Value |
|---|---|
| Grid | 10 km rotated lat-lon (1140 × 1045 at 0.09°) |
| Runs | four runs a day, 84 hourly steps |
| Availability | complete ≈ T+3:05–3:10 |
| Path | model_rdps/10km |
| Variable names | English CamelCase (AirTemp_IsbL-0850, SensibleHeatNetFlux_Sfc, WindDir_AGL-10m) |
| Levels | the full 33-level column is published every hour; the build samples the curated 14-level band |
| Science fields | WindGust/WindGust-Max_AGL-10m, CAPE_Sfc and CIN_Sfc (9999 sentinel), PlanetaryBoundaryLayerHeight_Sfc — all hourly |
| Cost | ~50 MB per step, ~4.1 GiB per run — the lightest of the four Datamart migrations; the science fields add ~0.5 GiB per run |
| Verified | 2026-08-08 |
Quirks:
- Omega is sparse:
VerticalVelocityexists at 250/500/700/850, published on curated 850/700. - A true 2 m dew point (
DewPoint_AGL-2m) exists at the surface; level moisture isDewPointDepression. - Precipitation is a fixed window:
Precip-Accum1h_Sfcspans the whole horizon — the run-total differencing the WCS transport needed is gone. - Heat fluxes are instantaneous: paramId 231, W/m².
WindDirearth-relativeness is inferred from HRDPS’s verified behaviour — same MSC production chain; spot-check against rotated components is cheap if the grid definition ever changes.- CIN is ≤ 0 J/kg (min −1 755 on the verification day).
GDPS 15 km — supported
ECCC’s current system description of the Global Deterministic Prediction System (checked 2026-08-08) identifies it as a coupled atmosphere, ocean, and sea-ice forecast whose large-scale temperature and wind are spectrally nudged toward its GEML data-driven weather model. That is a material change in lineage even though the open-data contract remains familiar. A ten-day Meteogram still has published sensible and latent heat fluxes rather than proxy surface heating.
| Fact | Value |
|---|---|
| Grid | regular 0.15° global lat-lon (2400 × 1201 — no rotation anywhere, uvRelativeToGrid=0) |
| Runs | 00Z and 12Z, through 240 hours, 3-hourly throughout |
| Availability | complete ≈ T+5:05 |
| Path | model_gdps/15km (model_gdps/10km holds GDPS-Analysis sea-ice NetCDF, not forecast GRIB) |
| Variable names | same English-name inventory as RDPS |
| Cost | ~105 MB per step, ~8.3 GiB per run, twice daily; the science fields add up to ~0.9 GiB per run |
| Verified | 2026-08-08 |
Quirks:
- The level set thins past hour 168: the 33-level column is 3-hourly to hour 168; past 168, steps on a 6-hour boundary stay complete while the intermediate 3-hourly steps carry a reduced level set — of the curated band only 1000/925/850/700 survive there. This is better than the old GeoMet picture (six of nine levels thinning to 6-hourly); the builder tolerates a level absent at a valid time, so intermediate late-horizon columns ride on the four survivors.
- Omega is sparse:
VerticalVelocityexists at 200/250/500/600/700/850; published on curated 850/700/600. - Precipitation is differenced from the run total
(
Precip-Accum_Sfc): fixed-window accumulations stop at hour 168, so the run total is the one quantity that spans the horizon. - Heat fluxes are instantaneous: paramId 231, W/m².
- CAPE/CIN thin out one regime earlier than the other surface fields: 3-hourly to 168 h, then 6-hourly only (present 003/024/174/240, absent 001/171 — verified 2026-08-08). Gusts and PBL height survive the post-168 thinning at every 3-hourly step, so late-horizon hours can carry a gust with no CAPE.
HRRR 3 km — supported
NOAA’s High-Resolution Rapid Refresh. All the records the Meteogram needs live in one file per hour, ranged by its index — see Forecast architecture.
| Fact | Value |
|---|---|
| Grid | 3 km Lambert conformal over the continental United States |
| Runs | hourly, with the synoptic runs (00/06/12/18Z) extending to 48 hours |
| Availability | published to public cloud buckets roughly T+107 minutes after the reference time |
| Fetch unit | all 70 records the Meteogram needs live in a single wrfprs file per hour, and its .idx sidecar lets a client fetch exactly those records by byte range |
| Verified | 2026-08-11, re-verified against the live t00z indexes |
Quirks:
- The domain reaches farther north than its famous corner: the oft-quoted 47.8°N northern limit is the eastern corner of the Lambert conformal grid. At −117.7°W the boundary is at 51.24°N — the southern-BC founding sites sit about 215 km inside the domain. Check the corner nearest your longitude before assuming HRRR excludes you.
- Omega is published at all nine curated levels:
VVEL(paramId 135, Pa/s,stepType=instant, no bitmap) at 925–600 hPa including 875, verified at f00/f24/f48 (2026-08-08). - Heat fluxes are instantaneous values.
- Winds are grid-relative. U/V components on the native Lambert projection point along grid axes, not geographic east/north. Skip the rotation and wind directions bias by 10–15° at these latitudes.
GUST:surfaceis instantaneous (paramId 260065,stepType=instant, verified by decode 2026-08-08) — the model’s diagnostic gust at the valid time, not an interval max; NOAA publishes no hour-max gust (theWIND … max fcstrecord beside it is hourly-max sustained wind, not gust). Declaredgust: "instant"in the catalogue: ECCC’s hour-max runs 20–30 % higher systematically, so the two providers’ gusts are not directly comparable.- CAPE/CIN come in the full variant menu — surface-based, mixed-layer 90 mb and 180 mb, most-unstable 255 mb, plus 0–3 km CAPE — all J/kg, instantaneous, no sentinels. The forecast engine publishes the surface-based pair, the one variant every capable model shares.
- PBL height:
HPBL:surfaceis paramId 159blh, metres AGL. - Prognostic wildfire smoke ships in the same files (verified
2026-08-09 in both
wrfprsandwrfsfcindexes):MASSDENat 8 m AGL (kg/m³ → published µg/m³),COLMDcolumn mass (kg/m² → mg/m²), andAOTKcolumn aerosol optical thickness — three extra ranged fetches per hour, published as the profile’s per-hoursmokeblock. HRRRv4’s only prognostic aerosol is smoke, soAOTKis effectively smoke optical depth. The smoke is radiatively coupled — forecast smoke attenuates the model’s own shortwave, so published fluxes and derived w* are already smoke-aware (Dowell et al. 2022, WAF, §2d; declaredsmoke: "radiativelyCoupled"in the catalogue and echoed per document). Caveat: 2023-season evaluation (Chace et al. 2026, WAF) found HRRR underpredicts AOD for aged long-range smoke. - Layered cloud exists:
LCDC/MCDC/HCDC, instantaneous %, on NCEP’s terrain-following sigma layers (fixed-surface types 214/224/234; low σ 1.0–0.642, middle 0.642–0.35, high 0.35–0.15 of surface pressure — NCEP/UPP convention, not encoded in the files, and not fixed altitudes). No per-pressure-level cloud fraction inwrfprs.
GFS 0.25° — supported
NOAA’s Global Forecast System is the long-horizon leg. Since the 2021 upgrades the output is 3-hourly all the way to f384 — the old 12-hourly tail beyond day 10 is gone.
| Fact | Value |
|---|---|
| Grid | 0.25° global |
| Horizon | out to 384 hours, 3-hourly throughout |
| Fetch unit | pgrb2.0p25 files with .idx sidecars, fetched by byte range |
| Verified | 2026-08-11, re-verified against the live t00z indexes |
Quirks:
-
875 hPa does not exist in the
pgrb2.0p25files, which is why the GFS entry inmodels.jsondeclares eight levels where the other NOAA deterministic feeds declare nine. -
Omega is published at all eight curated levels through f384:
VVEL(paramId 135, Pa/s,stepType=instant), with the isobaric VVEL record count matching TMP’s at every checked hour — no late-horizon thinning of omega relative to the mass fields (verified 2026-08-08 at f003, f024, f240, and f384). -
Pressure-level dew point isn’t published — it must be computed from temperature and relative humidity per level.
-
Flux time semantics:
SHTFL/LHTFLexist only as averages over a growing window that resets every 6 hours: f001 averages hour 0–1, f002 averages 0–2, … f006 averages 0–6, then f007 starts again. Difference the window-hours to recover the mean flux over any sub-interval:mean(h1→h2) = ((h2−h0)·A(h2) − (h1−h0)·A(h1)) / (h2−h1)where
h0is the window start andA(h)the published average at hourh. The builder reconstructs each interval before deriving w*. -
GUST:surfaceis instantaneous (paramId 260065) at every published step — the same instant-vs-hour-max caveat as HRRR applies against the ECCC models. CAPE/CIN carry the same variant menu as HRRR minus the 0–3 km CAPE; the forecast engine publishes the surface-based pair.HPBLis NCEP local parameter 0-3-196, metres AGL. -
Layered cloud publishes in two flavours per step: instantaneous (
:N hour fcst:) and a 6-h-bucket average (:M-N hour ave:) that resets at synoptic hours. The builder reads the instantaneous records — they match every other field’s valid-time semantics. Only the instant flavour exists at f000. -
GFS is the only published model with a cloud profile:
TCDCat 22 isobaric levels (50–1000 hPa, instantaneous, every step incl. f000), published ascloudFractionPercenton the eight curated levels — unlike omega it is level-complete within GFS, only model-sparse.
NAM 12 km and CONUS nest 3 km — supported, retiring
NOAA’s North American Mesoscale system supplies two catalogue entries.
Both retire 2026-10-06 at 12 UTC, the day RRFS and REFS become
operational and NAM, HREF, SREF, and HiresW (except Guam) are terminated —
SCN 26-48 Updated,
originally “on or about” 2026-08-31 and since
rescheduled to October 6,
with a parallel NOMADS feed expected ~2026-08-11. Both catalogue entries
declare the machine-readable sunset (date 2026-10-06, successor rrfs);
the RRFS section below records the verified successor.
| Fact | Value |
|---|---|
| Transport | whole-domain GRIB2 with .idx sidecars on the noaa-nam-pds bucket |
| Cycles | four a day (00/06/12/18Z) |
| 12 km parent | awphys, AWIPS grid 218 — hourly to 36 h then 3-hourly to 84 h, complete ≈ T+2:40 |
| 3 km CONUS nest | conusnest.hiresf — hourly to 60 h, complete ≈ T+2:39, on exactly HRRR’s Lambert grid: 1799 × 1059, Latin 38.5°, LoV 262.5°, founding sites ~200–236 km inside |
| Cost | nest ~111 MiB per forecast hour (~6.7 GiB per run); parent ~12 MiB per hour (~0.7 GiB per run) — ~61 records per forecast hour each |
| Verified | 2026-08-08 |
Quirks:
awphysis the 12 km isobaric product;awip12is not. Live awip12 carries no isobaric band at all (208 records to awphys’s 454; its only “mb” records are scattered diagnostics), and its one unique contribution is layered cloud —LCDC/MCDC/HCDC, which awphys lacks (TCDC only). The parent build therefore reads awphys plus three byte-ranged cloud records per hour from awip12; the two files share grid 218 exactly and their common fields decode bit-identical.- The full 9-level curated band (TMP/RH/HGT/UGRD/VGRD) exists on both
products, with omega (
VVEL, paramId 135, Pa/s, instantaneous) at all nine levels. - Level moisture is
RHat all nine levels: the nest publishes levelDPTonly at 925/850/700 and awphys none, so level dew points are computed from RH. A true 2 m dew point is hourly on both products. GUST:surfaceis instantaneous (paramId 260065, PDT 0) — NAM publishes no hour-max gust, so the catalogue’sgust: "instant"carries the same not-comparable-to-ECCC caveat as HRRR and GFS.- The un-suffixed
SHTFL/LHTFLrecords are genuinely instantaneous (PDT 0) on both products; the nest also carries 3-h-average twins (paramId 235033, PDT 8), cleanly distinguished — and skipped — by the idxavesuffix. - Winds are grid-relative on each product’s own Lambert cone: the nest shares HRRR’s projection parameters while the parent uses Latin 25°/LoV 265°, so the rotation to true north is a per-product constant (~12° direction bias at the founding sites if skipped; confirmed empirically against earth-relative GFS components). NCEP packs each UGRD/VGRD pair as two submessages of one GRIB message (idx lines N.1/N.2 at a shared byte offset), so one ranged fetch returns both components.
- Precipitation is a resetting bucket: the nest’s resets every 3 h, the
parent’s every 12 h through its hourly phase, and the parent’s 3-hourly
tail (f39–f84) publishes a direct (h−3)–h record. At bucket boundaries
two APCP records coexist in a parent file (
12-24beside21-24at f24) — records are selected by the exact idx window token, never by variable name alone. - Nest fields carry a sparse bitmap (~76–105 of 1.9M points, surfaced by ecCodes as in-band 9999); the samplers publish a masked gridpoint as absence, never a value.
- Terrain
HGT:surfaceis published every hour on both products — none of the hour-000-only special-casing the ECCC models need. - The science set is complete at every hour: surface-based CAPE/CIN
(plus mixed-layer/most-unstable variants),
HPBL, and the 2 m/10 m surface set are present at every hour including f00 as analysis records.
RRFS 3 km — adoption staged
The Rapid Refresh Forecast System is the verified NAM successor: at cutover
the two NAM entries collapse into a single rrfs leg carrying the nest’s
3 km resolution and the parent’s 84 h horizon.
| Fact | Value |
|---|---|
| Transport | the noaa-rrfs-pds prototype bucket, which already uses the operational naming from SCN 26-48: rrfs.tCCz.prslev.3km.fFFF.conus.grib2 plus a 2dfld companion, both with .idx |
| Cycles | hourly; 00/06/12/18Z run to 84 h, the others to 18 h |
| Availability | prototype 12Z f084 landed ≈ T+3:31 |
| Verified | 2026-08-08 |
Quirks:
- One 3 km North-America integration;
conus,ak,hi, andprare distribution cutouts, and the CONUS cutout is exactly the HRRR grid (sites 224–236 km inside). Which cutout a builder fetches is transport detail, which is why the slug isrrfs, notrrfs-conus. - Vertical velocity is geometric:
prslevcarries the full 9-level curated band with TMP/RH/DPT/HGT/UGRD/VGRD — but vertical velocity isDZDT(geometric w, m/s), not omega; VVEL is absent at band levels. The port will convert at build (ω ≈ −ρgw) and declareverticalVelocity: "fromGeometricW"so consumers can see the provenance. 2dfldcarries the science set: instantaneous and hour-average SHTFL/LHTFL, instantaneous GUST, surface-based CAPE/CIN plus the variant menu, HPBL, layered cloud, and hourly-bucket APCP.- Content may still move: NCEP warns decoders that record content,
order, and scaling may change at implementation — everything above is
re-verified against the parallel feed (
nomads…/com/rrfs/para/, expected ~2026-08-11) or the production paths before the port lands. - REFS (five RRFS members plus HRRR-initialized members, to 60 h at 00/06/12/18Z) is a potential future ensemble leg beside REPS and GEPS.
REPS 10 km ensemble — supported
In ECCC’s Regional Ensemble Prediction System, every member is derived as its own atmosphere and the published file carries the percentile spread of the derived quantities — including per-level ensemble soundings. Read the product semantics in Ensemble values.
| Fact | Value |
|---|---|
| Members | 21 (a control plus 20 perturbed) |
| Grid | rotated lat-lon at 0.09° (~10 km, 908 × 960 points) |
| Runs | four a day (00/06/12/18Z), 3-hourly to 72 hours — no hourly output |
| Availability | complete ≈ T+3:40–3:45 |
| Path | Datamart only, under YYYYMMDD/WXO-DD/ensemble/reps/10km/grib2/HH/hhh/ — the legacy /ensemble/reps/ tree is dead (404), and the earlier GeoMet-WCS/Datamart hybrid is retired |
| Levels | isobaric fields (TMP, RH, HGT, UGRD, VGRD) at a fixed 9-level set: 50/100/200/250/500/700/850/925/1000 hPa |
| Cost | ~383 MB per step for the Meteogram field set — ~9.4 GiB per run against the ~1.5 GiB the retired hybrid moved. There is no partial fetch: whole-domain, all-members, no index |
| Verified | 2026-08-08 |
Quirks:
- Every raw-variable file stacks all 21 members as GRIB messages keyed
by
perturbationNumber, 0 the control (typeOfEnsembleForecast1 for the control, 4 for perturbed members). There are no per-member files, and no upstream percentile products for raw variables — the forecast engine computes percentiles from members itself. - Per-member wind exists at every level, which WCS never carried. The five levels in the curated band publish as sounding levels (1000/925/850/700/500; 500 doubles as the parcel-search headroom, and 1000 — at mountain sites also 925 — typically sits below REPS model terrain and is dropped per member by the derivation’s own filter).
- No omega, and no dew point in any form — level and surface moisture
come from
RH, converted against temperature. - No
WDIR/WINDat levels: the rotated grid’sUGRD/VGRDare grid-relative (uvRelativeToGrid=1) and are rotated to true east/north before the direction convention is applied; skipping the rotation produced a ~24° error in verification. See Seven forecast-data failures that passed parsing. - Heat fluxes (
SHTFL_SFC/LHTFL_SFC) are instantaneous W/m², per member. Precipitation is run-total accumulation, differenced at 3 h. Hour 000 publishes no flux or precipitation files. - None of the science-field families exists per member — no gust, no CAPE/CIN, no PBL height, and only total cloud (full 00Z/024 listing inventoried, 003 re-checked, 2026-08-08). REPS’s capabilities are false across the board; an ensemble-CAPE-spread product cannot be built from this feed (GEPS, below, supplies it).
GEPS 0.5° ensemble — supported
ECCC’s Global Ensemble Prediction System extends the REPS ensemble product from three days to sixteen and adds the one thing REPS cannot supply: per-member storm-risk spread.
| Fact | Value |
|---|---|
| Members | 21 (a control plus 20 perturbed, one all-members file per field exactly as in REPS) |
| Grid | regular 0.5° global lat-lon (720 × 361, uvRelativeToGrid=0 — components are earth-relative and nothing is rotated, unlike REPS) |
| Runs | 00Z and 12Z, on the feed’s own schedule of 3-hourly to 192 hours then 6-hourly to 384 — sixteen days, the longest ECCC horizon here. The occasional Thursday 00Z extension to 936 hours is not fetched |
| Availability | complete ≈ T+5:07 |
| Path | YYYYMMDD/WXO-DD/ensemble/geps/grib2/raw/HH/hhh/ — raw members still use the old CMC naming, CMC_geps-raw_<VAR>_<LVL>_<level>_latlon0p5x0p5_YYYYMMDDHH_Phhh_allmbrs.grib2, not the MSC scheme the deterministic models migrated to |
| Retention | matches REPS; the legacy /ensemble/geps/ tree is likewise dead |
| Cost | ~150 MB per step for the Meteogram field set (36 all-members files) — ~14 GiB per run over 96 steps, twice daily. The heaviest feed the forecast engine carries, which is why the reference operator schedule builds it last |
| Verified | 2026-08-08 |
Quirks:
- The legacy
HGT_SFCorography is in decametres and its GRIB metadata lies about it [verified 2026-08-08]: the field decodes asunits=m, paramId=228002— indistinguishable from REPS’s genuinely metric field — but the values are dam (global max 586.3 = the smoothed Himalaya ×10; Dundee 153.6 → 1 536 m beside GDPS’s 1 525 m). Pressure-levelHGT_ISBLfiles are true metres; only the surface datum is decametric. The builder scales ×10 and guards against both this bug and its inverse; any future consumer of the raw feed must too. - Per-member surface-based
CAPE_SFCandCIN_SFCexist at every step (97 files per step; the inventory is identical at hours 024, 198, and 384). This is the marquee: the ensemble CAPE/CIN percentile spread that REPS cannot provide, published as conditional percentile blocks. The member spread is real — 167 to 1 311 J/kg CAPE across the 21 members at one site on the verification day. - GEPS’s CAPE sentinel is an exact −1 (the HRDPS family’s marker, ~42 % of the globe per member on the verification day) — not RDPS/GDPS’s 9999: real GEPS member CAPE reached 9 755 J/kg that day, so a 9999 mask would erase genuine extreme instability. CIN carries no sentinel at all — it is computed even where CAPE is flagged, and its values nearest −1 are ordinary packing bins, so all 21 members rank.
- Isobaric fields in the curated band match REPS’s shape:
TMP/RH/HGTand per-memberUGRD/VGRDat 1000/925/850/700, with 500 as the parcel-ceiling headroom (nothing exists between 700 and 500). Omega is at 850 only and is not published. No dew point in any form — moisture isRHat the levels and at 2 m — and noWDIRanywhere: direction comes from the earth-relative components, no rotation involved. - Heat fluxes are time-integrated from run start (paramId 146, J/m²,
stepType=accum, stepRange 0–h), unlike REPS’s instantaneous values: the builder publishes the mean W/m² over the window ending at each valid time, (A(h₂)−A(h₁)) / ((h₂−h₁)·3600) per member, with the window following the schedule’s own 3 h then 6 h cadence. Precipitation is the same run-total differencing. Hour 000 publishes neither, so the first window’s baseline is zero by definition; per-member terrain (HGT_SFC) is at PT000 only. - No gust, no PBL height, and only total cloud per member — those capabilities are declared false, like REPS’s.
- Verify every download against Content-Length. One GEPS fetch returned another model’s bytes, correct on retry; the Datamart client now length-checks every download because of it. See Seven forecast-data failures that passed parsing.
RAQDPS 10 km — supported, experimental, smoke documents
ECCC’s Regional Air Quality Deterministic Prediction System (GEM-MACH)
feeds no wind profiles — it is the source of the per-site
smoke documents, where its verified
paths, fields, units, and join semantics live. The catalogue lists it under
smokeModels, separate from models so pre-smoke consumers keep parsing.
| Fact | Value |
|---|---|
| Grid | 10 km |
| Runs | 00Z and 12Z, hourly to 72 h |
| Transport | standard Datamart transport shared with the models above |
| Cost | three whole-domain files per hour, ~43 MB per run — the lightest fetch of any ECCC feed |
GOES-18 DSR and AOD — supported, observations
NOAA’s GOES-18 (GOES-West) supplies the dataset’s measurements. The two
products feed no wind profiles — each is the source of a per-site
observation dataset
(goes18-dsr, goes18-aod), where the products’ decode, quality, and
geometry facts live. The catalogue lists them under observationModels,
separate from models like smokeModels.
| Fact | Value |
|---|---|
| Products | two ABI L2 full-disk products: Downward Shortwave Radiation under ABI-L2-DSRF and Aerosol Optical Depth under ABI-L2-AODF |
| Transport | anonymous NetCDF on the noaa-goes18 bucket |
| Cadence | six granules per hour for both products (scan Mode 6, starts at :00/:10/…). No runs, no forecast hours: the builder fetches granules newer than the last published instant |
| Latency | DSRF lands on the bucket ~6–7 minutes after scan end — roughly 16 minutes after scan start; AODF is quicker at ~3.3 minutes after scan end |
| Granule sizes | track daylight on the disk: DSRF runs 9 MB (night) to 40 MB (full daylight), AODF 0.6–1 MB at night and 32–41 MB in daylight |
| Verified | 2026-08-10 |
Quirks:
- The DSRF archive changes character in April 2024 (last legacy day 2024-04-16, first new day 2024-04-17, NOAA OSPO message MSG_20240307_1955): the Baseline algorithm’s hourly full-disk DSR on a 0.5° lat/lon grid was replaced by the Enterprise algorithm’s 10-minute product at 2 km on the ABI fixed grid. Much older documentation — including the PUG Volume 5 DSR chapter — describes the legacy product; the operative authorities are the file metadata and the Enterprise SRB ATBD v5.0 (Laszlo, Kim & Liu 2020).
- AODF switched algorithms on 2024-02-06, when the Enterprise (EPS) aerosol retrieval became operational. The file format did not break the way DSRF’s did, but the retrieval did change — most consequentially the quantitative view-zenith limit, raised from 60° to 78.5°; what that means for a published value lives in the observation document reference. Older documentation describes the Baseline aerosol algorithm.
- The chunk layout supports byte-ranged ingest [verified 2026-08-10, live]: both products’ value variables are gzip+shuffle uint16 in (24, 5424) chunks — full-row bands — and the reference deployment’s four-site catalogue spanned rows 470–481, exactly two value chunks plus two DQF chunks per granule. Reading only those over HTTP Range costs ~757 KB per AODF granule against 40.6 MB whole-file (54×) and ~849 KB against 39.7 MB for DSRF (47×) — about 230 MB/day for both products at full cadence instead of ~11 GB. The retired Python pipeline read that way (h5py on a seekable ranged reader, regression-tested bit-identical to the whole-file decode); the current builder deliberately downloads each granule whole — one fetch per granule, no fallback machinery — and pays the bytes for the simplicity.
ECMWF IFS open data — evaluated, not adopted
ECMWF’s open-data IFS offers a 15-day horizon (360 h at 00/12Z since cycle 50r1) under CC-BY-4.0. Two missing inputs ruled it out:
- No surface heat fluxes are published. w* has no direct input. The physics would need a radiation-proxy flux: net solar radiation partitioned by an assumed Bowen ratio. That method produces a less defensible forecast than models that publish surface fluxes and requires a different product label.
- Only four levels of the curated 1015–600 hPa band exist in the open-data set (925/850/700/600) — and at the founding mountain sites, 925 hPa is below the model terrain. Three usable levels do not define a sounding; interpolation would dominate the boundary-layer and stability estimates.
The 15-day horizon could support a labelled proxy-physics outlook. It cannot support the same profile contract as models that publish surface fluxes and a deeper pressure column.
RAP 13 km — evaluated, not adopted
NOAA’s Rapid Refresh survives the 2026-10-06 retirements (RRFSv1 replaces NAM, HREF, SREF, and HiresW only) and cycles hourly — to 21 h every hour and 51 h at 03/09/15/21Z, complete ≈ T+1:15–1:35 (verified 2026-08-08). Two findings decided against it:
- The native
wrfprsproduct uses NCEP-local GRIB template 32769 (rotated lat-lon, Arakawa non-E), which ecCodes cannot geolocate. The usable pair isawp130pgrb(grid 130, 13 km Lambert, sites ~1,000 km inside): the full 9-level curated band including omega and level dew point, plus the science set — but no heat fluxes, which live only in theawp130bgrbcompanion. Two files per hour for the contract. - Everything it publishes for this product, HRRR already publishes at 3 km; the only addition would be the 51 h tail on four cycles, and its own lifetime is bounded by RRFSv2 (MPAS engine, 2027–28).
The omission is a decision, not a blind spot: a feed-viable model whose job here is already done by a finer sibling on the same buckets.
ICON global — evaluated, not adopted
DWD’s global ICON (~13 km) is the one candidate that would add a non-North-American physics and data-assimilation lineage to the catalogue — a genuine cross-model disagreement signal, published as open data under CC-BY 4.0. Verified facts (2026-08-08):
- Open data serves only the native icosahedral grid (R3B07), one
bz2-compressed GRIB2 file per field, level, and step — no
.idx, no regular-lat-lon global product, ~1-day retention (fetch-fresh only). ICON-EU and ICON-D2 do not cover BC. Sampling is tractable — DWD publishes time-invariant CLAT/CLON, so a cached nearest-cell index per site works — but adoption costs a new transport (bz2, thousands of per-field files, an unstructured-grid sampler), not new physics work. - 00/12Z run hourly to 78 h then 3-hourly to 180 h (06/18Z to 120 h); the 00Z 180 h file landed ≈ T+3:29.
- The pressure-level set holds only 6 of the 9 curated band levels (925/900/850/800/700/600 — no 875/750/650).
- Fluxes (
ASHFL_S/ALHFL_S) are averages since model start — GFS/GEPS-style differencing, plus DWD’s positive-downward sign convention to verify and flip at build. Gust isVMAX_10M(hour-max family); layered cloud (CLCT/CLCL/CLCM/CLCH) exists. - No PBL height, no surface-based CAPE, no CIN (only CAPE_ML and
CAPE_CON) — under the current contract’s surface-based pair,
cape,cin, andpblHeightwould all be declared false.
Not adopted for now: the feed poses no blocker, and whether the independent lineage justifies a transport of its own is a judgment the catalogue can revisit.
Licensing and attribution
- ECCC (HRDPS, RDPS, GDPS, REPS, GEPS): used under the Environment and Climate Change Canada Data Server End-use Licence. Derived profiles carry the attribution requirement.
- NOAA (HRRR, GFS, NAM, GOES-18 — and RAP/RRFS if adopted): U.S. government open data. Attribution is requested, and use implies no NOAA endorsement of this project.
- ECMWF open data is CC-BY-4.0 — relevant only if an IFS-based leg is adopted later.
- DWD open data is CC-BY 4.0 — relevant only if an ICON leg is adopted later.
Provider overviews: HRDPS, RDPS, GDPS, REPS, GEPS, HRRR, GFS, NAM, RRFS, and GOES.