Skip to content

Forecast model feeds

Every builder supplies the shared derivation with 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. 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. Each model’s curated pressure-level set and science-field capabilities are declared in models.json.

The measurements on this page come from live service responses checked through 2026-08-14. 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. The availability, cost per run, transport, and verification-date columns are recorded on this page, each taken from the model’s fact table below. An em dash means that table records no such dated fact, and the model’s section holds what is known. The fourteen rows are the catalogue’s eleven forecast models plus the RAQDPS smoke feed and the two GOES-18 observation feeds.

Scroll horizontally to see all columns.

ModelProviderKindGridRuns used (UTC) · stepHorizonAvailabilityCost per runTransportVerified
HRDPS Westhrdps-westexperimental feedECCCdeterministic1 km00/12Z · 1 h step48 h——Alpha Datamart, whole-domain GRIB2—
HRDPS continentalhrdps-continentalECCCdeterministic2.5 km00/06/12/18Z · 1 h step48 hT+2:55 → T+3:55~7.8 GiBDatamart, whole-domain GRIB22026-08-08
HRRR CONUShrrr-conusNOAAdeterministic3 km00/06/12/18Z · 1 h step48 h~T+107 min—Cloud bucket, byte-ranged GRIB22026-08-11
RRFSrrfsexperimental feedNOAAdeterministic3 km00/06/12/18Z · 1 h step84 hf084 ≈ T+3:33—noaa-rrfs-pds, byte-ranged GRIB2, two files2026-08-13
RDPSrdpsECCCdeterministic10 km00/06/12/18Z · 1 h step84 hcomplete ≈ T+3:05–3:10~4.1 GiBDatamart, whole-domain GRIB22026-08-08
GDPSgdpsECCCdeterministic15 km00/12Z · 3 h step240 hcomplete ≈ T+5:05~8.3 GiBDatamart, whole-domain GRIB22026-08-08
GFSgfsNOAAdeterministic25 km00/06/12/18Z · 3 h step384 h——Cloud bucket, byte-ranged GRIB22026-08-11
NAMnamretires 2026-10-06NOAAdeterministic12 km00/06/12/18Z · 1 h step84 hcomplete ≈ T+2:40~0.7 GiBnoaa-nam-pds, byte-ranged GRIB22026-08-08
NAM CONUS nestnam-conus-nestretires 2026-10-06NOAAdeterministic3 km00/06/12/18Z · 1 h step60 hcomplete ≈ T+2:39~6.7 GiBnoaa-nam-pds, byte-ranged GRIB22026-08-08
REPSrepsECCCensemble10 km00/06/12/18Z · 3 h step72 hcomplete ≈ T+3:40–3:45~9.4 GiBDatamart, all-members GRIB22026-08-08
GEPSgepsECCCensemble50 km00/12Z · 3 h step384 hcomplete ≈ T+5:07~14 GiBDatamart, all-members GRIB22026-08-08
RAQDPS wildfire smokeraqdpsexperimental feedECCCdeterministic · smoke10 km00/12Z · 1 h step72 h—~43 MBDatamart, whole-domain GRIB2—
GOES-18 downward shortwavegoes18-dsrNOAAobservation3 km10 min granules—~6–7 min after scan end—noaa-goes18, whole NetCDF granules2026-08-10
GOES-18 aerosol optical depthgoes18-aodNOAAobservation3 km10 min granules—~3.3 min after scan end—noaa-goes18, whole NetCDF granules2026-08-10

Cross-model quirk matrix

The catalogue declares each capability, and this matrix records the provider mechanics behind each declaration. An em dash means the same as in the summary. Each model’s section holds the exact tokens, windows, and levels.

ModelTerrainHeat fluxesPrecipitationGustCAPE sentinelCINVertical velocity
HRDPS Westevery hourinstantinstant ratehour-max−1absentnone
HRDPS continentalevery hourinstant1 h windowhour-max−1absentomega, 3 levels
HRRRevery hourinstantinstant rateinstantnonepresentomega, all levels
RRFSevery hourinstant1 h bucketinstantnonepresentgeometric w → omega
RDPSPT000 onlyinstant1 h windowhour-max9999presentomega, 2 levels
GDPSPT000 onlyinstantrun total, differencedhour-max9999presentomega, 3 levels
GFSevery stepwindow averages, differencedresetting buckets, differencedinstantnonepresentomega, all levels
NAM 12 kmevery hourinstantresetting bucketsinstantnonepresentomega, all levels
NAM CONUS nestevery hourinstantresetting bucketsinstantnonepresentomega, all levels
REPSPT000, per memberinstant, per memberrun total, differencednone—absentnone
GEPSPT000, per memberrun-start integrals, differencedrun total, differencednone−1no sentinelnone
RAQDPS———————
GOES-18 DSR———————
GOES-18 AOD———————

