FROM python:3.12-slim

ENV PYTHONUNBUFFERED=1 \
    PIP_NO_CACHE_DIR=1 \
    PIP_DISABLE_PIP_VERSION_CHECK=1 \
    UV_HTTP_RETRIES=8 \
    UV_HTTP_TIMEOUT=180

WORKDIR /app

RUN apt-get update && \
    apt-get install -y --no-install-recommends libgl1 libglib2.0-0 && \
    rm -rf /var/lib/apt/lists/*

COPY core /app/core
COPY runtime /app/runtime

# No policy inference happens in this runtime, so CPU torch keeps the image
# small; pynput/evdev are leader-side input packages not needed in the cell.
RUN pip install --upgrade pip setuptools wheel uv && \
    pip install ./core ./runtime && \
    printf 'pynput>=0.0.0; sys_platform == "never"\nevdev>=0.0.0; sys_platform == "never"\ntorch==2.10.0+cpu\n' > /tmp/overrides.txt && \
    uv pip install --system \
        --override /tmp/overrides.txt \
        --extra-index-url https://download.pytorch.org/whl/cpu \
        --index-strategy unsafe-best-match \
        'lerobot[feetech]==0.5.1' opencv-python-headless

COPY lerobot_record_runtime.py /app/lerobot_record_runtime.py

CMD ["armnet-runtime", "/app/lerobot_record_runtime.py"]
