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.
| Model | Provider | Kind | Grid | Runs used (UTC) · step | Horizon | Availability | Cost per run | 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 | T+2:55 → T+3:55 | ~7.8 GiB | Datamart, whole-domain GRIB2 | 2026-08-08 |
| HRRR CONUShrrr-conus | NOAA | deterministic | 3 km | 00/06/12/18Z · 1 h step | 48 h | ~T+107 min | — | Cloud bucket, byte-ranged GRIB2 | 2026-08-11 |
| RRFSrrfsexperimental feed | NOAA | deterministic | 3 km | 00/06/12/18Z · 1 h step | 84 h | f084 ≈ T+3:33 | — | noaa-rrfs-pds, byte-ranged GRIB2, two files | 2026-08-13 |
| RDPSrdps | ECCC | deterministic | 10 km | 00/06/12/18Z · 1 h step | 84 h | complete ≈ T+3:05–3:10 | ~4.1 GiB | Datamart, whole-domain GRIB2 | 2026-08-08 |
| GDPSgdps | ECCC | deterministic | 15 km | 00/12Z · 3 h step | 240 h | complete ≈ T+5:05 | ~8.3 GiB | 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 | complete ≈ T+2:40 | ~0.7 GiB | 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 | complete ≈ T+2:39 | ~6.7 GiB | noaa-nam-pds, byte-ranged GRIB2 | 2026-08-08 |
| REPSreps | ECCC | ensemble | 10 km | 00/06/12/18Z · 3 h step | 72 h | complete ≈ T+3:40–3:45 | ~9.4 GiB | Datamart, all-members GRIB2 | 2026-08-08 |
| GEPSgeps | ECCC | ensemble | 50 km | 00/12Z · 3 h step | 384 h | complete ≈ T+5:07 | ~14 GiB | Datamart, all-members GRIB2 | 2026-08-08 |
| RAQDPS wildfire smokeraqdpsexperimental feed | ECCC | deterministic · smoke | 10 km | 00/12Z · 1 h step | 72 h | — | ~43 MB | Datamart, whole-domain GRIB2 | — |
| GOES-18 downward shortwavegoes18-dsr | NOAA | observation | 3 km | 10 min granules | — | ~6–7 min after scan end | — | noaa-goes18, whole NetCDF granules | 2026-08-10 |
| GOES-18 aerosol optical depthgoes18-aod | NOAA | observation | 3 km | 10 min granules | — | ~3.3 min after scan end | — | noaa-goes18, whole NetCDF granules | 2026-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.
| Model | Terrain | Heat fluxes | Precipitation | Gust | CAPE sentinel | CIN | Vertical velocity |
|---|---|---|---|---|---|---|---|
| HRDPS West | every hour | instant | instant rate | hour-max | −1 | absent | none |
| HRDPS continental | every hour | instant | 1 h window | hour-max | −1 | absent | omega, 3 levels |
| HRRR | every hour | instant | instant rate | instant | none | present | omega, all levels |
| RRFS | every hour | instant | 1 h bucket | instant | none | present | geometric w → omega |
| RDPS | PT000 only | instant | 1 h window | hour-max | 9999 | present | omega, 2 levels |
| GDPS | PT000 only | instant | run total, differenced | hour-max | 9999 | present | omega, 3 levels |
| GFS | every step | window averages, differenced | resetting buckets, differenced | instant | none | present | omega, all levels |
| NAM 12 km | every hour | instant | resetting buckets | instant | none | present | omega, all levels |
| NAM CONUS nest | every hour | instant | resetting buckets | instant | none | present | omega, all levels |
| REPS | PT000, per member | instant, per member | run total, differenced | none | — | absent | none |
| GEPS | PT000, per member | run-start integrals, differenced | run total, differenced | none | −1 | no sentinel | none |
| 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
forecastTimein 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.
| 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; unmirrored, and its tree is not date-rooted) |
| Tree | https://dd.weather.gc.ca/YYYYMMDD/WXO-DD/<model path>/HH/hhh/, rooted by date. 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 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 selection | per invocation via METEO_DATAMART_BASE |
| Rate limits | the 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 |
| Packing | grid_jpeg; ecCodes 2.48.0 decodes it |
| Verified | 2026-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-cacheheaders, and no directory-listing polls. AMQPS is the sanctioned push channel, andwget/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 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, the same as a fullcodes_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 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 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
blhat 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_EAtmis 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.
| Fact | Value |
|---|---|
| Availability | the run streams out in forecast-hour order from roughly T+2:55 to 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, 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). 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/WINDare earth-relative despite the rotated grid. This was verified at four points againstUGRD/VGRDrotated 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_Sfcgives 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.
| Fact | Value |
|---|---|
| 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, PlanetaryBoundaryLayerHeight_Sfc, all hourly |
| Cost | ~50 MB per step, ~4.1 GiB per run; the science fields add ~0.5 GiB per run |
| Verified | 2026-08-08 |
Quirks:
- Omega is sparse.
VerticalVelocityexists 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 isDewPointDepression. Precip-Accum1h_Sfcspans the whole horizon, so there is no run-total differencing anywhere.WindDirearth-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.
| Fact | Value |
|---|---|
| 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:
- 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.
VerticalVelocityexists 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.
| Fact | Value |
|---|---|
| Availability | published to public cloud buckets roughly T+107 minutes after the reference time |
| Fetch unit | all 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 |
| Verified | 2026-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 fcstrecord besideGUST:surfaceis 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 159blh, in metres AGL. - Prognostic wildfire smoke ships in the same files (verified
2026-08-09 in both
wrfprsandwrfsfcindexes). The fields areMASSDENat 8 m AGL (kg/m³, published as µg/m³),COLMDcolumn mass (kg/m², published as mg/m²), andAOTKcolumn aerosol optical thickness. They cost three extra ranged fetches per hour and are published as the profile’s per-hoursmokeblock. AOTKis 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/HCDCare 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.wrfprshas 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.
| Fact | Value |
|---|---|
| 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. That is why the GFS entry inmodels.jsondeclares eight levels where the other NOAA deterministic feeds declare nine. -
Model terrain ships every step. Each
pgrb2.0p25file has oneHGT:surfacerecord, 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/LHTFLexist 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
h0is the window start andA(h)the published average at hourh. 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.
-
HPBLis 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.
TCDCis published at 22 isobaric levels (50–1000 hPa, instantaneous, every step including f000), and the builder publishes it ascloudFractionPercenton 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.
| Fact | Value |
|---|---|
| Members | 21 (a control plus 20 perturbed) |
| 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) |
| 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. There is no partial fetch, because files are whole-domain and all-members with no index |
| Verified | 2026-08-08 |
Quirks:
- Every raw-variable file stacks all 21 members as GRIB messages keyed
by
perturbationNumber, with 0 the control (typeOfEnsembleForecast1, 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/WINDexists at 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. - Hour 000 publishes no flux or precipitation files. Every later step
carries
SHTFL_SFC/LHTFL_SFCper 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.
| Fact | Value |
|---|---|
| Members | 21 (a control plus 20 perturbed, one all-members file per field exactly as in REPS) |
| 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, rather than 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. It is the heaviest feed the forecast engine carries, and the reference operator schedule builds it last |
| Verified | 2026-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_SFCorography is in decametres, and its GRIB metadata mislabels it [verified 2026-08-08]. The field decodes asunits=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-levelHGT_ISBLfiles 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_SFCandCIN_SFCexist 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/HGTand per-memberUGRD/VGRDare 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 isRHat the levels and at 2 m) and noWDIRanywhere, 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.
| Fact | Value |
|---|---|
| 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), 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
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.
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.
| Fact | Value |
|---|---|
| Transport | the 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 |
| Availability | t00z 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 |
| Verified | 2026-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
prslevfiles, to 84 h. The other hourly cycles publish sub-hourly2dfldoutput 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, andprare 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 isrrfsrather thanrrfs-conus. - Vertical velocity is geometric.
prslevcarries the full 9-level curated band with TMP/RH/DPT/HGT/UGRD/VGRD (DPT is a true level dew point), but vertical velocity isDZDT(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 declaresverticalVelocity: "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 accrecord 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²).
AOTKis 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’saot.- 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).
| Fact | Value |
|---|---|
| Transport | whole-domain GRIB2 with .idx sidecars on the noaa-nam-pds bucket |
| 12 km parent | awphys, AWIPS grid 218; hourly to 36 h then 3-hourly, complete ≈ T+2:40 |
| 3 km CONUS nest | conusnest.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 |
| 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, andawip12is 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
RHat all nine levels. The nest publishes levelDPTonly 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 idxavesuffix 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-24beside21-24at 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.
| Fact | Value |
|---|---|
| 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 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.
| 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 | scan 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 |
| 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, 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
wrfprsproduct uses NCEP-local GRIB template 32769 (rotated lat-lon, Arakawa non-E), which ecCodes cannot geolocate. The usableawp130pgrbcarries the full 9-level curated band and the science set but no heat fluxes. Those live only in theawp130bgrbcompanion, 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 isVMAX_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, andpblHeightwould 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.