Files
giglez/requirements-prod.txt
T
leetcrypt 7535feb445 deploy: containerize the live simple-mode API (Docker)
Ships the production serving path (FastAPI upload/map UI + statistical
device-category identification) as a lean, reproducible container:

- Dockerfile: python:3.10-slim, non-root user, /health HEALTHCHECK, serves
  uvicorn src.api.main_simple:app. Bakes in the joblib category model and the
  static rtl_433 protocol table; excludes the 11 GB test corpora and the
  benched Phase 3B CNN binaries. Built image is 417 MB.
- requirements-prod.txt: pins matched to the versions that actually train/serve
  the model (scikit-learn 1.6.1 / numpy 2.2.6) so joblib.load() stays valid.
  torch/onnx intentionally absent — the CNN is benched, not on the serving path.
- docker-compose.yml: single service, named volume seeds from baked data/ on
  first run then persists captures_simple.json writes across restarts.
- .dockerignore: keeps data/, venv/, vendored firmware, docs out of the image.

Validated: image builds, container reports healthy, and the statistical
classifier loads + predicts inside the container.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-19 19:09:09 -07:00

31 lines
976 B
Plaintext

# GigLez production runtime — the LIVE simple-mode path only
# (src/api/main_simple.py → SignatureMatcher → pattern_decoder → statistical ML).
#
# Versions are pinned to what actually trained/serves the model in this env.
# In particular scikit-learn/numpy MUST match the versions the
# models/category_classifier.joblib bundle was built with (1.6.1 / 2.2.x),
# or joblib.load() will warn/break. Do NOT downgrade to the old
# requirements.txt pins — those drive the dormant SQLAlchemy/PostGIS path.
#
# NOTE: torch/onnx are intentionally absent — the Phase 3B CNN is benched
# (loses to the statistical model), so it is not part of the serving path.
# Web stack
fastapi==0.121.1
starlette==0.46.0
uvicorn[standard]==0.31.1
jinja2==3.1.6
python-multipart==0.0.22
pydantic==2.12.4
# Numerics + statistical ML (RAW category classifier)
numpy==2.2.6
scipy==1.15.3
scikit-learn==1.6.1
joblib==1.5.3
# Support
loguru==0.7.2
pyyaml==6.0.2
python-dateutil==2.9.0.post0