# FabledCurator GPU agent — runs on the desktop with the GPU. # CUDA + cuDNN runtime so onnxruntime-gpu can use the card (it needs cuDNN 9 — # the plain -runtime image lacks it: "libcudnn.so.9: cannot open shared object # file"); ffmpeg for video frames. FROM nvidia/cuda:12.4.1-cudnn-runtime-ubuntu22.04 ENV DEBIAN_FRONTEND=noninteractive PYTHONUNBUFFERED=1 RUN apt-get update \ && apt-get install -y --no-install-recommends python3 python3-pip ffmpeg \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # torch from the CUDA-12.4 wheel index (matches the base image); its wheels # bundle their own CUDA + cuDNN and coexist with onnxruntime-gpu. Installed # first + separately so the GPU build of torch is deterministic and layer-cached. RUN pip3 install --no-cache-dir torch==2.6.0 --index-url https://download.pytorch.org/whl/cu124 COPY requirements.txt . RUN pip3 install --no-cache-dir -r requirements.txt COPY fc_agent ./fc_agent # imgutils ONNX models + the transformers SigLIP weights both cache here; mount # a volume to persist them across restarts (the SigLIP download is ~3.5 GB once). ENV HF_HOME=/models EXPOSE 8770 # The control UI; the worker is started from it (or POST /start). CMD ["uvicorn", "fc_agent.app:app", "--host", "0.0.0.0", "--port", "8770"]