Why it is off, and what that costs you
There are two knobs, not one, and they are worth separating before you set either:The guardrails do not care which wrote the plan. Blast radius, the no-new-keys rule, rate limits, and human approval all apply identically to an AI plan and a rule-based one, and since operator
v0.11.0 a value the model asked for that a guardrail refuses is replaced by one Dorgu computed, recorded on spec.steps[].safety. Turning the planner on widens what Dorgu will say. It does not widen what Dorgu will do.What you are opting into
- BYO key. Dorgu does not proxy your traffic. You supply an Anthropic API key and pay Anthropic directly.
- Anthropic only, operator-side. The operator’s AI diagnosis accepts
claudeorgemini; the AI remediation planner is Anthropic-only today and is skipped unlessllm.provider=claude. - The key stays in your cluster. It lives in a Kubernetes Secret in your namespace and is injected into the operator pod as the
ANTHROPIC_API_KEYenvironment variable viasecretKeyRef. The chart never passes it as a container argument. - Your cluster data goes to Anthropic only when AI is enabled. With no provider configured, nothing leaves the cluster.
- No key, no problem. Rule-based detection, diagnosis, and remediation are the floor and are always on.
Enable it
1
Create the Secret
Create the Secret out of band so the key never passes through Helm values:If the namespace does not exist yet, create it first with
kubectl create namespace dorgu-system.2
Install or upgrade the operator
--set websocket.enabled=true if you also want live dorgu watch streaming.Drop the last flag, aiRemediation.enabled=true, for AI diagnosis with rule-written plans. That is the setting the default recommends, and it is the one to start from.Omitting --version resolves the newest published chart. To pin an exact version, see the installation guide.3
Verify
AI diagnosis enabled on its own means the planner did not start — check that aiRemediation.enabled=true and llm.provider=claude.Detection is already on. Since chart 0.8.0
healthCheck.enabled defaults to true, so there is no longer a flag to remember here. If you explicitly set healthCheck.enabled=false, AI configuration gives you a correctly configured operator with nothing to diagnose.Values reference
If neither
llm.existingSecret nor a chart-managed Secret is configured, the chart renders no env: block, the operator finds no ANTHROPIC_API_KEY, and it logs LLM provider configured but no API key found, AI diagnosis disabled — then runs rule-based.
Egress
The operator calls the Anthropic API directly from its pod. On a private cluster it needs outbound HTTPS — through a NAT gateway, an egress proxy, or whatever your network policy allows. If egress is blocked, AI planning fails and logsAI remediation planning failed, falling back to rules; the loop keeps working on the deterministic path.
Turn it off
RemediationAction objects with planSource: ai-anthropic remain valid and reviewable; new proposals come back as rule-based.
To remove the key from the cluster as well:
CLI-side LLMs are separate
The operator’s AI is unrelated to the CLI’s LLM configuration.dorgu generate can use OpenAI, Anthropic, Gemini, or Ollama from your laptop; none of that configuration reaches the operator, and the operator’s key is never used by the CLI. See LLM providers for the full comparison.
Self-healing
What the AI planner actually receives and produces
Helm values
Every chart value in one place