# Render Deployment Guide ## Prerequisites 1. A [Render account](https://render.com/) (free tier available) 2. Your GitHub repository connected to Render 3. Google Gemini API key ## Quick Deploy (Recommended) ### Option 1: Using render.yaml (Infrastructure as Code) 1. **Push your code to GitHub** (already done) 2. **Create a new Web Service on Render:** - Go to https://dashboard.render.com/ - Click "New +" → "Blueprint" - Connect your GitHub repository: `Pulastya-B/DevSprint-Data-Science-Agent` - Render will automatically detect the `render.yaml` file - Click "Apply" 3. **Add Secret Environment Variable:** - Go to your service dashboard - Navigate to "Environment" tab - Add your `GOOGLE_API_KEY` (this is sensitive and not included in render.yaml) - Click "Save Changes" 4. **Deploy:** - Render will automatically build and deploy your application - Wait for the build to complete (~5-10 minutes for first deploy) - Your app will be available at: `https://data-science-agent.onrender.com` ### Option 2: Manual Setup 1. **Create a new Web Service:** - Go to https://dashboard.render.com/ - Click "New +" → "Web Service" - Connect your GitHub repository 2. **Configure the service:** - **Name:** `data-science-agent` - **Region:** Oregon (US West) - **Branch:** `main` - **Runtime:** Docker - **Plan:** Free (or Starter for production) 3. **Add Environment Variables:** ``` LLM_PROVIDER=gemini GOOGLE_API_KEY= GEMINI_MODEL=gemini-2.5-flash REASONING_EFFORT=medium CACHE_DB_PATH=/tmp/cache_db/cache.db CACHE_TTL_SECONDS=86400 OUTPUT_DIR=/tmp/outputs DATA_DIR=/tmp/data MAX_PARALLEL_TOOLS=5 MAX_RETRIES=3 TIMEOUT_SECONDS=300 PORT=8080 ARTIFACT_BACKEND=local ``` 4. **Configure Health Check:** - **Health Check Path:** `/api/health` 5. **Deploy:** - Click "Create Web Service" - Wait for the build to complete ## Important Notes ### Free Tier Limitations - **Spin down after inactivity:** Free tier services spin down after 15 minutes of inactivity - **Cold starts:** First request after spin-down will take 30-60 seconds - **Memory:** 512 MB RAM (may be tight for large ML models) - **Build time:** Free tier has slower build times ### Upgrading to Paid Plan For production use, consider upgrading to at least the **Starter plan ($7/month)**: - No spin-down - Faster builds - More memory (512 MB → 2 GB) - Better performance ### Storage Considerations - Render uses **ephemeral storage** - files are lost on restart - For persistent storage, consider: - Connecting to external storage (S3, GCS) - Using Render's persistent disk (paid plans only) - Storing only temporary analysis results ### Performance Optimization 1. **Use caching:** The app includes SQLite caching for repeated queries 2. **Monitor memory usage:** Large datasets may exceed free tier limits 3. **Optimize docker image:** The multi-stage build already optimizes image size 4. **Regional selection:** Choose a region close to your users ## Deployment Commands ### Manual Rebuild (if needed) ```bash # Trigger rebuild via Render Dashboard # or use Render API curl -X POST https://api.render.com/v1/services//deploys \ -H "Authorization: Bearer " ``` ### Check Logs ```bash # View logs in Render Dashboard # or use Render CLI render logs -s data-science-agent ``` ## Custom Domain (Optional) 1. Go to your service dashboard 2. Click "Settings" → "Custom Domain" 3. Add your domain (e.g., `agent.yourdomain.com`) 4. Update your DNS records as instructed 5. Render automatically provisions SSL certificates ## Troubleshooting ### Build Fails **Issue:** Docker build timeout - **Solution:** Increase build timeout in Render settings - **Alternative:** Optimize Dockerfile to reduce build time **Issue:** Out of memory during build - **Solution:** Upgrade to paid plan with more memory - **Alternative:** Reduce dependencies in requirements.txt ### App Crashes on Startup **Issue:** Missing environment variables - **Solution:** Verify all required env vars are set in Render dashboard **Issue:** Port binding error - **Solution:** Ensure app listens on `0.0.0.0` and PORT env variable ### Slow Performance **Issue:** Cold starts on free tier - **Solution:** Upgrade to paid plan to prevent spin-down - **Workaround:** Use a cron job to ping your app every 10 minutes **Issue:** Large dataset processing timeout - **Solution:** Increase TIMEOUT_SECONDS env variable - **Consider:** Processing large datasets asynchronously ## Monitoring ### Health Check Your app exposes a health check endpoint at `/api/health`: ```bash curl https://data-science-agent.onrender.com/api/health ``` ### Logs - View real-time logs in Render Dashboard - Configure log drains for external monitoring (paid plans) ### Metrics Render provides built-in metrics: - CPU usage - Memory usage - Request count - Response time ## Security Best Practices 1. **Never commit API keys** to Git (use environment variables) 2. **Enable CORS** only for trusted domains in production 3. **Use HTTPS** (Render provides this automatically) 4. **Rotate API keys** regularly 5. **Monitor usage** to detect anomalies ## Cost Estimation ### Free Tier - Cost: $0/month - Best for: Development, testing, hackathons - Limitations: Spin-down, slower builds, 512MB RAM ### Starter Plan ($7/month) - No spin-down - 512MB RAM → 2GB RAM - Faster builds - Better for: Small production apps ### Standard Plan ($25/month) - 4GB RAM - High performance - Best for: Production apps with moderate traffic ## Deployment Checklist - [ ] Code pushed to GitHub - [ ] `render.yaml` committed to repository - [ ] Render account created - [ ] GitHub repository connected to Render - [ ] Blueprint deployed (or manual service created) - [ ] `GOOGLE_API_KEY` added as secret environment variable - [ ] Health check endpoint verified - [ ] Application accessible at Render URL - [ ] Custom domain configured (optional) - [ ] Monitoring and alerts set up ## Support - **Render Documentation:** https://render.com/docs - **Render Community:** https://community.render.com/ - **GitHub Issues:** https://github.com/Pulastya-B/DevSprint-Data-Science-Agent/issues ## Next Steps After successful deployment: 1. **Test the deployment:** ```bash curl https://data-science-agent.onrender.com/api/health ``` 2. **Upload a test dataset** via the web interface 3. **Monitor logs** for any errors 4. **Configure custom domain** (optional) 5. **Set up monitoring** and alerts 6. **Share your deployed app!** 🚀 --- **Your app will be live at:** `https://data-science-agent.onrender.com` (URL will be different if you choose a different service name)