Configuration
- 1. Environment variables and relaxed binding
- 2. Cluster discovery
- 3. Resource lists
- 4. Port forwarding
- 5. Runtime cluster store
- 6. Security
- 7. Metrics
- 8. Pod file browser
- 9. Helm
- 10. AI diagnosis
- 11. Cluster simulator
- 12. Environment variables that are not
kweblens.* - 13. Related settings that are not kweblens’s own
- 14. Next
Every kweblens setting lives under the kweblens.* prefix and is a standard Spring Boot
@ConfigurationProperties, so it can be set in application.yml, on the command line
(--kweblens.security.open-mode=false), or — most usefully in a container — as an
environment variable.
This page lists every kweblens.* property that exists. Anything not here is not a
kweblens setting.
1. Environment variables and relaxed binding
Spring Boot maps a property name to an environment variable by uppercasing it, replacing dots with underscores, and removing dashes:
kweblens.list.chunk-size → KWEBLENS_LIST_CHUNKSIZE kweblens.security.open-mode → KWEBLENS_SECURITY_OPENMODE kweblens.files.max-read-bytes → KWEBLENS_FILES_MAXREADBYTES
The binder also accepts a second form in which each dash becomes an underscore
(KWEBLENS_SECURITY_OPEN_MODE, KWEBLENS_FILES_MAX_READ_BYTES). Both work; the tables
below give the dash-removed form as canonical and note the other where kweblens’s own
application.yml or Helm chart uses it, so you can match what you see in a manifest.
List properties bind by index (KWEBLENS_CLUSTERS_0_ID), and a List<String> also binds
from a comma-separated value.
2. Cluster discovery
org.alexmond.kweblens.config.KweblensProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
Load clusters from the ambient kubeconfig ( |
|
|
— |
Stable identifier used in URLs and the API. An entry with no id is skipped with a warning. |
|
|
the id |
Display name. |
|
|
— |
Path to a kubeconfig file to load this cluster from. Left unset, the entry is built from whatever ambient configuration the fabric8 client resolves (in-cluster ServiceAccount, or the ambient kubeconfig). |
|
|
the file’s |
Which context to select within that file. |
3. Resource lists
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
Objects fetched per API-server request when listing a kind. This is not a client-visible
page size — the response is always the whole collection — it is how much of it exists in the
JVM at once, which is the axis that OOM-kills the container. 500 is the Kubernetes
convention and what |
4. Port forwarding
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
Address the forwarded local ports bind to on the kweblens host. Blank binds loopback only,
so forwards are not exposed on the network. Set |
5. Runtime cluster store
Where clusters added through the API — and the kubeconfigs that authenticate them — are
kept. org.alexmond.kweblens.config.ClusterStoreProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
One of |
|
|
|
Data directory for |
|
|
kweblens’s own namespace |
Namespace for |
|
|
|
Name prefix for the per-cluster Secrets in |
|
kweblens’s own |
6. Security
org.alexmond.kweblens.web.security.SecurityProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
When true, |
|
|
|
The single built-in admin username. There is one in-memory account; kweblens has no per-user identity by design (ADR-001). |
|
|
(none) |
When blank, a random UUID is generated at startup, logged at |
The Helm chart renders auth.openMode as KWEBLENS_SECURITY_OPEN_MODE and expects
auth.existingSecret to supply KWEBLENS_SECURITY_ADMIN_USERNAME /
KWEBLENS_SECURITY_ADMIN_PASSWORD. See Security and identity.
7. Metrics
org.alexmond.kweblens.metric.MetricsProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
(none — discovered by service name) |
The Prometheus-compatible backend to query, as |
8. Pod file browser
Off by default, deliberately: it can read a projected Secret volume or a service-account
token straight off a container’s disk. org.alexmond.kweblens.web.files.FilesProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
Enable the pod file browser API and the drawer’s Files tab. Every endpoint in the family requires the admin login, reads included, even in open mode. |
|
|
|
Allow modifying, uploading and deleting files inside containers. Set |
|
|
|
Largest file that may be viewed or downloaded. Larger files are refused, not truncated. |
|
|
|
Largest payload that may be written into a container. |
|
|
|
Largest number of directory entries returned in one listing. |
|
|
|
How long a single in-container command may take before it is abandoned. A |
|
|
(empty — the whole container filesystem) |
Absolute path prefixes the browser is confined to, e.g. |
application.yml wires the byte and entry limits through the underscore-for-dash form
(KWEBLENS_FILES_MAX_READ_BYTES and friends); both spellings bind.
9. Helm
org.alexmond.kweblens.web.helm.HelmProperties. Releases are read from the cluster; these
settings are about chart repositories and the saved-values library.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
— |
Short repo name shown in the charts browser. |
|
|
— |
Base URL of a classic HTTP chart repository (the directory holding |
|
|
|
How long a fetched repo index is cached before it is refetched. |
|
|
|
Directory for the reusable values-file library (named |
application.yml ships two default repositories — prometheus-community and
ingress-nginx — and sets values-path to
${KWEBLENS_HELM_HOME:${user.home}/.kweblens/helm}/values. So KWEBLENS_HELM_HOME moves
the whole Helm home, which is what the chart’s persistence block does (/data/helm), and
it is also where jhelm’s own repositories.yaml and index cache are kept. Without a durable
Helm home, runtime-added repositories and saved values do not survive a restart.
10. AI diagnosis
org.alexmond.kweblens.web.ai.KweblensAiProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
Enable LLM enrichment of the diagnosis summary. The deterministic health checks always
run and do not depend on this. Enrichment additionally needs an Anthropic API key
( |
11. Cluster simulator
A generated in-JVM cluster for development, CI and performance work.
org.alexmond.kweblens.web.sim.SimulatorProperties.
| Property | Environment | Default | What it does |
|---|---|---|---|
|
|
|
Turn the simulator on. Typically paired with |
|
|
|
Cluster id the simulator registers under. Its display name is |
|
|
|
Objects generated per kind (ConfigMap, Secret, Pod, ReplicaSet, Deployment, Service, Endpoints, Ingress). |
|
|
|
How many namespaces to spread the generated objects across. |
|
|
|
Multiplier on generated ConfigMap/Secret data sizes. Objects are sized to match a real
cluster’s, which costs memory — at |
12. Environment variables that are not kweblens.*
These appear in application.yml and the chart and are worth knowing about.
| Variable | What it does |
|---|---|
|
HTTP listen port ( |
|
Read directly when discovering the ambient kubeconfig. May be a path list; the first entry is treated as the primary. |
|
Parent of the runtime cluster store directory. Default |
|
Helm home: jhelm’s |
|
Key for the Spring AI Anthropic chat client. Never called unless |
|
Standard Spring profile activation; the chart sets it from |
|
Optional central config server, e.g. |
|
Not set by you — its presence is how kweblens decides |
13. Related settings that are not kweblens’s own
-
logging.level.kweblens.auditis pinned toINFOinapplication.yml. Every recorded write is emitted on that logger as one structured line, so the audit trail survives a restart via whatever already ships your logs. Raising the root level must not switch it off; route it to a rolling file appender in alogback-spring.xmlif you want a local copy. The logger name is the contract. -
management.endpoints.web.exposure.includeexposeshealth,info,metricsandprometheus. -
spring.cache.caffeine.specismaximumSize=2000,expireAfterWrite=10s— a bounded, short-TTL cache over hot list and get reads. -
spring.ai.mcp.server.keep-alive-intervalis30s, because an MCP SSE session learns of a disconnect only from a failed write. See MCP server.
14. Next
-
Connecting clusters — what the cluster settings actually do