Persistent Configuration
Radar stores configuration in two files under~/.radar/:
Config File (~/.radar/config.json)
Persistent defaults for CLI flags. CLI flags always override these values. Managed via the Settings dialog in the UI or PUT /api/config.
Settings File (~/.radar/settings.json)
User preferences for the UI. Managed via the Settings dialog or PUT /api/settings.
Cluster Connection Precedence
Radar connects to Kubernetes clusters using the same configuration sources askubectl:
KUBECONFIG vs In-Cluster Detection
When Radar runs inside a Kubernetes pod, Kubernetes automatically sets theKUBERNETES_SERVICE_HOST environment variable. This normally triggers in-cluster configuration using the pod’s service account credentials.
However, explicit kubeconfig takes precedence. If you set KUBECONFIG or pass --kubeconfig, Radar uses that instead of in-cluster config. This allows you to:
- Run Radar inside a pod but connect to a different cluster
- Use specific credentials instead of the pod’s service account
- Test with a custom kubeconfig while developing inside a cluster
kubectl and follows the Kubernetes client-go precedence rules.
Multiple Kubeconfig Files
KUBECONFIG can contain multiple file paths (colon-separated on Linux/macOS, semicolon-separated on Windows). Radar merges these files following Kubernetes conventions:
--kubeconfig-dir to load all kubeconfig files from a directory:
Context Switching
Radar supports switching between Kubernetes contexts at runtime through the UI. Click the context selector in the header to switch between available contexts. When running in-cluster (using the pod’s service account), context switching is disabled.Namespace Picker
The header has a namespace picker on the right. Pick a single namespace to focus the view, or All namespaces to see everything you have access to. Cluster-scoped resources (Nodes, Namespaces, PVs, StorageClasses) appear regardless of the pick if your RBAC permits them - they have no namespace to filter on. Namespace-restricted users without their own cluster-scoped RBAC won’t see cluster-scoped sections at all. The pick is a per-user view filter - it doesn’t change anything for other users sharing the same Radar instance. Locally, your pick is remembered per kubeconfig context across restarts. In shared (auth-enabled) deployments the pick lives for the session. When Radar starts with--namespace-scope, the picker controls the process-wide cache scope instead of just a view filter. Namespaced informer caches are pinned to one namespace while cluster-scoped resources remain cluster-wide. Local/no-auth sessions can switch the scoped namespace, which rebuilds the cache in place. Auth-enabled and Radar Cloud sessions lock the picker to the startup namespace so one user cannot reshape the shared backend cache for everyone.
Single namespace only. --namespace-scope pins the cache to exactly one namespace; scoping to several namespaces at once is not supported yet. Passing more than one (e.g. --namespace=a,b) fails at startup with a clear error rather than silently caching nothing. When scoped, the namespace picker becomes single-select, and a switch re-points the whole cache to the new namespace rather than adding to it.
Related Documentation
- README - CLI flags and basic usage
- In-Cluster Deployment - Deploy Radar inside your cluster with Helm
- Authentication & Authorization - Proxy and OIDC auth for shared deployments