nexus / app.py
Md Shahabul Alam
Deploy NEXUS Streamlit demo to HuggingFace Spaces
29db30b
"""
NEXUS - HuggingFace Spaces Entry Point
Launches the Streamlit demo for the NEXUS Maternal-Neonatal Care Platform.
Built with Google HAI-DEF models for the MedGemma Impact Challenge 2026.
"""
import os
import subprocess
import sys
from pathlib import Path
# Ensure src/ is on the Python path for imports
ROOT = Path(__file__).parent
SRC_DIR = ROOT / "src"
if str(SRC_DIR) not in sys.path:
sys.path.insert(0, str(SRC_DIR))
# Set environment defaults for HF Spaces
os.environ.setdefault("STREAMLIT_SERVER_PORT", "7860")
os.environ.setdefault("STREAMLIT_SERVER_ADDRESS", "0.0.0.0")
os.environ.setdefault("STREAMLIT_SERVER_HEADLESS", "true")
os.environ.setdefault("STREAMLIT_BROWSER_GATHER_USAGE_STATS", "false")
def main():
app_path = SRC_DIR / "demo" / "streamlit_app.py"
if not app_path.exists():
print(f"ERROR: Streamlit app not found at {app_path}")
sys.exit(1)
port = os.environ.get("PORT", os.environ["STREAMLIT_SERVER_PORT"])
os.environ["STREAMLIT_SERVER_PORT"] = str(port)
try:
subprocess.run(
[
sys.executable, "-m", "streamlit", "run",
str(app_path),
f"--server.port={port}",
f"--server.address={os.environ['STREAMLIT_SERVER_ADDRESS']}",
f"--server.headless={os.environ['STREAMLIT_SERVER_HEADLESS']}",
f"--browser.gatherUsageStats={os.environ['STREAMLIT_BROWSER_GATHER_USAGE_STATS']}",
],
check=True,
env={**os.environ, "PYTHONPATH": str(SRC_DIR)},
)
except subprocess.CalledProcessError as e:
print(f"ERROR: Streamlit process exited with code {e.returncode}")
sys.exit(e.returncode)
except FileNotFoundError:
print("ERROR: Streamlit not installed. Run: pip install streamlit")
sys.exit(1)
if __name__ == "__main__":
main()