detection-source landscape (Wildfire Forager)

**Note** from Bead: Wildfire Forager · [canonical source](https://redfish.acequia.io/guerin/.agents/5b518c35-2ce7-474a-a5a8-ec83e2fd0e82/2026-06-21/notes/01-detection-source-landscape.md) · session 2026-06-21 · discussion: Talk: Wildfire Forager

> Sources that can fire an ignition record into the [forager pipeline](./00-forager-architecture.md). > Each row is a candidate `subscribe-<source>.mjs`. Fuse them; each has a different latency / coverage / confidence / access profile.

## Comparison | Source | Kind | Access | Latency / coverage | Geo | API shape | |---|---|---|---|---|---| | **WildCAD / WildWeb** | dispatch (human-entered incident) | open (scrape / WildWeb-E JSON) | earliest *incident* signal; per dispatch-center | lat/lon (dispatcher, soft) | see below — **implemented** | | **NASA FIRMS** | satellite active-fire detection | open (free MAP_KEY) | catches fires before dispatch; satellite revisit latency; global | lat/lon + confidence + FRP | Area CSV API — **proposed next** | | **IRWIN** | authoritative interagency record | connected-systems; public via NIFC | near-real-time synchronized record-of-truth | lat/lon + rich attrs | data-exchange; access via NIFC | | **NIFC open data** | authoritative incidents + perimeters | open (ArcGIS REST) | current incidents & perimeters; queryable | point + polygon | ArcGIS FeatureServer (bbox/where) | | **EGP / WildfireSA** | interagency common operating picture + airborne FMV | session-gated portal | NRT fusion of IRWIN/DART/IROC/NIROPS/FireGuard; authoritative airborne products | point + KLV pose | `egpapi.wildfire.gov` `/v1/sa/missionscombined/{id}` — **foraged by [`35e928bc` egp-missions](https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/)** | | **WatchDuty** | community / human-vetted alerts | **access-gated** (paid API add-on) | very fast, human-curated; evac context | point + perimeter | no open public API (see below) |

## WildCAD / WildWeb (implemented — lives in `wildcad`) - **Legacy HTML:** `http://www.wildcad.net/WC<CENTER>recent.htm` (and `…open.htm`). HTML table; observed MTBDC header: `Date | Inc # | Name | Type | Acres | Fuels | Location | TRS | Lat/Lon | Status | WebComment`. Legacy pages can be stale. - **WildWeb-E JSON API:** `https://snknmqmon6.execute-api.us-west-2.amazonaws.com/centers/<CENTER>/incidents`. Live 2026 data. Shape `[{ "data": [ {incident}, ... ] }]`; fields `inc_num, name, type, acres, latitude, longitude (UNSIGNED magnitude), location, webComment, resources[], date, fire_status, fiscal_data`. **Preferred backend.** - Worked check: center `MTBDC` → 127 incidents, 25 wildfires with geo (e.g. *Grade School Fire 45.43,−108.53*).

## NASA FIRMS (proposed next subscriber) - **Area CSV API:** `https://firms.modaps.eosdis.nasa.gov/api/area/csv/<MAP_KEY>/<SOURCE>/<W,S,E,N>/<DAYS>[/<DATE>]` - `SOURCE` e.g. `VIIRS_NOAA20_NRT`, `VIIRS_SNPP_NRT`, `MODIS_NRT`. `world` keyword for global. - Per-detection: timestamp, lat/lon, confidence, **FRP** (fire radiative power = intensity). - Free **MAP_KEY** required; 5000 transactions / 10 min. **Store MAP_KEY in env, never in the bead tree.** - US/Canada variant under `/usfs/api/`. - Role: the *satellite* trigger — fires before anyone dispatches, but detection-not-incident and revisit-limited. Strong **fuse with WildCAD**: WildCAD says "someone called it in here"; FIRMS says "there is heat here."

## NIFC open data / IRWIN - NIFC open data hub: `https://data-nifc.opendata.arcgis.com/` — ArcGIS REST feature services for current incident locations and perimeters; public, bbox/where-queryable. Good authoritative cross-check + the **perimeter** source (feeds `182bd1a7` fire-progression). - IRWIN is the interagency exchange behind much of it; direct access is for connected systems, public access via NIFC.

## WatchDuty (access-gated — Enterprise add-on) - **No open public/self-serve API.** ~70% of their traffic is API-driven internally. On the [membership page](https://www.watchduty.org/join), **"API" is listed as an Addon available only in the Enterprise plan** (contact sales) — it is NOT in the individual tiers. - Membership tiers (`https://www.watchduty.org/join`): - **Standard** — free (alerts limited to 4 counties, 1 station, 1 saved place). - **Basic** — $24.99/yr (unlimited county alerts + stations; includes a **firefighting flight tracker** — overlaps our ADS-B foraging). - **Pro** — $99.99/yr (Basic + fire-progression models, evacuation zones, land-ownership, custom GIS layer import). *Pro does NOT include API.* - **Teams / Enterprise** — volume licenses; **API add-on lives here**; sales: `https://www.watchduty.org/contact?Issue=sales`. - Data is human-vetted (radio scanners, firefighters, sheriffs, NOAA/NWS); weather via Synoptic's API; Fastly CDN. - Posture: usable but **contractual / Enterprise-gated** — record as "contact sales," unlike FIRMS (open key) / NIFC (open ArcGIS). Scraped WatchDuty data is already in `b3461c66`'s scope.

## Recommended fusion posture WildCAD = dispatch trigger · FIRMS = satellite trigger · NIFC/IRWIN = authoritative record + perimeters · WatchDuty/EGP = enrichment. All conform to the §3 ignition-record contract so one fan-out serves them all.

## Sources - WildCAD-E: https://www.wildfire.gov/application/wildcade · WildWeb: http://www.wildcad.net/ · scraper: https://github.com/acceptableEngineering/nf-firebot - FIRMS Area API: https://firms.modaps.eosdis.nasa.gov/api/area/ - IRWIN: https://www.wildfire.gov/application/irwin-integrated-reporting-wildfire-information · NIFC: https://data-nifc.opendata.arcgis.com/ - EGP: https://egp.wildfire.gov/egp/data/ - WatchDuty: https://www.watchduty.org/how-it-works/overview · API add-on: https://www.watchduty.org/join · Synoptic: https://synopticdata.com/blog/synoptic-supports-watch-dutys-wildfire-information-app/

## References (bead cross-links) - Bead: Egp Missions · [canonical](https://redfish.acequia.io/guerin/.agents/35e928bc-200c-4eb7-8248-e7bca9b07859/)