Publish the weather for your launches.
Open packages that read the weather models, derive soaring conditions, and show live launch wind — published by you, on your site, for your pilots.
What your pilots get
Meteogram
Point forecasts, drawn for soaring
Station
Wind, gusts, and trend — live components
From the providers to your page
The forecast engine downloads ECCC and NOAA model files and writes JSON forecasts to static hosting you control. Station adapters poll the launch's weather stations and serve every reading as one feed.
@azohra/meteo.briefing
Reads the forecast and tells you what kind of day it is
The package reads published forecasts and answers in typed findings; the Meteogram is its visual tier. Toggle a layer to see how the chart builds.
- analyze
- Thermal window, cap timing, wind exceedance
- compare
- Where models agree and diverge over one launch
- history
- How a model's successive runs converge
- meteogram
- Wind, stability, moisture, and the heights that limit a climb, hour by hour
A fair-weather convective day
A complete fair-weather convective cycle. This Meteogram shows one atmospheric profile in Etc/UTC. Morning stability gives way to a deep midday unstable column. The boundary layer, usable lift, and cloud base follow distinct arcs beneath light wind that veers gently and gains only a few km/h with height.
@azohra/meteo.station
Live wind from the launch's weather station
Adapters read WindNerd, Tempest, and Campbell hardware into one documented contract, and the components render the readings on your own page — no iframe.
- mount
<meteo-station-card station-id="launch-ridge">— the element your page mounts- bindings
- Custom elements, framework-free; the React binding renders the identical DOM
- thresholds
{"unit":"kmh","values":[12,20,28]}— this card's wind bands, declared on the feed
@azohra/meteo.forecast
Publish forecasts anyone can read
meteo forecast build fetches each model's newest run, derives the soaring numbers, and writes static JSON at stable paths — a schemaVersion on every document. curl is a complete client.
publish, then read it back · meteo.azohra.com/data-sample
# your sites.json in — derived forecasts out, on your schedule
$ meteo forecast build# one site, one model, every forecast hour + derived quantities
$ curl -sS \
https://meteo.azohra.com/data-sample/hrdps-continental/sites/test-hill.json \
| jq '.hours[] | {validAt} + .derived'# the stable paths, under any operator's root
<root>/models.json
<root>/<model>/manifest.json
<root>/<model>/sites/<slug>.json- Configure your launchessites.json declares each launch; the engine fetches, derives, and publishes on your schedule.Read the reference
- Model cataloguemodels.json declares each model's grid, cadence, capabilities, and lifecycle — absences included.Read the reference
- Contract, schemas, and unitsEvery document has a published JSON Schema, so non-JS consumers are first-class. SI units, declared semantics.Read the reference
- Forecast historyAppend-only monthly archives beside every current run — compare a forecast with what was published before.Read the reference
@azohra/meteo.grib · @azohra/meteo.j2k
Read the provider bytes yourself
Beneath the engine sit two pure-TypeScript decoders, each published on its own and exact against the reference codecs. Both cores run in the browser: no node: imports, no ambient I/O, no WASM.
pnpm add @azohra/meteo.gribGRIB2 in pure TypeScriptRotated lat-lon and Lambert grids, complex packing, multi-field messages, NOMADS .idx byte-range helpers — written because no maintained JavaScript decoder covered the grids ECCC and NOAA actually ship. Decoded values match ecCodes bit for bit.Read the @azohra/meteo.grib docspnpm add @azohra/meteo.j2kThe JPEG 2000 inside itDecodes the codestreams inside ECCC's GRIB2, scoped to exactly the subset those feeds ship — anything outside it fails loudly with a named error. Every step cites its clause of the JPEG 2000 standard, and it is the codec @azohra/meteo.grib runs in production.Read the @azohra/meteo.j2k docs
Built for free flight
Clubs and pilots can publish their own forecasts and station pages with inspectable, reusable, open tools — every derivation checkable, every document reproducible.
Made with ♥ in Nelson, BC — by a pilot, for pilots.
ECCC-derived profiles retain the ECCC source attribution. NOAA products are public domain. Code is MIT licensed.