agentsclimarketplace

Tempest cli

Skill magnus919/agent-skills/tempest-cli

Query hyper-local weather from a WeatherFlow Tempest station: current conditions, 7-day forecast, historical observations, and real-time UDP broadcasts. Use when the user asks about the weather, temperature, rain, wind, humidity, forecast, or wants conditions from their own station rather than a generic weather service.From its SKILL.md

Install
npx -y skills add magnus919/agent-skills --skill tempest-cli

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

What its file declares

Copied from the file, not written here

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

6.9 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it

tempest-cli — Hyper-Local Weather from Your Tempest Station

Query live weather data from a WeatherFlow Tempest station. Supports REST API access to current conditions, forecasts, and history via the cloud, plus local UDP broadcast reception from your hub on the same LAN.

Setup

  1. Get a personal access token at weatherflow.com (Account → API Tokens)
  2. Set it in your environment:
export TEMPEST_TOKEN="your-token-here"

The CLI reads TEMPEST_TOKEN from the environment. It also falls back to reading ~/.tempest.env if the env var is not set (for agent subprocesses that don't inherit env vars). --help and --dry-run work without a token.

Essential Commands

current — Current conditions

tempest-cli current                                             # human-readable
tempest-cli current --station-id 12345 --device-id 67890        # specific hardware
tempest-cli current --json                                      # machine-readable

If you have one station, it auto-selects it and picks the best sensor (ST > SKY > AIR, skips the HB hub). Pass --station-id or --device-id to override.

forecast — Multi-day forecast (+ current conditions + hourly)

tempest-cli forecast                        # current + 5-day daily + 12-hour hourly
tempest-cli forecast --days 3               # fewer days
tempest-cli forecast --station-id 12345     # specific station
tempest-cli forecast --json                 # machine-readable

stations — List your stations and devices

tempest-cli stations                    # shows station names, IDs, device types, serials
tempest-cli stations --json             # full device inventory

Use this first if you don't know your station ID or want to see what sensors are online.

obs — Historical observations

tempest-cli obs --device-id 67890 --days 1       # last 24 hours
tempest-cli obs --device-id 67890 --days 7       # last week
tempest-cli obs --device-id 67890 --json         # machine-readable

udp listen — Real-time broadcasts from the hub

tempest-cli udp listen                          # listen indefinitely (Ctrl-C to stop)
tempest-cli udp listen --timeout 30             # auto-stop after 30s
tempest-cli udp listen --show-all               # include hub_status messages

Requires being on the same LAN as the hub (port 50222 UDP broadcast). Receives observations, rapid wind updates, lightning strike events, and precipitation start events in real time.

Data Reference

obs_st field layout (Tempest all-in-one)

Observations from the Tempest sensor arrive as positional arrays. The CLI decodes them, but if you're reading raw JSON output, this map tells you what each index means:

IndexFieldUnitsNotes
0epochseconds UTC
1wind_lullm/sMinimum 3-second sample
2wind_avgm/sAverage over report interval
3wind_gustm/sMaximum 3-second sample
4wind_directiondegrees0=N
5wind_sample_intervalseconds
6station_pressureMB
7air_temperatureCCLI converts to °F
8relative_humidity%
9illuminancelux
10uvindex
11solar_radiationW/m²
12rain_accumulationmmOver last interval
13precipitation_typeenum0=none 1=rain 2=hail
14avg_strike_distancekmLightning
15strike_countcountLightning
16batteryvolts~2.6V normal, ~2.5V low
17report_intervalminutes
18local_day_rain_accumulationmm

See references/tempest-api-field-layouts.md for the full obs_air and obs_sky field layouts.

Unit conversions the CLI applies

InputOutputConversion
°C°Fc * 9/5 + 32
m/smphmps * 2.237
MBinHgmb * 0.02953
mminmm / 25.4
degreescardinalN, NNE, NE, ..., NNW

Known Gotchas

The API is metric-native

All raw observation data comes in metric (Celsius, m/s, MB, mm). The CLI converts for human display. If you're parsing raw --json output, expect metric values. The better_forecast endpoint returns unit-converted values based on station preferences — check the units key in the response — but temperatures are always in Celsius regardless.

Timestamps are epoch integers, not strings

The API returns Unix epoch timestamps, not ISO 8601 strings. The daily[].day_start_local field is an int, not "2026-05-10T00:00:00". Hourly objects have local_hour (int 0-23) and local_day (int) — there is no local_time or time_string field. The CLI handles this, but raw JSON consumers need to convert with datetime.fromtimestamp(ts).

Nested forecast response

The better_forecast endpoint nests daily and hourly arrays under a forecast wrapper key, not at the top level:

# Correct path:
fc = data.get("forecast", {})
days = fc.get("daily", [])
hours = fc.get("hourly", [])

The top-level keys are: current_conditions (dict), forecast (dict with daily + hourly), station (metadata), units, status, timezone.

Device type filtering

A station returns all devices including the hub (device_type HB). The hub cannot serve observations. The CLI auto-filters HB devices and prefers ST > SKY > AIR. If you're bypassing the CLI and calling the API directly, always filter out device_type HB before querying observation endpoints.

Global flags in any position

--json, --dry-run, --quiet, and --verbose work anywhere in the command:

tempest-cli --json current --device-id 67890        # flag before subcommand
tempest-cli current --device-id 67890 --json         # flag after subcommand

References

  • references/tempest-api-field-layouts.md — Full field index maps for obs_st, obs_air, and obs_sky observation arrays. Read when decoding raw JSON output or building on top of the Tempest API.
  • scripts/tempest-cli — The CLI binary itself. Designed following the cli-builder patterns: non-interactive, --json, --dry-run, --quiet, --verbose, idempotent, dual-output via emit(), and structured logging.

What ships with it: 3 files

33.3 KB alongside SKILL.md, 1 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.