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 |
| agent-flow/ | The agent flow's n8n workflows, kept as Workflow SDK files, and the callback token they share with the runners |
| 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 up agent-flow # the callback token for n8n and the runners
kubectl get autoscalingrunnersets,ephemeralrunners -n build
Content type
Image
Digest
sha256:3563f1f45…
Size
621.5 MB
Last updated
6 days ago
docker pull kubed/runner-claude