RAQDPS and the two GOES products feed smoke and observation documents. They feed no profiles, so no column applies to them. The notes below explain some of the cells.

  • ECCC CAPE is surface-based only, with in-band sentinels. ECCC encodes “not computed” in the values themselves. RDPS and GDPS use 9999 in both CAPE and CIN (collocated), and the HRDPS family and GEPS members use −1 in CAPE. REPS publishes no CAPE at all. The builders mask sentinels to absence before anything reaches a document. Averaged naively, an unmasked GDPS field “means” CAPE of 4 152 J/kg. [verified 2026-08-08]
  • The two gust semantics are not directly comparable. ECCC’s hour-max runs systematically 20–30 % higher than NOAA’s instantaneous diagnostic (paramId 260065, stepType=instant, verified by decode 2026-08-08), and NOAA publishes no hour-max gust.
  • HRDPS continental, RDPS, and GDPS instant fluxes decode as paramId 231, in W/m². They feed w* with no differencing.
  • HRDPS encodes GRIB forecastTime in minutes, where RDPS and GDPS use hours. The builders take valid times from the schedule and do not read the raw key.
  • PT000-only terrain is fetched from the 000/ directory even when hour 0 is otherwise skipped.

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.

FactValue
Hostsdd.weather.gc.ca (primary) · hpfx.collab.science.gc.ca (mirror, identical paths) · dd.alpha.weather.gc.ca (alpha Datamart, the 1 km feed; unmirrored, and its tree is not date-rooted)
Treehttps://dd.weather.gc.ca/YYYYMMDD/WXO-DD/<model path>/HH/hhh/, rooted by date. The old undated trees are gone from the root listing
Filenamesdeterministic files use the MSC scheme YYYYMMDDTHHZ_MSC_<MODEL>_<Var>_<Level>_<Grid>_PThhhH.grib2
Fetch unitthe whole-domain file. No .idx sidecars exist and deterministic files hold one GRIB message per file, so NOAA-style byte-ranging is impossible
Retention~30 days on dd, ~51 days on hpfx (live root listings; the docs claim 30 days on both)
Host selectionper invocation via METEO_DATAMART_BASE
Rate limitsthe usage policy caps an application at 86,400 requests/day (~1 request per second, averaged) and documents no HTTP connection ceiling. The 500-connection limit applies to AMQP clients only
Packinggrid_jpeg; ecCodes 2.48.0 decodes it
Verified2026-08-08: HRDPS and GEPS listings filename-identical across the two hosts; the builders’ probe URLs answered 200 on hpfx

The mirror is MSC’s documented alternative server and suits backfill and load-spreading. MSC describes it as “bandwidth multiplied by 10” during peak demand but “best effort” redundancy, so consumers should be able to fall back to dd.

