Software Inventory
Every pinned version in the homelab and the file that pins it.
Every version below is pinned in code — there are no floating tags. When a number here disagrees with the cluster, the code wins and the cluster is drifting.
This is the only page in these docs that carries version numbers. Every other
page describes what a component does and links here for which release of it is
running. just docs-check enforces both halves of that rule.
Infrastructure
| Software | Version | Managed by | Pinned in |
|---|---|---|---|
| Talos Linux | v1.14.4 | Pulumi |
core/platform/talos.go
|
| Kubernetes | 1.36.5 | Talos machine config |
versions.yaml
|
| Kubernetes API types | 1.36.0 | CDK8s |
cdk8s.yaml
|
Kubernetes is pinned separately from Talos, which would otherwise default to a
newer minor than Cilium supports. It does not ride along with a Talos
upgrade — just talos-upgrade-k8s rolls it out as a separate step, see the
Upgrade Guide. The API types CDK8s generates Go
structs from must stay on the same minor as the cluster.
The NVIDIA driver on the GPU worker comes from the Talos -production system
extensions, so its version moves with the Talos release.
Bifrost (Hetzner VPS)
Docker Compose on a single public VPS. Everything reachable from the internet terminates here.
| Software | Version | Pinned in |
|---|---|---|
| Traefik | v3.7.16 |
core/cloud/bifrost/docker-compose.yml
|
| NetBird (server, agent, proxy) | 0.80.0 | same |
| NetBird dashboard | v2.94.0 | same |
| Authentik | 2026.8.5 | same |
| PostgreSQL (Authentik) | 16.14-alpine | same |
| Gatus (uptime) | v5.37.0 | same |
Platform
Installed by Pulumi, not GitOps — these bootstrap the cluster that runs
everything else. Applied with just core platform up.
| Software | Version | Pinned in |
|---|---|---|
| Cilium | 1.20.4 |
core/platform/cilium.go
|
| Gateway API CRDs | v1.6.3 |
core/platform/manifests/gateway-api-v1.6.3-experimental-install.yaml
|
| Argo CD (chart) | 10.10.5 |
core/platform/argocd.go
|
| Argo CD (image) | v3.5.6 | same — runs ahead of the chart, see Platform |
| cert-manager | v1.21.3 |
core/platform/cert_manager.go
|
The Gateway API CRDs are vendored into the repo rather than fetched from GitHub on every apply — see Cilium.
Workloads
Synthesized by CDK8s and delivered by Argo CD. Charts with a generated typed
package are pinned in
cdk8s.yaml
;
the rest are pinned at their call site.
Storage and databases
| Software | Chart | Pinned in |
|---|---|---|
| Longhorn | 1.13.0 |
cdk8s.yaml
|
| CloudNativePG | 0.29.1 |
workloads/databases/cnpg.go
|
Secrets
| Software | Version | Pinned in |
|---|---|---|
| OpenBao (chart) | 0.30.4 |
workloads/secrets/openbao.go
|
| OpenBao (image) | 2.6.4 | same — server, CSI agent and unseal sidecar; held on 2.6.x for the file storage backend |
| Secrets Store CSI Driver | 1.6.1 |
workloads/secrets/csi_driver.go
|
Observability
| Software | Chart | Pinned in |
|---|---|---|
| VictoriaMetrics k8s-stack | 0.96.0 |
workloads/observability/victoria_metrics.go
|
| VictoriaLogs | 0.13.10 |
cdk8s.yaml
|
| Grafana | 14.0.1 |
cdk8s.yaml
|
| OpenTelemetry Collector | 0.176.0 |
workloads/observability/otel_collector.go
|
| Metrics Server | 3.14.0 |
cdk8s.yaml
|
| kube-prometheus-stack CRDs | 82.0.1 |
workloads/observability/victoria_metrics.go
|
VMAlertmanager ships inside the VictoriaMetrics k8s-stack chart; it has no separate pin.
Security
| Software | Chart | Pinned in |
|---|---|---|
| Falco | 9.2.1 |
workloads/security/falco.go
|
| Kyverno | 3.9.1 |
cdk8s.yaml
|
| Trivy Operator (chart) | 0.37.0 |
cdk8s.yaml
|
| Trivy Operator (CRD bundle) | 0.37.0 |
workloads/security/trivy.go
|
Trivy is the one component with two pins: the chart comes from the generated
typed package, while the CRD bundle is downloaded separately by URL from the
release named in config/versions.yaml. Bump both together so the CRDs match
the operator.
Applications
| Software | Version | Pinned in |
|---|---|---|
| Harbor | 1.19.2 |
cdk8s.yaml
|
| Headlamp | 0.45.0 |
cdk8s.yaml
|
| n8n (chart) | 2.1.1 |
workloads/automation/n8n.go
|
| n8n (image) | 2.44.6 | same |
| Reloader | 2.2.18 |
workloads/support/reloader.go
|
| NetBird peer | 0.80.0 |
workloads/networking/netbird_peer.go
|
| Kubeflow | 26.03.1 |
workloads/ai/kubeflow/kustomization.yaml
|
| notebook-gateway-controller | v1 |
workloads/ai/notebook_gateway_controller.go
|
AI and GPU
| Software | Version | Pinned in |
|---|---|---|
| Ollama (chart) | 1.88.0 |
cdk8s.yaml
|
| NVIDIA Device Plugin | 0.20.1 |
workloads/hardware/nvidia_gpu_operator.go
|
| DCGM Exporter | 4.8.4 | same |
| ComfyUI | cu130-megapak-pt211-20260812 |
workloads/ai/comfyui.go
|
Ollama's image tag is deliberately unset so it tracks the chart's appVersion —
the chart is the pin. ComfyUI's tag encodes its CUDA line: the card is Blackwell
(sm_120) and needs CUDA 12.8 or newer, so a cu126 tag will not run.
Gaming
| Software | Version | Pinned in |
|---|---|---|
| Counter-Strike 2 server | 5.0.0 |
config/versions.yaml
|
Checking for updates
helm search repo compares chart versions. A chart can lag the software it
ships, so check the app version too — Argo CD 3.5.6 was released while chart
10.10.5 still pinned 3.5.5.
helm repo update
helm search repo <repo>/<chart> --versions | head -3 # CHART and APP columns
Run just docs-check after any bump. It re-reads every row above, greps the file
named in the last column, and fails if the number here is no longer in that file.