GitHub, run as a homelab app. Self-hosted Actions runners scale from zero inside the cluster, and workflows reach the homelab through short-lived OIDC credentials, with no long-lived secrets stored in any repo.
| Path | Does |
|---|---|
| operator/ | Actions Runner Controller, which manages runner scale sets in the build namespace |
| runners/ | One directory per runner scale set; runs-on: <name> targets it |
| apps/ | The GitHub Apps, synced from 1Password: one registers runners, the other mints workflow tokens |
| providers/ | What workflows authenticate with: GCP workload identity, plus a kubeconfig, VPN, Docker Hub and app credentials pushed to Secret Manager. Also a Grafana GitHub datasource |
| dashboard/ | The Repo dashboard in Grafana: any kubed-io repository's README, files, workflow runs, pull requests, issues, commits, releases and Claude activity, from grafana.krm.kubed.io sources |
kubectl up apps # app secrets first, the scale sets need them
kubectl up operator
kubectl up runners/<name>
kubectl up dashboard # the Repo dashboard
kubectl get autoscalingrunnersets,ephemeralrunners -n build
Content type
Image
Digest
sha256:7d9a51795…
Size
760.1 MB
Last updated
12 days ago
docker pull kubed/runner-claude