Shared quirks, verified 2026-08-08:

  • The usage policy sets polling etiquette. It asks for a meaningful User-Agent, no no-cache headers, and no directory-listing polls. AMQPS is the sanctioned push channel, and wget/curl are “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 stays under the daily budget.
  • Per-element reads re-decode the whole field. Every codes_get_double_element call re-decodes the entire field internally (~0.21 s per call on HRDPS’s 3.3M points, the same as a full codes_get_values). Samplers decode a message’s values once and index into the array.
  • Gusts come in two semantics per step (verified by decode). One is an instantaneous 10 m gust (paramId 228029, stepType=instant), and the other is 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, so it is not a run-length max. Max24 ≥ instant24 at 100.0 % of points. Max24 > max(instant23, instant24) at 59 %, so the max is taken over internal timesteps rather than hourly outputs. The builders publish the hour-max as windGustMps (capabilities gust: "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 GRIB 0-7-6 in all four models, and RDPS and GDPS add 0-7-7 CIN.
  • PBL height is in metres above ground. It is paramId 159 blh at every populated step, and its night-side minima of ~2 m are only possible AGL. 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 was inventoried 2026-08-08. CloudWater_EAtm is column-integrated kg/m² and is not a fraction.

Supported models

These catalogue entries have no experimental flag and no declared sunset.

HRDPS continental 2.5 km — supported

Environment and Climate Change Canada’s High Resolution Deterministic Prediction System.

FactValue
Availabilitythe run streams out in forecast-hour order from roughly T+2:55 to T+3:55 (verified from listing mtimes)
Pathmodel_hrdps/continental/2.5km
Variable namesold-style tokens (TMP_ISBL_0850, SHTFL_Sfc, WDIR_AGL-10m)
Levels28 isobaric levels published per field; the build samples the curated 14-level 1015–600 hPa band
Science fieldsGUST/GUST-Max_AGL-10m, CAPE_Sfc, 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
Verified2026-08-08

Quirks:

  • Omega is sparse. VVEL exists at 250/500/700/850/1000 only, so verticalVelocityPaS is published on the three curated levels that carry it (1000/850/700).
  • A true 2 m dew point exists (DPT_AGL-2m). Level moisture is still a dew-point depression (DEPR, Td = T − DEPR), and the depression clamps at exactly 30 K, so dew points in very dry air saturate at T − 30.
  • WDIR/WIND are earth-relative despite the rotated grid. This was verified at four points against UGRD/VGRD rotated through the grid transform. They agreed to ≤0.3° where the unrotated component direction was off by up to 32°. Wind is consumed directly with no rotation.
  • Hour 000 publishes no precipitation or flux files. At every other hour, APCP-Accum1h_Sfc gives mm over one hour, which is mm/h directly.

RDPS 10 km — supported

The Regional Deterministic Prediction System extends the Meteogram from HRDPS’s two days to three and a half, and its run completes before HRDPS’s.

FactValue
Availabilitycomplete ≈ T+3:05–3:10
Pathmodel_rdps/10km
Variable namesEnglish CamelCase (AirTemp_IsbL-0850, SensibleHeatNetFlux_Sfc, WindDir_AGL-10m)
Levelsthe full 33-level column is published every hour; the build samples the curated 14-level band
Science fieldsWindGust/WindGust-Max_AGL-10m, CAPE_Sfc and CIN_Sfc, PlanetaryBoundaryLayerHeight_Sfc, all hourly
Cost~50 MB per step, ~4.1 GiB per run; the science fields add ~0.5 GiB per run
Verified2026-08-08

Quirks:

  • Omega is sparse. VerticalVelocity exists at 250/500/700/850 and is published on curated 850/700.
  • A true 2 m dew point (DewPoint_AGL-2m) exists at the surface. Level moisture is DewPointDepression.
  • Precip-Accum1h_Sfc spans the whole horizon, so there is no run-total differencing anywhere.
  • WindDir earth-relativeness is inferred from HRDPS’s verified behaviour (same MSC production chain). A 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. Its large-scale temperature and wind are spectrally nudged toward its GEML data-driven weather model. That is a material change in lineage under a familiar open-data contract. A ten-day Meteogram still draws on published sensible and latent heat fluxes rather than proxy surface heating.

FactValue
Availabilitycomplete ≈ T+5:05
Pathmodel_gdps/15km (model_gdps/10km holds GDPS-Analysis sea-ice NetCDF, not forecast GRIB)
Variable namessame 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
Verified2026-08-08

Quirks:

  • Nothing is rotated. The grid is a regular global lat-lon grid with uvRelativeToGrid=0, and components are earth-relative.
  • 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 in which only 1000/925/850/700 of the curated band survive. The builder tolerates a level absent at a valid time, so intermediate late-horizon columns are built from those four levels.
  • Omega is sparse. VerticalVelocity exists at 200/250/500/600/700/850 and is published on curated 850/700/600.
  • Fixed-window precipitation accumulations stop at hour 168, so the run total (Precip-Accum_Sfc) is the one quantity that spans the horizon. That is why precipitation is differenced from the run total.
  • CAPE/CIN thin out one regime earlier than the other surface fields. They are 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 cycles hourly. The catalogue reads the synoptic runs (00/06/12/18Z), which are the cycles that extend to 48 hours. Forecast architecture follows this data from fetch to published document.

FactValue
Availabilitypublished to public cloud buckets roughly T+107 minutes after the reference time
Fetch unitall 70 records the Meteogram needs are in a single wrfprs file per hour, and its .idx sidecar lets a client fetch exactly those records by byte range
Verified2026-08-11, re-verified against the live t00z indexes

Quirks:

  • The domain reaches farther north than the limit usually quoted. The often-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, and 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) is present at 925–600 hPa including 875, verified at f00/f24/f48 (2026-08-08).
  • Winds are grid-relative. U/V components on the native Lambert projection point along the grid axes rather than geographic east and north. Without the rotation, wind directions are biased by 10–15° at these latitudes.
  • The WIND … max fcst record beside GUST:surface is the hourly-max sustained wind and is not a gust. The gust itself is the model’s diagnostic at the valid time rather than an interval max.
  • CAPE/CIN come in the full variant menu. HRRR publishes surface-based, mixed-layer 90 mb and 180 mb, and most-unstable 255 mb variants, plus 0–3 km CAPE, all in J/kg and instantaneous. The forecast engine publishes the surface-based pair, the one variant every capable model shares.
  • PBL height is HPBL:surface, paramId 159 blh, in metres AGL.
  • Prognostic wildfire smoke ships in the same files (verified 2026-08-09 in both wrfprs and wrfsfc indexes). The fields are MASSDEN at 8 m AGL (kg/m³, published as µg/m³), COLMD column mass (kg/m², published as mg/m²), and AOTK column aerosol optical thickness. They cost three extra ranged fetches per hour and are published as the profile’s per-hour smoke block.
  • AOTK is effectively smoke optical depth, because HRRRv4’s only prognostic aerosol is smoke.
  • The smoke is radiatively coupled. Forecast smoke attenuates the model’s own shortwave, so published fluxes and derived w* already account for smoke (Dowell et al. 2022, WAF, §2d). The catalogue declares smoke: "radiativelyCoupled" and each document echoes it.
  • HRRR underpredicts AOD for aged long-range smoke in a 2023-season evaluation (Chace et al. 2026, WAF).
  • Layered cloud exists. LCDC/MCDC/HCDC are instantaneous % on NCEP’s terrain-following sigma layers (fixed-surface types 214/224/234). Low is σ 1.0–0.642, middle 0.642–0.35, and high 0.35–0.15 of surface pressure. These bounds follow the NCEP/UPP convention, are not encoded in the files, and are not fixed altitudes. wrfprs has no per-pressure-level cloud fraction.

