Feature matrix
| Feature | Default | Flag | Description |
|---|---|---|---|
| ApplicationPersona controller | Enabled | Always on | Validates deployments against persona constraints |
| ClusterPersona controller | Enabled | Always on | Discovers cluster state and resource capacity |
| Self-healing loop | Enabled | --enable-health-check | Detection, diagnosis, and remediation proposals |
| AI diagnosis | Disabled | --llm-provider | LLM-enhanced root-cause analysis (requires an API key) |
| AI remediation planner | Enabled when a provider and key are set | --enable-ai-remediation | Ordered, AI-written remediation plans (Anthropic only) |
| Metrics-server integration | Enabled | --enable-metrics-server | Container-level CPU/memory signals |
| ClusterPersona bootstrap | Enabled | --auto-create-cluster-persona | Auto-creates dorgu-cluster on startup |
| ArgoCD watcher | Enabled | --enable-argocd | Watches ArgoCD Applications for sync status |
| Prometheus integration | Disabled | --prometheus-url | Queries Prometheus for resource baselines |
| Event pipeline | Disabled | --enable-event-pipeline | Kubernetes-Event watcher and DorguEvent records. Nothing reads them yet, so it is off since v0.13.0. |
| Leader election | Disabled (flag default; enabled in Helm chart) | --leader-elect | HA mode for multi-replica deployments |
| Secure metrics | Enabled | --metrics-secure | HTTPS metrics endpoint with RBAC |
Command-line flags
Core
| Flag | Type | Default | Description |
|---|---|---|---|
--metrics-bind-address | string | 0 | Metrics endpoint bind address. Use :8443 for HTTPS or :8080 for HTTP. Set to 0 to disable. |
--health-probe-bind-address | string | :8081 | Health and readiness probe bind address |
--leader-elect | bool | false | Enable leader election for HA deployments |
--enable-http2 | bool | false | Enable HTTP/2 for the metrics server |
Operator
v0.12.0 removed the Deployment validating webhook and its flags: --enable-webhook, --webhook-mode, --webhook-cert-path, --webhook-cert-name and --webhook-cert-key. Passing one stops the binary from starting, so remove them from any manifest that runs the manager directly. See Helm values for the chart side.Metrics
| Flag | Type | Default | Description |
|---|---|---|---|
--metrics-secure | bool | true | Serve metrics over HTTPS with RBAC |
--metrics-cert-path | string | "" | Directory containing metrics TLS certificate |
--metrics-cert-name | string | tls.crt | Metrics certificate filename |
--metrics-cert-key | string | tls.key | Metrics private key filename |
Self-healing and AI
| Flag | Type | Default | Description |
|---|---|---|---|
--enable-health-check | bool | true | Enable the health-check reconciler: detection, diagnosis, and remediation proposals. When false, the operator records persona health only and never opens an incident or proposes a fix. Defaulted to false in the binary before v0.12.0. |
--health-check-interval | duration | 60s | Detection cycle interval |
--readiness-threshold | duration | 2m | How long a running container may stay not Ready before a ReadinessNotReady incident (v0.13.0) |
--liveness-restart-count | int | 2 | Restarts within --liveness-restart-window that raise LivenessRestarts or RestartLoop (v0.13.0) |
--liveness-restart-window | duration | 10m | The restart window. Must be at least twice --health-check-interval, or the operator refuses to start (v0.13.0) |
--incident-recurrence-cap | int | 3 | Recurrences of one fault within --incident-recurrence-window before the latest incident is reopened instead of a new one created. 0 disables the cap (v0.13.0) |
--incident-recurrence-window | duration | 24h | The recurrence window (v0.13.0) |
--resolved-incident-retention | duration | 720h | Resolved incidents older than this are deleted, except the newest of each fault and any a live RemediationAction names. 0 keeps them. Must not be shorter than the recurrence window (v0.13.0) |
--remediation-pending-ttl | duration | 24h | A Pending proposal older than this becomes Expired. 0 disables the TTL (v0.13.0) |
--enable-metrics-server | bool | true | Enable metrics-server integration for container-level detection |
--llm-provider | string | "" | claude or gemini for AI-enhanced diagnosis. Empty disables AI. |
--llm-api-key | string | "" | API key, overriding the ANTHROPIC_API_KEY / GEMINI_API_KEY env vars |
--llm-model | string | "" | Model override for the provider |
--llm-cache-ttl | duration | 30m | How long an AI diagnosis or plan is reused while the incident’s signals are unchanged. 0 asks the model every cycle (v0.13.0) |
--safety-excluded-namespaces | string | "" | Comma-separated namespaces Dorgu never proposes a remediation in, on top of kube-system and its own namespace (read from POD_NAMESPACE). See remediation safety. |
--enable-ai-remediation | bool | true | Enable AI-written ordered remediation plans. Requires --llm-provider=claude and a key; falls back to the deterministic rules otherwise. |
The Helm chart never passes
--llm-api-key. It injects the key as an environment variable from a Secret via secretKeyRef (ANTHROPIC_API_KEY for claude), so it stays out of the pod spec. See AI setup.Bootstrap
| Flag | Type | Default | Description |
|---|---|---|---|
--auto-create-cluster-persona | bool | true | Auto-create a ClusterPersona named dorgu-cluster if none exists on startup |
--cluster-persona-ensure-interval | duration | 2m | How often to re-ensure that persona exists. Clamped to a 30s minimum. |
Integrations
| Flag | Type | Default | Description |
|---|---|---|---|
--enable-argocd | bool | true | Enable ArgoCD Application watching |
--prometheus-url | string | "" | Prometheus server URL for baseline learning |
--enable-event-pipeline | bool | false | Run the Kubernetes-Event watcher and write DorguEvent records (v0.13.0) |
--dorgu-event-retention | duration | 24h | How long a DorguEvent is kept. Used only with --enable-event-pipeline |
--dorgu-event-max-records | int | 2000 | Maximum DorguEvent records kept. 0 drops the cap. Used only with --enable-event-pipeline |
Operator
v0.13.0 removed the WebSocket server and its flags, --enable-websocket and --websocket-addr. Passing either stops the binary from starting with flag provided but not defined. See the upgrade guide.The ArgoCD watcher only activates if both
--enable-argocd=true and the ArgoCD Application CRD (argoproj.io/v1alpha1) is detected in the cluster. If the CRD is missing, the watcher silently skips registration.Example: Full-featured deployment
./bin/manager \
--metrics-bind-address :8443 \
--health-probe-bind-address :8081 \
--leader-elect \
--enable-health-check \
--health-check-interval 30s \
--llm-provider claude \
--enable-ai-remediation \
--enable-argocd \
--prometheus-url http://prometheus-server.monitoring:9090 \
--safety-excluded-namespaces payments,ingress-nginx
Helm values
Complete Helm values.yaml reference
Installation
Install methods and verification