ADR-0030: Contributor Compose and dev containers here, infrastructure in stackr¶
Status: Accepted Date: 2026-09-28 Deciders: Alex Nodeland
Context¶
Working on artifactr needs PostgreSQL and the reference app. Evaluating and operating it also needs the observability and LLM infrastructure: an OpenTelemetry Collector, Grafana with Prometheus, Tempo, Loki and Pyroscope, self-hosted Langfuse, and a LiteLLM proxy. reflexr and evalr need the same infrastructure, and so will applications built on them. The existing dev container installs only the Python environment.
Decision¶
- This repository keeps what developing artifactr needs: a
compose.yamlwith PostgreSQL by default and the reference app under anappprofile, and a dev container built on it that sets the test environment. - The shared infrastructure lives in stackr (ADR-0032), in one place for every library and application. When it is running, the dev container joins its network and sends telemetry to its Collector.
- Dashboards stay here, next to the metric registry they are tested against, and are published with each release for stackr to provision by version.
- CI validates the Compose file and dashboard JSON without starting containers.
Amendment (2026-09-29): CI builds and starts docplan¶
Validating the Compose files without starting containers missed that docplan's image had stopped building: evalr comes from a git source, and the slim uv image had no git (#52). CI's Compose job now builds docplan's image and starts it on the Compose PostgreSQL, waits for its health check, and requests its root page. It still starts nothing else.
Options considered¶
| Option | Copies of the infrastructure | Setup for a contributor |
|---|---|---|
| Contributor Compose here, infrastructure in stackr (chosen) | One | One command, plus stackr for observability |
| The full stack in every library's Compose file | Three, drifting | One command |
| Documentation only | None | Manual |
Consequences¶
- Easier: the infrastructure is maintained once and used the same way everywhere.
- Harder: seeing traces while developing needs stackr's stack running as well.
Action items¶
- Implement RFC-0002 phase A4.