# SurakshaMCP — runs the NitroStack MCP server + the Python inference service together. services: inference: build: ./inference-service ports: - "8000:8000" environment: - PPE_WEIGHTS=/models/ppe_classifier.tflite # trained multi-label classifier (see ppe_detector.py) - LANGID_WEIGHTS=/models/langid.pt - TTS_BACKEND=gtts # gtts (implemented) | indic_tts (stub — see tts_engine.py) volumes: - ./models:/models healthcheck: test: ["CMD", "python", "-c", "import urllib.request,sys; sys.exit(0 if urllib.request.urlopen('http://localhost:8000/health').status==200 else 1)"] interval: 15s timeout: 5s retries: 5 mcp-server: build: ./mcp-server ports: - "3000:3000" environment: - INFERENCE_URL=http://inference:8000 - MCP_API_KEY=${MCP_API_KEY:-dev-key-change-me} - NODE_ENV=production - SURAKSHA_DB_PATH=/app/data/suraksha.db # WhatsApp alert channel (optional — tool falls back to dry-run without these) - TWILIO_ACCOUNT_SID=${TWILIO_ACCOUNT_SID:-} - TWILIO_AUTH_TOKEN=${TWILIO_AUTH_TOKEN:-} - TWILIO_WHATSAPP_FROM=${TWILIO_WHATSAPP_FROM:-} volumes: - ./data:/app/data # persists the SQLite incident/training/alert DB depends_on: inference: condition: service_healthy