File size: 1,473 Bytes
4259ef0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b1eca64
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# Docker Space that serves the deployment-agnostic Hermes Agent API.
#
# The Hermes agent repo is public, so we clone it at build time. Cloning (rather
# than `pip install git+...`) guarantees every module is present — the project's
# pyproject only packages a subset of the source tree, but api_server.py imports
# the full agent (run_agent, agent/, tools/, ...).
FROM python:3.11-slim

RUN apt-get update && \
    apt-get install -y --no-install-recommends \
      git build-essential ca-certificates && \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app

# Clone the public Hermes agent (includes api_server.py on main) and install its
# dependencies. Pin to a tag/sha here if you want reproducible builds.
RUN git clone --depth 1 https://github.com/morongosteve/hermes-agent.git /app
RUN pip install --no-cache-dir --upgrade pip && \
    pip install --no-cache-dir -e /app

# Hugging Face Spaces serves on port 7860; api_server reads PORT.
ENV PORT=7860
EXPOSE 7860

# Run as uid 1000 (HF Spaces convention).
RUN useradd -m -u 1000 user && chown -R 1000 /app
USER 1000

# Import the agent on the MAIN thread before starting the threaded server.
# tools/browser_tool registers signal handlers at import time, and signal.signal()
# only works on the main thread; pre-importing here keeps worker threads from
# tripping over it (also handled inside api_server.main(), this is belt-and-braces).
CMD ["python", "-c", "import run_agent; import api_server; api_server.main()"]