claw-vector 0.1.2

The semantic memory engine for ClawDB — HNSW vector indexing and storage
Documentation
FROM python:3.11-slim AS builder

WORKDIR /build

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

COPY pyproject.toml ./
COPY proto ./proto
COPY claw_vector_svc ./claw_vector_svc

RUN pip install --upgrade pip \
    && pip install --no-cache-dir "torch>=2.0" --index-url https://download.pytorch.org/whl/cpu \
    && pip install --no-cache-dir --prefix=/install '.[inference]'

ARG MODEL_NAME="sentence-transformers/all-MiniLM-L6-v2"
RUN PYTHONPATH=/install/lib/python3.11/site-packages python -c "from sentence_transformers import SentenceTransformer; SentenceTransformer('${MODEL_NAME}')"

FROM python:3.11-slim AS runtime

WORKDIR /app

RUN apt-get update && apt-get install -y --no-install-recommends \
    curl \
    libgomp1 \
    && rm -rf /var/lib/apt/lists/* \
    && useradd --uid 1001 --home-dir /root --no-create-home app \
    && mkdir -p /root/.cache/huggingface /app \
    && chmod 755 /root \
    && chown -R 1001:1001 /root/.cache/huggingface /app

COPY --from=builder /install /usr/local
COPY claw_vector_svc ./claw_vector_svc
COPY proto ./proto

ENV PYTHONUNBUFFERED=1
ENV HTTP_PORT=8080
ENV GRPC_PORT=50051

USER 1001

EXPOSE 50051 8080

HEALTHCHECK --interval=30s --timeout=5s --start-period=30s --retries=3 CMD curl -f http://localhost:8080/ready || exit 1

CMD ["uvicorn", "claw_vector_svc.main:app", "--host", "0.0.0.0", "--port", "8080"]