GFS 0.25° — supported

NOAA’s Global Forecast System is the long-horizon leg. Since the 2021 upgrades its output is 3-hourly all the way to f384.

FactValue
Fetch unitpgrb2.0p25 files with .idx sidecars, fetched by byte range
Verified2026-08-11, re-verified against the live t00z indexes

Quirks:

  • 875 hPa does not exist in the pgrb2.0p25 files. That is why the GFS entry in models.json declares eight levels where the other NOAA deterministic feeds declare nine.

  • Model terrain ships every step. Each pgrb2.0p25 file has one HGT:surface record, from f000 (anl) through f384 [verified 2026-08-14 at f000/f003/f024/f384]. The builder reads it once, from the run’s first forecast hour.

  • Omega is published at all eight curated levels through f384. VVEL (paramId 135, Pa/s, stepType=instant) has the same isobaric record count as TMP, so it has no late-horizon thinning relative to the mass fields (verified 2026-08-08 at f003, f024, f240, and f384).

  • Pressure-level dew point is not published. It must be computed from temperature and relative humidity per level.

  • Fluxes are averages over a growing window. SHTFL/LHTFL exist only as averages over a growing window that resets every 6 hours. f001 averages hours 0–1, f002 averages 0–2, and so on to f006, which averages 0–6. 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 h0 is the window start and A(h) the published average at hour h. The builder reconstructs each interval before deriving w*.

  • CAPE/CIN carry the same variant menu as HRRR minus the 0–3 km CAPE. The forecast engine publishes the surface-based pair.

  • HPBL is NCEP local parameter 0-3-196, in metres AGL.

  • Layered cloud publishes in two flavours per step. One is instantaneous (:N hour fcst:), and the other is a 6-h-bucket average (:M-N hour ave:) that resets at synoptic hours. The builder reads the instantaneous records because 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. TCDC is published at 22 isobaric levels (50–1000 hPa, instantaneous, every step including f000), and the builder publishes it as cloudFractionPercent on the eight curated levels. Unlike omega, it is level-complete within GFS and sparse only across models.

