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.

From providers and stations to your pageForecast row: ECCC and NOAA model files feed the forecast engine, which publishes public JSON at stable paths, shown in the Data section below. Station row: WindNerd, Tempest, and Campbell stations are normalized by vendor adapters into a single documented contract and served by a mountable feed handler. The @azohra packages render both on your own site or app, as Meteograms and live station displays.FORECAST · MODEL PROVIDERS → OPEN DATASTATION · WEATHER STATIONS → ONE FEEDECCC · NOAAHRDPS · RDPS · GDPSHRRR · GFS · NAMprovider model fieldsForecast enginemeteo forecast buildsamples each catalogued site,derives soaring quantitiespublishesPublished JSONstorage you controlpublic JSON at stable paths — § Dataversioned schema · append-only historyWeather stationsWindNerd · TempestCampbell · your ownany hardwareVendor adaptersone documented contractnormalized readings and history;outages degrade with a reasonservesYour station feedcreateStationFeedHandlerGET /api/wind/feedthe whole fleet, one documentYour site or apppnpm add @azohra/*▸ Meteogram — scene → SVG▸ Station — live componentsyour palette, thresholds, policy

@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.

Pressure kPa 90.3 90 Precip mm/h 0.5 0 Cloud % 100 0 H M L Layers % w* m/s 3 0 CAPE J/kg 1500 0 900m 2953ft 1604m 5262ft 2308m 7572ft 3012m 9882ft 3716m 12192ft 4420m 14501ft 10 11 12 13 14 15 16 17 18 19 11° 16° 23° 25° 24° 17° 13° launch 1050 m G7 G9 G11 G14 G18 G22 G20 G16 G11 G9 10° 20°
Usable lift Cloud base Boundary layer Model boundary layer 0 °C Condensation LAPSE RATEVery unstableUnstableConditional strongConditionalNear neutralStableInvertedStrong inversion-3-2.5-2-1.5-1.200.5UnstableConditional instabilityStableInverted
The parcel boundary, cloud base, and usable-lift top follow different paths because each measures a different limit.Units Altitude m MSL and ft MSL; wind barbs in km/h; surface strips as labelled

@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

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.