safeeyes
Protect your eyes from eye strain using this simple and beautiful, yet extensible break reminder
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
An infectious disease intelligence system that detects anomalies in local-language reporting from 179 countries and in official surveillance data, attaches intervention scenarios to every alert, and scores each of its forecasts against the official declarations that follow.
翻译准备中
正在加载完整 README。
查看完整 README ↗Infectious-disease early-warning system: a FastAPI inference engine
(epiweather-api) plus a Next.js dashboard (epiweather-web). It fuses
news, weather, mobility, genomic, and deforestation signals into outbreak
alerts with honest provenance on every record.
Submitted to the Meta Global AI Developer Hackathon 2026 (Oct 26 – Nov 4, 2026).
Per the event rule that the demo shows event-window work, the submission centers on what changed in the window:
epiweather-api/algorithms/meta_api.py (new): single source of truth
for the Meta Model API convention — default muse-spark-1.3 on
https://api.meta.ai/v1 (OpenAI-compatible chat/completions).epiweather-api/algorithms/aegiron_model.py: extraction order is now
NIM → Meta → local → Claude fallback; AEGIRON_META_FIRST=on
forces Meta first for the demo.ai_provider=meta_model_api (+
data_sovereign flag); calls are observed in the capability ledger
and surfaced on /api/status.epiweather-api/tests/test_meta_api.py (new): 17 tests, all mocked
(no outbound HTTP per repo policy).who_don_declarations.py + country_resolve.py: declaration
announcements now carry resolved country evidence with logged basis.extracted_signals.ai_provider), and /api/status separates
"configured" from "recently observed working" — a claim this repo was
built around after real incidents.AEGIRON_REQUIRE_LOCAL=on, sensitive data is blocked
before leaving, and self-hosted OpenAI-compatible bases count as
sovereign automatically.Requirements: Python 3.11+, Node 20+, a Meta Model API key (dev.meta.ai → API keys).
# 1. API
cd epiweather-api
pip install -r requirements.txt
cp .env.example .env # then set META_MODEL_API_KEY (and data-source keys)
uvicorn main:app --port 8000 # Swagger UI: http://localhost:8000/docs
# 2. Web (new terminal)
cd epiweather-web
npm install
cp .env.example .env.local # NEXT_PUBLIC_API_URL=http://localhost:8000
npm run dev # http://localhost:3000
Key env vars (API .env):
| Variable | Purpose |
|---|---|
META_MODEL_API_KEY | Meta Model API key (MODEL_API_KEY also accepted) |
META_MODEL_API_MODEL | Override (default muse-spark-1.3) |
AEGIRON_META_FIRST | on = try Meta before NIM (demo forcing) |
EPIWEATHER_API_KEY | Required: protects POST endpoints (fail-closed 503) |
cd epiweather-api
META_MODEL_API_KEY=<key> python -c "
import sys; sys.path.insert(0,'.')
from algorithms import aegiron_model as am
r, a = am.extract_signal_detailed('DRC 에볼라 신규발생', source='demo')
print(r.get('ai_provider'), '|', r.get('disease'), '|', r.get('country_iso3'))"
# expected: meta_model_api | 에볼라 | COD
Then open http://localhost:8000/api/status → capability_health →
meta_text shows verified: true after a real call.
epiweather-api/ — FastAPI service: main.py, collector.py, db.py,
algorithms/ (inference layers), tests/ (2389 tests, mocked HTTP).epiweather-web/ — Next.js 16 dashboard (i18n, Leaflet maps).epiweather-handoff/ — engine sources reused by the API.docs/ — ops notes. DEMO.md — 3-minute demo script.test_main_endpoints.py needs
localhost sockets, blocked in some sandboxes (fails identically without
this change — environmental, not a regression).