Active migration.
unraid-labvalidated (all Applications Synced/Healthy);oci-labnot yet re-validated — see docs/architecture/gitops-layering.md.
The apps running on the Syscode homelab Kubernetes clusters, and their config.
Argo CD (self-managed, one instance per cluster) watches this repo and applies
changes automatically — no manual kubectl apply.
Shared — every cluster:
| App | Chart | Role |
|---|---|---|
| cert-manager | jetstack/cert-manager | TLS certificate issuance |
| cilium | cilium/cilium | pod networking (CNI) |
| radar | skyhook-io/radar | Radar app, tailnet-private on every cluster |
Each cluster also runs its own app.yamls under clusters/<name>/apps/
(not shared — set up independently per cluster, so the same app can appear
on more than one):
unraid-lab:
| App | Chart / source | Role |
|---|---|---|
| harbor | goharbor/harbor | container registry backing the Image Factory |
| arc-controller | actions/gha-runner-scale-set-controller | GitHub Actions Runner Controller |
| arc-runners | ARC runner scale set (ApplicationSet) | self-hosted GH Actions runners, Harbor↔GHCR mirror + homelab jobs |
| bitwarden-sm-operator | charts.bitwarden.com/sm-operator | Bitwarden Secrets Manager operator (also on oci-lab) |
| radar-pg | syscode-labs/radar-postgre | radar's Postgres backend |
| argocd-ingress | raw manifest | tailscale ingress for the Argo CD UI |
| hubble-proxyclass | raw manifest | kernel-network ProxyClass for the hubble-ui tailscale ingress proxy |
oci-lab:
| App | Chart / source | Role |
|---|---|---|
| bitwarden-sm-operator | charts.bitwarden.com/sm-operator | Bitwarden Secrets Manager operator (also on unraid-lab) |
| oci-pivot-controller | ghcr.io/syscode-labs/charts | OCI free-tier node lifecycle controller |
| oci-pivot-secrets | raw manifest | BitwardenSecret feeding oci-pivot-controller's OCI credentials |
- Every cluster:
apps/<app-name>/app.yaml(chart + repo + version) +values/base/<app-name>.yaml(chart values). - One cluster only: same two files under
clusters/<name>/apps/<app-name>/andvalues/clusters/<name>/<app-name>.yaml. - Commit — Argo CD picks it up on its next sync, no manual step.
Node bootstrap, the ApplicationSet mechanics, and the values-layering rules live in docs/architecture/gitops-layering.md; cluster bring-up steps are in docs/deploy/runbook.md.