REPS 10 km ensemble — supported

In ECCC’s Regional Ensemble Prediction System, every member is derived as its own atmosphere. The published file carries the percentile spread of the derived quantities, including per-level ensemble soundings. Ensemble values describes the product semantics.

FactValue
Members21 (a control plus 20 perturbed)
Availabilitycomplete ≈ T+3:40–3:45
PathDatamart only, under YYYYMMDD/WXO-DD/ensemble/reps/10km/grib2/HH/hhh/. The legacy /ensemble/reps/ tree is dead (404)
Levelsisobaric 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. There is no partial fetch, because files are whole-domain and all-members with no index
Verified2026-08-08

Quirks:

  • Every raw-variable file stacks all 21 members as GRIB messages keyed by perturbationNumber, with 0 the control (typeOfEnsembleForecast 1, then 4 for perturbed members). There are no per-member files and no upstream percentile products for raw variables. The forecast engine computes percentiles from the members itself.
  • Per-member wind exists at every level. The five curated levels publish as sounding levels (1000/925/850/700/500). 500 doubles as the parcel-search headroom. 1000 (and at mountain sites also 925) typically sits below REPS model terrain, and the derivation’s own filter drops it per member.
  • No dew point exists in any form. Level and surface moisture come from RH, converted against temperature.
  • No WDIR/WIND exists at levels. The rotated grid’s UGRD/VGRD are 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.
  • Hour 000 publishes no flux or precipitation files. Every later step carries SHTFL_SFC/LHTFL_SFC per member.
  • None of the science-field families exists per member. There is no gust, no CAPE/CIN, no PBL height, and only total cloud (full 00Z/024 listing inventoried, 003 re-checked, 2026-08-08). An ensemble CAPE-spread product cannot be built from this feed. GEPS supplies it.

GEPS 0.5° ensemble — supported

ECCC’s Global Ensemble Prediction System extends the REPS ensemble product from three days to sixteen. It also adds per-member storm-risk spread, the one thing REPS cannot supply.

FactValue
Members21 (a control plus 20 perturbed, one all-members file per field exactly as in REPS)
Availabilitycomplete ≈ T+5:07
PathYYYYMMDD/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, rather than the MSC scheme the deterministic models migrated to
Retentionmatches 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. It is the heaviest feed the forecast engine carries, and the reference operator schedule builds it last
Verified2026-08-08

Quirks:

  • The feed runs its own schedule. It is 3-hourly to 192 hours, then 6-hourly to 384. The occasional Thursday 00Z extension to 936 hours is not fetched.
  • Nothing is rotated, unlike REPS. The grid is a regular global lat-lon grid with uvRelativeToGrid=0, and components are earth-relative.
  • The HGT_SFC orography is in decametres, and its GRIB metadata mislabels it [verified 2026-08-08]. The field decodes as units=m, paramId=228002, which is indistinguishable from REPS’s genuinely metric field, but the values are dam. The global maximum is 586.3, which ×10 is the smoothed Himalaya. One founding site reads 153.6, which is 1 536 m, beside GDPS’s 1 525 m. Pressure-level HGT_ISBL files are true metres. The builder scales ×10 and guards against both this bug and its inverse. Any consumer of the raw feed must do the same.
  • Per-member surface-based CAPE_SFC and CIN_SFC exist at every step (97 files per step; the inventory is identical at hours 024, 198, and 384). They provide the ensemble CAPE/CIN percentile spread REPS cannot, published as conditional percentile blocks. The member spread is real. At one site on the verification day, CAPE ranged from 167 to 1 311 J/kg across the 21 members.
  • GEPS’s CAPE sentinel is exactly −1, the HRDPS family’s marker, and differs from RDPS/GDPS’s 9999. Real GEPS member CAPE reached 9 755 J/kg on the verification 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/HGT and per-member UGRD/VGRD are at 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. There is no dew point in any form (moisture is RH at the levels and at 2 m) and no WDIR anywhere, so direction comes from the earth-relative components.
  • 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 3 h then 6 h cadence. Precipitation uses the same run-total differencing. Hour 000 publishes neither, so the first window’s baseline is zero by definition.
  • Only total cloud exists per member. Gust and PBL height are absent too, and are declared false as they are for REPS.
  • Verify every download against Content-Length. One GEPS fetch returned another model’s bytes and was correct on retry. Because of it, the Datamart client now length-checks every download. See Seven forecast-data failures that passed parsing.

Experimental feeds

These catalogue entries are declared experimental. Each section records what keeps the flag on.

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 works only in 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. Its gusts follow the shared ECCC hour-max semantics, but its precipitation does not. The builder reads PRATE_SFC_0 × 3600 and declares precipitation: "instantRate", the only ECCC model that does.

FactValue
Transportwhole-domain GRIB2 on the alpha Datamart, no subsetting
Retentionroughly 24 hours
Science tokensGUST_TGL_10/GUST_MAX_TGL_10, CAPE_ETAL_10000 (eta 1.0: surface-based), HPBL_SFC_0

Quirks:

  • The curated band is the 9-level 925–600 hPa set. The other ECCC deterministic feeds sample the 14-level 1015–600 band. The builder samples no vertical velocity, and the catalogue declares verticalVelocity: false.
  • 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 terrain gain is measurable. One launch’s measured elevation (site-context’s elevation pick) 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.

RRFS 3 km — supported, experimental

The Rapid Refresh Forecast System is the verified NAM successor. The two NAM entries collapse into a single rrfs leg with the nest’s 3 km resolution and the parent’s 84 h horizon. The parallel feed went live on NOMADS 2026-08-11 per SCN 26-48 Updated. The entry stays experimental until the operational feed lands and a real scheduled run survives.

FactValue
Transportthe noaa-rrfs-pds bucket, reading rrfs.tCCz.prslev.3km.fFFF.conus.grib2 plus the rrfs.tCCz.2dfld.3km.fFFF.conus.grib2 science companion, both with .idx and fetched by byte range. This is the operational naming from SCN 26-48, verified layout-identical on the parallel and prototype trees
Availabilityt00z f084 landed ≈ T+3:33 (bucket object timestamps, 2026-08-12)
Cost~588 MB per whole prslev file (675 records). Ranged reads are the difference between ~70 records and ~50 GiB per run
Verified2026-08-13, against the live parallel feed and the last prototype cycles

During the parallel phase (verified 2026-08-13) the NOMADS para tree carries no .idx sidecars. The bucket carries one beside every GRIB2, and it mirrored the prototype until that feed froze at 2026-08-12 ~13Z, the prototype’s documented end. The AWS registry entry commits pre-implementation and operational data to this same bucket, and NOAA GSL reports the same para-tree gap (NOAA-GSL/zyra#364). The builder defaults to the bucket’s rrfs_public/ prefix, and METEO_RRFS_BASE re-points it without a release if the destination moves.

Quirks:

  • Only 00/06/12/18Z publish the isobaric prslev files, to 84 h. The other hourly cycles publish sub-hourly 2dfld output to 18 h and nothing a profile can be built from (verified live 2026-08-13 on the para tree). That is why the catalogue’s cadence is 6 hours.
  • RRFS is one 3 km North-America integration. conus, ak, hi, and pr are distribution cutouts, and the CONUS cutout is exactly the HRRR grid: Lambert 1799 × 1059, Latin 38.5°, LoV 262.5°, 3 km, grid-relative winds, re-verified by decode 2026-08-13 (sites 224–236 km inside). Which cutout a builder fetches is a transport detail, so the slug is rrfs rather than rrfs-conus.
  • Vertical velocity is geometric. prslev carries the full 9-level curated band with TMP/RH/DPT/HGT/UGRD/VGRD (DPT is a true level dew point), but vertical velocity is DZDT (geometric w, m/s) at all nine levels. VVEL does not exist (zero records in the live index). The builder converts through the hydrostatic relation ω ≈ −ρgw, with dry-air density ρ = p/(R_d·T) from the level’s own temperature. The virtual-temperature correction it ignores is ≲1 %. The catalogue declares verticalVelocity: "fromGeometricW" so consumers can label converted lift differently from native omega.
  • MSL pressure is MSLET, where HRRR uses MSLMA and NAM uses PRMSL. Records are selected by that exact name.
  • APCP publishes a (h−1)–h hour acc record at every step beside the run total, so mm over one hour is mm/h directly with no differencing. An instantaneous PRATE and an hourly-max PRATE are published too and are not read.
  • RRFS-SD speciates its aerosols, so the idx qualifier must be read. Where HRRR carried one unspeciated smoke tracer, RRFS publishes MASSDEN and COLMD once per species (aerosol=Particulate organic matter dry, aerosol=Dust dry, in size bins) on the same variable/level/forecast triple. A reader that ignores the trailing idx tokens gets whichever species the file lists first.
  • The smoke block reads the biomass-burning tracer (particulate organic matter, PM2.5). It reads surface MASSDEN at 8 m (kg/m³ → µg/m³; it decoded 16.7 µg/m³ at a founding site on the smoky verification day) and COLMD column mass (kg/m² → mg/m²).
  • AOTK is published unqualified and is the total-aerosol optical thickness (smoke plus dust). It is the model’s own sun-dimming number, published as the smoke block’s aot.
  • The aerosols are radiatively coupled. RRFS-SD v1 includes the aerosol direct feedback to radiation (Li et al. 2025, GRL, 10.1029/2025GL115384), so published fluxes and derived quantities already account for smoke. The catalogue declares smoke: "radiativelyCoupled" and each document echoes it.
  • The rest of the science set is complete hourly. It has instantaneous GUST, surface-based CAPE/CIN plus the variant menu, HPBL, and LCDC/MCDC/HCDC plus a boundary-layer TCDC.
  • Content may still move before implementation. NCEP warns that record content, order, and scaling may change. These facts are re-verified against the production paths at cutover.
  • REFS (five RRFS members plus HRRR-initialized members, to 60 h at 00/06/12/18Z, live on the para tree since 2026-08-11) is a potential future ensemble leg beside REPS and GEPS.

Retiring feeds

These catalogue entries have a declared sunset.

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, per SCN 26-48 Updated. The date was originally “on or about” 2026-08-31 and has since been rescheduled to October 6. Both catalogue entries declare the machine-readable sunset (date 2026-10-06, successor rrfs).

FactValue
Transportwhole-domain GRIB2 with .idx sidecars on the noaa-nam-pds bucket
12 km parentawphys, AWIPS grid 218; hourly to 36 h then 3-hourly, complete ≈ T+2:40
3 km CONUS nestconusnest.hiresf; complete ≈ T+2:39, on exactly HRRR’s Lambert grid (1799 × 1059, Latin 38.5°, LoV 262.5°), with founding sites ~200–236 km inside
Costnest ~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
Verified2026-08-08

Quirks:

  • awphys is the 12 km isobaric product, and awip12 is not. Live awip12 carries no isobaric band (208 records to awphys’s 454). Its one unique contribution is layered cloud (LCDC/MCDC/HCDC), which awphys lacks (TCDC only). The parent build 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 RH at all nine levels. The nest publishes level DPT only at 925/850/700 and awphys publishes none, so level dew points are computed from RH. A true 2 m dew point is hourly on both products.
  • The nest has 3-h-average flux twins (paramId 235033, PDT 8) beside the genuinely instantaneous un-suffixed SHTFL/LHTFL (PDT 0). The idx ave suffix distinguishes the twins cleanly, and the builder skips them by that suffix.
  • Winds are grid-relative on each product’s own Lambert cone. The nest shares HRRR’s projection parameters and the parent uses Latin 25°/LoV 265°, so the rotation to true north is a per-product constant (~12° direction bias if skipped; confirmed 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.
  • The nest’s APCP bucket resets every 3 h, and the parent’s every 12 h through its hourly phase. 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-24 beside 21-24 at f24), so records are selected by the exact idx window token and never by variable name alone.
  • Nest fields carry a sparse bitmap (~76–105 of 1.9M points, which ecCodes surfaces as in-band 9999). The samplers publish a masked gridpoint as absence and never as a value.
  • 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.

Smoke and observation feeds

These are the catalogue’s smokeModels and observationModels entries.

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, and that page holds its verified paths, fields, units, and join semantics. The catalogue lists it under smokeModels, separate from models, so consumers written before smoke documents existed keep parsing.

FactValue
Transportstandard Datamart transport shared with the models above
Costthree 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 per-site observation documents (goes18-dsr, goes18-aod), and that page holds the products’ decode, quality, and geometry facts. The catalogue lists them under observationModels, separate from models in the same way as smokeModels.

FactValue
Productstwo ABI L2 full-disk products: Downward Shortwave Radiation under ABI-L2-DSRF and Aerosol Optical Depth under ABI-L2-AODF
Transportanonymous NetCDF on the noaa-goes18 bucket
Cadencescan Mode 6, with scans starting at :00/:10/…. There are no runs and no forecast hours; the builder fetches granules newer than the last published instant
LatencyDSRF 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 sizestrack 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
Verified2026-08-10

Quirks:

  • The DSRF archive changes character in April 2024 (last legacy day 2024-04-16, NOAA OSPO message MSG_20240307_1955). The Enterprise algorithm’s 10-minute product at 2 km on the ABI fixed grid replaced the Baseline algorithm’s hourly full-disk DSR on a 0.5° lat/lon grid. Older documentation, including the PUG Volume 5 DSR chapter, describes the legacy product. The authorities for the current product are the file metadata and the Enterprise SRB ATBD v5.0 (Laszlo, Kim & Liu 2020).
  • AODF switched to the Enterprise (EPS) retrieval on 2024-02-06. The file format held, but the retrieval changed. The most consequential change is the quantitative view-zenith limit, raised from 60° to 78.5°. The observation document reference explains what that means for a published value. 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) full-row chunks, and the reference deployment’s four-site catalogue spanned rows 470–481. That is two value chunks plus two DQF chunks per granule: ~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 instead of ~11 GB. The current builder downloads each granule whole, and Provider transports records why.

