BP-inference pipeline at the Cloudflare edge. Same Rust source as iOS / Cloud Run, compiled to WASM and wrapped by worker-rs. See docs/runtime-size-budget.md §10 + §11.
POST /predict
content-type: application/octet-stream
body: research.pb.zst (or .pb / .bzev — proto auto-detected, zstd auto-detected)
→ JSON { sbp, dbp, map, is_valid, heart_rate, mode: "full" }
POST /predict-features
content-type: application/octet-stream
body: NamedFeatureVector proto
→ JSON { sbp, dbp, map, is_valid, heart_rate, mode: "features" }
(hybrid mode — feature extraction done client-side)
GET /health → "ok"
curl -X POST <origin>/predict \
-H 'content-type: application/octet-stream' \
--data-binary @path/to/research.pb.zst