# Deploy API Server to Hugging Face Space ## Problem The current Hugging Face Space deployment is running in `--hfdemo` mode, which provides a Gradio UI but does NOT expose the API endpoints like `/api/ping`, `/api/health`, etc. ## Solution The Dockerfile has been updated to: 1. Run in `--api` mode instead of `--hfdemo` mode 2. Use port 7860 (required by Hugging Face Spaces) instead of the default port 8000 ## Deployment Steps ### 1. Commit and Push Changes ```bash cd sci-image git add Dockerfile git commit -m "Switch to API server mode for Hugging Face Space" git push ``` ### 2. Push to Hugging Face Space If you have the Hugging Face Space connected as a remote: ```bash git push hf main ``` Or manually upload the updated Dockerfile to your Hugging Face Space at: https://huggingface.co/spaces/gsstec/sci-image/tree/main ### 3. Wait for Rebuild The Hugging Face Space will automatically rebuild with the new Dockerfile. This may take 5-10 minutes. ### 4. Verify API Endpoints Once deployed, test the endpoints: **Ping Endpoint:** ```bash curl https://gsstec-sci-image.hf.space/api/ping ``` Expected response: ```json { "status": "ok", "service": "AEGIS Bio-Digital Lab 10 - Visual System", "version": "1.0.0", "device": "cpu" } ``` **Health Endpoint:** ```bash curl https://gsstec-sci-image.hf.space/api/health ``` **System Info:** ```bash curl https://gsstec-sci-image.hf.space/api/info ``` ## Available API Endpoints After Deployment ### Health & Monitoring - `GET /api/` - Welcome message - `GET /api/ping` - Health check for UptimeRobot - `GET /api/health` - Detailed health status - `GET /api/info` - System information - `GET /api/config` - Current configuration - `GET /api/models` - Available models ### Image Generation - `POST /api/generate` - General image generation - `POST /api/window7/generate-pathogen` - Pathogen visualization - `POST /api/window7/generate-disease-visualization` - Disease visualization - `POST /api/window9/generate-molecule` - Molecular structure - `POST /api/window9/generate-drug-visualization` - Drug visualization - `POST /api/aegis/generate-scientific` - Scientific visualization ### API Documentation - `/api/docs` - Swagger UI documentation - `/api/redoc` - ReDoc documentation - `/api/openapi.json` - OpenAPI specification ## UptimeRobot Configuration After deployment, configure UptimeRobot: - **Monitor Type**: HTTP(s) - **URL**: `https://gsstec-sci-image.hf.space/api/ping` - **Interval**: 5 minutes - **Expected Response**: `200 OK` with `"status": "ok"` ## Testing Locally To test the API server locally before deploying: ```bash cd sci-image python src/app.py --api ``` Then test: ```bash curl http://localhost:8000/api/ping ``` ## Reverting to UI Mode If you need to revert to the Gradio UI: ```dockerfile CMD ["python", "src/app.py","--hfdemo"] ``` ## Notes - The API server runs on port 7860 (as configured in Dockerfile EXPOSE) - CORS is enabled for all origins - The server uses FastAPI with automatic OpenAPI documentation - All endpoints are prefixed with `/api/`