values.yaml is the source of truth for every setting; this page mirrors it and adds the env var each value lands as inside the radar-hub container.
Required
Postgres is not in this table because the chart ships a bundled eval Postgres that runs by default - see Postgres below. A license is required to use the hub, but the chart installs without it (helm won’t fail) - see License.
Why are the value keys still underhub.*and the env varsHUB_*/RADAR_HUB_*?radar-hubis the actual Go binary’s name - these are real identifiers, not user-facing prose. The chart keyhub.publicURLconfigures the runningradar-hubPod; the binary reads it throughRADAR_HUB_PUBLIC_URL,HUB_FRONTEND_URL, andHUB_ALLOWED_ORIGINSfor the separate canonical-origin, redirect, and CORS checks. Renaming would break existing dotfiles and runbooks.
Postgres
The hub reads its DSN fromHUB_DB_DSN. Configure exactly one source:
Set
postgres.bundled.enabled=false and one of the postgres.external.* options for production. The bundled eval Postgres is fine for pilots but has no HA or backups.
License
Branding
Surfaced byGET /api/config and rendered by the web app’s TopBar / help menu / Tokens wizard.
brandName controls the wordmark in the web app’s sidebar. Override to your own company name to white-label the deployment surface. The “Powered by Radar” footer remains visible per EULA terms.
Audit retention
Self-hosted ignores plan-tiered retention (Cloud’s Free 7d / Team 30d / Enterprise 365d) and uses this single value. Backed by query-time filtering only - rows are not actively swept.
OIDC
Set together; partial config is a fatal misconfiguration at boot.
See Authentication for IdP-specific recipes.
Singleton org name
Used only for the very first login (when the singleton is seeded). Renaming the org later happens through the web app’s Settings → Organization page; this value is not re-applied on subsequent boots.
Mode flag
The chart hardcodesRADAR_HUB_MODE=self_hosted in the radar-hub Deployment - you don’t set it directly. The mode controls every Cloud-vs-self-hosted seam (single-org gate, billing impl, audit retention source, /api/config response shape).
Version + cluster domain
RADAR_HUB_VERSION is what /api/config reports as version.current and what the help menu surfaces in the web app. Override only if you need a custom build identifier.
clusterDomain is the in-cluster DNS suffix the chart uses to build HUB_UPSTREAM for the web container’s nginx (<svc>.<ns>.svc.<clusterDomain>). The default works for every standard Kubernetes cluster; override if your cluster uses a non-default domain (some kubeadm setups or multi-cluster meshes do).
Resource sizing
AI diagnosis (hosted Diagnose)
Hosted Diagnose runs each investigation turn as a sandboxed Job that reaches the model through a sidecar broker. On self-hosted Hubs it is strictly opt-in and currently AWS Bedrock only - you bring your own Bedrock account, and the broker forwards invocations of exactly the model you configure, refusing everything else fail-closed.The chart does not expose these settings yet and the sandbox Job image is not published to a public registry, so hosted Diagnose is not turnkey on self-hosted installs today. The environment contract below is what the Hub already enforces; chart values and a public image are coming. Until then, the local BYO-agent form works against any cluster you have a kubeconfig for.
The Job’s agent container holds no credentials: the sidecar injects the Bedrock key, and the broker refuses every
bedrock-runtime operation except invoking the configured model. See Diagnose for the architecture and privacy model.
Image overrides
The chart defaults toghcr.io/skyhook-dev/radar-hub:<appVersion> and radar-hub-web:<appVersion>. To pin or repoint at a private mirror:
MATCHING_RELEASE_TAG with the selected radar-hub chart’s appVersion, after confirming that tag is published for both Hub and Web. Keep the two tags identical.
Exposing the hub publicly
Expose the hub the way you already publish internal web apps on your cluster’s edge: a traditional Ingress or a Gateway API HTTPRoute, with the DNS record and TLS certificate you manage. The two are mutually exclusive. Both terminate on theradar-hub-web Service, which serves the web app and reverse-proxies /api, /agent, /c/{id}/api/*, /c/{id}/mcp, and /mcp to the radar-hub Service via in-cluster DNS. Other /c/{id} paths are client-side routes served by the web app’s index.html fallback.
If you would rather not provision a certificate for a short pilot, the chart can instead expose a cloud LoadBalancer and serve a self-signed certificate - see LoadBalancer (pilot, self-signed TLS) below.
Ingress
Any IngressClass (nginx, traefik, contour, …).hosts and tls are lists:
Gateway API (HTTPRoute)
If you run a Gateway API implementation (Istio, Envoy Gateway, Cilium, …), attach an HTTPRoute to a Gateway you already manage. The Gateway and its TLS listener live outside this chart; the route just attaches to it.httpRoute.apiVersion: gateway.networking.k8s.io/v1beta1. For multiple path prefixes, per-route timeouts, filters, or alternate backends, set httpRoute.rules - your rules pass through unchanged and replace the default / route. httpRoute.annotations and httpRoute.labels attach metadata to the route.
Customers wanting api.acme.example + app.acme.example split origins should disable both and write their own routing.
LoadBalancer (pilot, self-signed TLS)
For a short pilot where you would rather not provision a certificate, the chart can expose the hub through a cloud LoadBalancer and serve a self-signed certificate, making it reachable over HTTPS with no ingress controller or cert-manager.--set on install:
--set cloud.insecureSkipVerify=true so the in-cluster connector trusts the self-signed certificate. The radar cloud install CLI expects a browser-trusted certificate, so use the wizard’s command for self-signed pilots.
Skipping the chart’s Secret
If your security model forbids any secret material invalues.yaml, every credential supports an existingSecret ref: