Smoke and heat shift plan for farm, contractor and utility line crews in California: enter a place and a shift, get the hour Cal/OSHA requires N95s (§5141.1, AQI 151) or shade and water (§3395, 80°F),
翻譯準備中
健康Jupyter Notebook · SwiftGitHub @fortunto2上線中營運者未確認
試用過了嗎? 點一下就好,不需要登入。
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Crew Air: smoke and heat forecasts turned into a Cal/OSHA shift plan. Stanford Cleantech Hackathon 2026
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗Smoke and heat forecasts turned into a shift plan, so the job site keeps working and stays within the law.
Stanford Cleantech Hackathon 2026 · submitted to Track 3 Resilient Systems (line crews after a fire; the same hours for a home and a building, airsignal.app/crew/grid) · Live: airsignal.app/crew · Devpost · Deck (PDF) · PPTX · Explainer video · pitch/ · Write-up on rustman.org
California already writes down what an outdoor employer must do: at PM2.5 AQI 151 provide N95s and tell the crew (Cal/OSHA §5141.1), at 80°F shade and water, at 95°F high-heat procedures (§3395). Almost nobody does it.
Inspection waits for complaints, and workers are afraid to complain.
work/sky_eval.py, work/sky_eval.md); its visibility estimate was unreliable, so the verdict
rests on the smoke question and visibility shows only when confident. Visible smoke under a forecast
below AQI 101 is flagged as "looks worse than the forecast" and pre-fills a report.curl 'https://airsignal.app/api/crew?place=Fresno&shift=07-17' # plan + checks + BMS, home, alerts, wind, fires_near, dispatch (JSON)
# every endpoint: https://airsignal.app/api · a utility's 13 cities: https://airsignal.app/crew/grid
curl 'https://airsignal.app/api/crew/reports?place=Fresno' # today's reports
curl -H 'content-type: image/jpeg' --data-binary @sky.jpg \
'https://airsignal.app/api/sky-check?place=Fresno' # Jev on a sky photo
make plan P="Fresno" S=07-17 # the same engine idea in Python
make test # Python rules + NowCast tests
make evidence # the 4.5M worker-days table
| Piece | Where | Built during the hackathon |
|---|---|---|
| Engine: NowCast, rulebook, plan, BMS, fire and monitor checks | airq airq-core/src/crew.rs (Rust → WASM) | yes, all of it |
| Page, API, reports, escalation mock, sky check | air-signal-web src/pages/crew.astro, src/lib/crew.ts, src/pages/api/crew/, src/pages/api/sky-check.ts | yes, all of it |
| Python CLI + rulebook YAML + tests, evidence script | this repo: crewair/, rulebooks/, tests/, work/ | yes |
| iOS app: Plan, Sky (AR horizon + Jev check), Report, crew lead | this repo: ios/ (make -C ios gen test build install) | yes |
| Evidence and the Jev eval | this repo: work/evidence_*.py, work/sky_eval.py | yes |
| Pitch | pitch/ | yes |
Every commit for the above is dated 23–24 Oct 2026 inside hacking hours (Fri 17:00 – Sat 17:00 PT).
After the event the iOS code continues in air-signal-ios (private, Crew Air plus a consumer app on a shared core); ios/ here stays as built in the 24 hours.
Earlier open-source work it stands on, disclosed: the Air Signal site's hosting and layout
(airsignal.app, air-signal-web), and from the
airq-core library the EPA AQI breakpoints, the sensor/model merge
(merge.rs) and haversine. The iOS AR overlay adapts camera-geometry code from our app
Starlapse. The app's usage counter is our shared package
superduperai-analytics-swift (three events, an
install UUID, August 2026). All four are public repositories by the same author, older than the event. The
rest is new.
The engine knows no law. A rulebook names a metric (us_aqi_pm25, pm25_nowcast_ugm3, pm25_ugm3,
temp_f, temp_c), a threshold, the action and the citation. Smoke rules use the NowCast concentration as
§5141.1 Appendix A does (55.5 and 500.5 µg/m³): an AQI threshold of 501 can never trip, the scale stops at
500. A new state or country is a new file, not new code: Oregon and Washington have smoke rules, Canadian
provinces use AQHI, Spain and Italy restrict outdoor work in heatwaves. Only California ships.
| Source | Key | Use |
|---|---|---|
| Open-Meteo (CAMS air quality + weather) | none | hourly PM2.5 and temperature; free only non-commercially |
| NASA FIRMS VIIRS, public 24 h CSV (NOAA-20, Suomi-NPP) | none | fires within 50 km |
| AirNow hourly files (files.airnowtech.org) | none | regulatory monitors within 25 km |
| EPA AirData, BLS QCEW | none | the evidence table |
| DOL OSHA enforcement API | free key | §5141.1 / §3395 / §3396 citations (work/evidence_citations.py) |
| TypeSafe Jev | key (Worker secret) | sky photo → smoke / visibility probabilities |
| Earth Engine, Sentinel-2 | gcloud login | burn scar and fire front for the pitch (work/) |
| NOAA HRRR-Smoke | none | next: 3 km smoke over the US instead of CAMS ~40 km |
Free for crews, paid by employers, public data. The engine, rulebooks and worker app are open source (AGPL for airq-core and the site, MIT here). Employers pay per site for alerts in Spanish and English, many sites, the archive an inspector or insurer asks for, and the BMS feed. Raw reports stay private; exposure and report counts by county are published anonymized.
work/ holds the GEE 101 workshop run locally plus two scripts on the largest fire in California on 20 Oct
2026 (NASA FIRMS, near Sequoia): fire_s2.py pulls a Sentinel-2 scene, burn_scar.py computes dNBR.
Auth: ee_init.py uses your gcloud login (EE_ACCOUNT, EE_PROJECT).
Plan and status: docs/next.md. Event notes: docs/event.md, tracks and decision: docs/tracks.md.
A planning aid, not legal advice.
MIT