Evaluated, not adopted

The three feeds below are decision records. None has a slug, and none appears in the catalogue or the grid above. Each section states what ruled the feed out and what would reopen the question.

ECMWF IFS open data

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, so w* has no direct input. The physics would need a radiation-proxy flux, meaning net solar radiation partitioned by an assumed Bowen ratio. That method produces a less defensible forecast than models that publish surface fluxes, and it 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, and 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

NOAA’s Rapid Refresh survives the 2026-10-06 retirements (RRFSv1 replaces NAM, HREF, SREF, and HiresW only) and cycles hourly. It runs to 21 h every hour and to 51 h at 03/09/15/21Z, complete ≈ T+1:15–1:35 (verified 2026-08-08). Two findings decided against it.

  • The native wrfprs product uses NCEP-local GRIB template 32769 (rotated lat-lon, Arakawa non-E), which ecCodes cannot geolocate. The usable awp130pgrb carries the full 9-level curated band and the science set but no heat fluxes. Those live only in the awp130bgrb companion, so the contract would need two files per hour.
  • HRRR already publishes at 3 km everything RAP publishes for this product. The only addition would be the 51 h tail on four cycles, and RAP’s own lifetime is bounded by RRFSv2 (MPAS engine, 2027–28).

RAP is left out by decision. The feed is viable, but HRRR, a finer model on the same buckets, already does its job here.

ICON global

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, which would be a genuine cross-model disagreement signal. It is published as open data under CC-BY 4.0. Facts verified 2026-08-08:

  • Open data serves only the native icosahedral grid (R3B07), as one bz2-compressed GRIB2 file per field, level, and step. There is no .idx, and retention is ~1 day, so the feed can only be fetched fresh. The 00Z 180 h file landed ≈ T+3:29. ICON-EU and ICON-D2 do not cover BC. Sampling is tractable, because DWD publishes time-invariant CLAT/CLON and a cached nearest-cell index per site works. Adoption costs a new transport (bz2, thousands of per-field files, an unstructured-grid sampler) rather than new physics work.
  • 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. They need GFS/GEPS-style differencing, and DWD’s positive-downward sign convention must be verified and flipped at build. Gust is VMAX_10M (hour-max family), and layered cloud (CLCT/CLCL/CLCM/CLCH) exists.
  • There is no PBL height, no surface-based CAPE, and no CIN (only CAPE_ML and CAPE_CON). Under the current contract’s surface-based pair, cape, cin, and pblHeight would all be declared false.

ICON is not adopted for now. The feed poses no blocker, and the catalogue can revisit whether the independent lineage justifies a transport of its own.

Licensing and attribution

  • ECCC data (HRDPS, RDPS, GDPS, REPS, GEPS) is used under the Environment and Climate Change Canada Data Server End-use Licence. Derived profiles carry the attribution requirement.
  • NOAA data (HRRR, RRFS, GFS, NAM, GOES-18, and RAP if adopted) is 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. It is relevant only if an IFS-based leg is adopted later.
  • DWD open data is CC-BY 4.0. It is relevant only if an ICON leg is adopted later.

Provider overviews: HRDPS, RDPS, GDPS, REPS, GEPS, HRRR, GFS, NAM, RRFS, and GOES.