# Hugging Face Spaces — Streamlit dashboard only. # HF Spaces run containers as UID 1000 on port 7860. FROM python:3.12-slim # System deps: git is needed by GitPython for the rare in-process trigger path. RUN apt-get update && apt-get install -y --no-install-recommends \ git ca-certificates \ && rm -rf /var/lib/apt/lists/* # Create the user HF will switch to at runtime. RUN useradd -m -u 1000 user WORKDIR /home/user/app # Install Python deps first (cache-friendly). COPY --chown=user pyproject.toml README.md ./ COPY --chown=user src ./src RUN pip install --no-cache-dir --upgrade pip \ && pip install --no-cache-dir -e ".[dashboard,webhook,anthropic,openai,ollama,google,groq]" USER user ENV HOME=/home/user \ PATH=/home/user/.local/bin:$PATH \ PYTHONPATH=/home/user/app/src \ PYTHONUNBUFFERED=1 \ STREAMLIT_SERVER_HEADLESS=true \ STREAMLIT_BROWSER_GATHER_USAGE_STATS=false EXPOSE 7860 # HF routes public traffic to app_port (7860). The dashboard reads # DEEPAGENT_API_URL from the env (set in Space Settings → Variables). CMD ["streamlit", "run", "src/gh_deepagent/dashboard/app.py", \ "--server.address=0.0.0.0", "--server.port=7860"]