Files
central_ai_llm_master/Dockerfile
Sam Rolfe bf80efa25d AUD-49: build the Hub skeleton (hear-route-answer)
- Three inbound routes from docs/hub-api.md: POST /ask, POST /approve, GET /health.
- Five-step pipeline in src/hub, with packages hear, understand, check, route, answer.
- Routing through OmniRoute with the capability list and routing.md. The
  never-route control check runs before any LLM call.
- One real destination: Jervis house TTS, started out of band.
- Fake /ask project (src/tests/fakeproject) for the round-trip test.
- Append-only, size-capped request log. Bearer auth, source match, rate limit.
- Tests: all packages pass, including the fake /ask round trip. Race clean.
- Dockerfile and compose updated to mount routing.md and secrets, log on tmpfs.

Co-Authored-By: Paperclip <noreply@paperclip.ing>
2026-10-10 17:38:48 +11:00

17 lines
503 B
Docker

# Multi-stage build. docs/hub-api.md section 1: Go 1.25, static binary,
# distroless runtime, one container on 192.168.20.13.
FROM golang:1.25-alpine AS build
WORKDIR /src
COPY src/ ./
RUN CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags='-s -w' -o /out/hub .
FROM gcr.io/distroless/static-debian12:nonroot
WORKDIR /app
COPY --from=build /out/hub /app/hub
ENV HUB_PORT=8788
ENV HUB_ROUTING_FILE=/app/routing.md
ENV HUB_LOG_PATH=/tmp/hub.log
EXPOSE 8788
USER nonroot:nonroot
ENTRYPOINT ["/app/hub"]