An AI-powered tool that generates human-readable summaries of git changes using tool calling with a self-hosted LLM
1FROM --platform=$BUILDPLATFORM golang:1.25-alpine AS builder
2
3ARG TARGETARCH=amd64
4
5WORKDIR /app
6COPY go.mod go.sum ./
7RUN go mod download
8
9COPY . ./
10RUN CGO_ENABLED=0 GOARCH=$TARGETARCH go build -ldflags="-s -w" -o git-summarizer ./cmd/git-summarizer
11
12FROM alpine:3.20
13
14# Static labels
15LABEL org.opencontainers.image.title="git-summarizer" \
16 org.opencontainers.image.description="AI-powered git change summarizer using agentic tool-calling with self-hosted LLMs" \
17 org.opencontainers.image.licenses="MIT" \
18 org.opencontainers.image.authors="Evan Jarrett" \
19 org.opencontainers.image.source="https://tangled.org/evan.jarrett.net/git-summarize" \
20 org.opencontainers.image.documentation="https://tangled.org/evan.jarrett.net/git-summarize"
21
22# Dynamic labels are passed via --label flags at build time
23
24RUN apk add --no-cache ca-certificates
25
26COPY --from=builder /app/git-summarizer /usr/local/bin/
27
28RUN mkdir -p /root/.ssh && chmod 700 /root/.ssh
29
30EXPOSE 8000
31
32ENTRYPOINT ["git-summarizer"]