hermes / Dockerfile
lenson78's picture
fix: add HEALTHCHECK for HF Spaces status detection
cd7ab09 verified
# Hermes Agent - Hugging Face Spaces Dockerfile
FROM python:3.12-slim
RUN apt-get update && apt-get install -y --no-install-recommends \
curl \
ca-certificates \
gnupg \
git \
wget \
unzip \
inotify-tools \
ffmpeg \
&& rm -rf /var/lib/apt/lists/*
RUN curl -LsSf https://astral.sh/uv/install.sh | sh
ENV PATH="/root/.local/bin:$PATH"
WORKDIR /app
COPY pyproject.toml ./
COPY requirements.txt ./
COPY README.md ./
RUN uv pip install --system \
"pydantic>=2.0" \
"httpx" \
"requests" \
"pyyaml" \
"jinja2" \
"rich" \
"tenacity" \
"python-dotenv" \
"fire" \
"openai" \
"anthropic>=0.39.0" \
"prompt_toolkit" \
"typer" \
"platformdirs" \
"python-telegram-bot>=20.0" \
"aiohttp>=3.9.0" \
"edge-tts" \
"faster-whisper>=1.0.0" \
"firecrawl-py" \
"parallel-web>=0.4.2" \
"fal-client" \
"croniter" \
"slack-bolt>=1.18.0" \
"slack-sdk>=3.27.0" \
"mcp>=1.2.0"
COPY agent/ ./agent/
COPY tools/ ./tools/
COPY gateway/ ./gateway/
COPY hermes_cli/ ./hermes_cli/
COPY cron/ ./cron/
COPY honcho_integration/ ./honcho_integration/
COPY acp_adapter/ ./acp_adapter/
COPY run_agent.py ./
COPY model_tools.py ./
COPY toolsets.py ./
COPY cli.py ./
COPY hermes_state.py ./
COPY hermes_constants.py ./
COPY hermes_time.py ./
COPY utils.py ./
COPY batch_runner.py ./
COPY trajectory_compressor.py ./
COPY toolset_distributions.py ./
COPY cli-config.yaml.example ./
COPY .env.example ./
RUN git submodule update --init --recursive || true
RUN uv pip install --system -e .
COPY setup.sh /usr/local/bin/setup.sh
COPY hermes_run.py /usr/local/bin/hermes_run.py
RUN chmod +x /usr/local/bin/setup.sh /usr/local/bin/hermes_run.py
RUN mkdir -p /root/.hermes/workspace/skills
RUN mkdir -p /root/.hermes/workspace/memory
RUN mkdir -p /root/.hermes/sessions
ENV HERMES_HOME=/root/.hermes
ENV HERMES_WORKSPACE=/root/.hermes/workspace
ENV PYTHONUNBUFFERED=1
EXPOSE 7860
HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
CMD curl -f http://localhost:7860/ || exit 1
ENTRYPOINT ["/usr/local/bin/setup.sh"]