···11+FROM golang:1.26.4 AS build
22+33+WORKDIR /src
44+55+COPY go.mod go.sum ./
66+RUN go mod download
77+88+COPY . .
99+RUN CGO_ENABLED=0 go build -trimpath -o /asterism ./cmd/asterism
1010+1111+FROM gcr.io/distroless/static-debian12
1212+1313+COPY --from=build /asterism /asterism
1414+1515+ENTRYPOINT ["/asterism"]
+18-1
README.md
···6969go run ./cmd/asterism/
7070```
71717272+### Docker
7373+7474+A container image is published to `ghcr.io/alyraffauf/asterism` on every push to `master` and on tagged releases. The image is built `FROM gcr.io/distroless/static-debian12` — Asterism has no C dependencies (its SQLite driver is pure Go), so the final image is a single static binary plus CA certificates, nothing else.
7575+7676+```bash
7777+docker run -d \
7878+ -p 8081:8081 \
7979+ -v asterism-data:/data \
8080+ -e ASTERISM_DATABASE=/data/asterism.db \
8181+ -e ASTERISM_COLLECTIONS=sh.tangled.graph.follow,sh.tangled.repo.issue \
8282+ -e ASTERISM_BACKFILL=true \
8383+ ghcr.io/alyraffauf/asterism:latest
8484+```
8585+8686+To build locally instead: `docker build -t asterism .`
8787+7288## API
73897490Asterism implements all five current endpoints from the [microcosm links XRPC namespace](https://constellation.microcosm.blue/) (the older `/links/*` REST endpoints are deprecated upstream in favor of these and aren't implemented here):
···158174- [x] Account deletion handling
159175- [ ] Account deactivation handling
160176- [x] Graceful shutdown and Firehose reconnect
177177+- [x] CI + Dockerfile
161178162179**Medium term**
163180···168185169186**Longer term**
170187171171-- [ ] Deployment guides (Docker, single-binary production setup)
188188+- [ ] Deployment guides + Docker Compose + Helm Chart
172189- [ ] Pluggable storage backends for larger indexes
173190- [ ] Horizontal read scaling
174191