> ## Documentation Index
> Fetch the complete documentation index at: https://docs.costgraph.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# CostGraph Operator

> Release history for the CostGraph operator

Releases for the CostGraph operator will have helm tags associated that are not tied to the release version. Across helm versions within a major or minor release, patch updates will be made for hotfixes, bugs and business focused updates. Helm release notes are available on our [chart repository](https://github.com/BaselineHQ/costgraph-charts), view the helm [index.yaml](http://charts.costgraph.ai/index.yaml) to find information about the latest releases.

## SLA

* We will provide changelogs for major and minor releases of the operator
* Customers will be made aware of any breaking changes in any release cycle
* We aim to provide releases on a regular basis for customer features and business priorities
* All related tag updates will be made under a helm release, no update is needed from customers for operator dependencies

> [!NOTE]
>
> Entries labelled `costgraph-operator vX.Y.Z` are releases of the current `costgraph-operator` chart, which deploys the domain-specific operators. Earlier entries labelled `vX.Y.Z` are releases of the deprecated single-binary `costgraph` chart. The two version series are independent, so the numbers do not run continuously.

**2026-10-27**

costgraph-operator v0.8.10

### Breaking Changes

* N/A

### Updates

* Fixes persistent volume growth turning itself off: with the AutoPilot webhook on, the cluster's volume growth setting reset to off whenever a webhook pod started. Upgrade from v0.8.9 if you enabled `global.autopilot.storage.enabled`.

**2026-10-27**

costgraph-operator v0.8.9

### Breaking Changes

* N/A

### Updates

* [CostGraph AutoPilot](https://docs.costgraph.ai/costgraph/autopilot/overview.md) can now grow persistent volumes before they fill. Turn it on with `global.autopilot.storage.enabled`, then opt a workload or namespace in with the `autopilot.costgraph.ai/storage: auto` annotation. AutoPilot only ever grows volumes; it never shrinks them. See [Persistent volumes](https://docs.costgraph.ai/costgraph/autopilot/storage.md).

**2026-10-27**

costgraph-operator v0.8.8

### Breaking Changes

* N/A

### Updates

* Adds the `global.autopilot.storage.enabled` value. It has no effect in this version; use v0.8.9 for persistent volume growth.

**2026-10-26**

costgraph-operator v0.8.7

### Breaking Changes

* N/A

### Updates

* Adds [CostGraph AutoPilot](https://docs.costgraph.ai/costgraph/autopilot/overview.md), which keeps workload CPU and memory requests right-sized from annotations on a workload or namespace. It is free during preview and off by default. Turn it on with `global.autopilot.enabled`. The admission webhook (`global.autopilot.webhook.enabled`) needs Kubernetes 1.28 or later, and resizing running pods in place needs 1.33 or later. See [Operator configuration](https://docs.costgraph.ai/costgraph/operator/configuration.md#costgraph-autopilot).

**2026-10-22**

costgraph-operator v0.8.6

### Breaking Changes

* N/A

### Updates

* The GPU exporter moves from `v1.5.22` to `v1.9.2`. Its settings and metrics are unchanged.

**2026-10-22**

costgraph-operator v0.8.5

### Breaking Changes

* **If you turned on the GPU exporter (`gpuExporter.enabled`), it now needs an image pull secret.** Its image moves to `registry.costgraph.ai/costgraph-gpu-exporter`, which takes a CostGraph API key with the `deployment:register` scope. Create a pull secret for `registry.costgraph.ai` and name it in the chart's top-level `imagePullSecrets` before you upgrade. See [Per-process GPU attribution](https://docs.costgraph.ai/costgraph/operator/accelerators.md#per-process-gpu-attribution). Installs with the exporter off are unaffected.

### Updates

* Chart `0.8.5` changes no other image, value or object.

**2026-10-21**

costgraph-operator v0.8.2

### Breaking Changes

* N/A

### Updates

* The flow tracing pods no longer have a memory limit. With request capture on, their startup memory can exceed the previous `256Mi` limit, which got the pods killed and restarted. They keep their `64Mi` memory request. Set `flowtrace.daemonSet.resources.limits` to cap them yourself.

**2026-10-21**

costgraph-operator v0.8.1

### Breaking Changes

* N/A

### Updates

* All three `costgraph-operator-prometheus` images move to `v0.5.4`. The AI gateway scraper moves up from `v0.5.1`.
* Network flow tracing caps the number of distinct flows each collector tracks at 20,000. New flows past the cap are dropped and counted, and a warning is logged at most once a minute. Flows already tracked keep counting. This bounds the tracer's memory on nodes with many short-lived connections.

**2026-10-12**

costgraph-operator v0.8.0

### Breaking Changes

* N/A

### Updates

* Connections to public destinations now carry the destination's name, from its DNS lookup or TLS server name. HTTP and gRPC requests carry the host they were sent to. See [network flow tracing](https://docs.costgraph.ai/costgraph/agent.md#network-flow-tracing) for what is recorded.
* Request capture is on by default, and it now records every HTTP and gRPC request, not only requests with an `X-CostGraph-` header. Set `flowtrace.config.perRequestCollector: false` to turn it off. While it's on, the flow tracing pod runs in the host PID namespace and mounts `/sys/fs/bpf`.

**2026-09-26**

costgraph-operator v0.7.2

### Breaking Changes

* N/A

### Updates

* **The AI gateway scraper reports latency, capacity and configuration bindings again. Upgrade to get them back.** All three `costgraph-operator-prometheus` images move to `v0.5.1`. Token usage was unaffected, but latency and capacity stopped arriving without an error. Any release still on an older tag is missing those signals today, and nothing in the cluster reports a failure.
* `costgraph-operator-kubernetes` moves from `v0.1.1` to `v0.1.2`, rebuilt on Go 1.26.6. The rebuild clears the standard library advisories that applied to the previous build, so upgrade even if you need nothing else in this release.
* **New accelerator exporter, shipped off by default.** A DaemonSet attributes per-process accelerator usage to the pod and container that owns it, and serves those metrics on port `9405`. Turn it on by upgrading with the values you installed with, because `helm upgrade` returns anything you do not pass back to the chart defaults:

  ```sh theme={null}
  helm upgrade <release> costgraph/costgraph-operator \
    -f your-values.yaml \
    --set gpuExporter.enabled=true
  ```

  It reads the host driver from `gpuExporter.driverInstallDir`, which defaults to the GKE path `/home/kubernetes/bin/nvidia`. Set it to your own driver directory on any other distribution. The pod runs as root on accelerator nodes only, and drops every capability.

  Processes on partitioned cards are attributed to the partition they run in. A process the host owns on a partition is not attributed to a card. Pod and container attribution is unaffected.
* Chart `0.7.2` changes no other image, value or object.

**2026-08-28**

costgraph-operator v0.5.0

### Breaking Changes

* **`helm upgrade` fails until the operator Deployments are deleted.** `costgraph-operator-kubernetes`, `costgraph-operator-prometheus`, `costgraph-operator-ai-gateway` and the `costgraph-operator-flowtrace` DaemonSet are now rendered by a shared chart, and their `spec.selector` changes as a result. A selector is immutable, so Kubernetes rejects the patch rather than replacing the object. Delete them before upgrading; they are stateless and are recreated immediately:

  ```sh theme={null}
  kubectl -n <namespace> delete deployment \
    <release>-costgraph-operator-kubernetes \
    <release>-costgraph-operator-prometheus \
    <release>-costgraph-operator-ai-gateway
  kubectl -n <namespace> delete daemonset \
    <release>-costgraph-operator-flowtrace
  helm upgrade <release> costgraph/costgraph-operator
  ```

  Omit the ones you do not run. `aiGatewayScraper` is off by default. No metrics are lost: the operators resume from the cluster's current state on restart.

* **Objects no longer carry the release name.**

  | Was | Now |
  | - | - |
  | `<release>-costgraph-operator-prometheus` (Deployment) | `costgraph-operator-prometheus` |
  | `<release>-costgraph-operator-flowtrace` (DaemonSet) | `costgraph-operator-flowtrace` |
  | `<release>-costgraph-operator-ai-gateway` (Deployment) | `costgraph-operator-ai-gateway` |
  | `<fullname>-credentials` (Secret) | `costgraph-operator-credentials` |

  Each component's objects are named from its `applicationName`. `fullnameOverride` no longer reaches them: it now affects only the ClusterRole (`<fullname>-view`), the ClusterRoleBinding and the ServiceAccount.

* **Every component's workload settings move beneath a `deployment:` or `daemonSet:` block.** A values file that sets them at the old paths still parses, but the settings no longer apply and the chart's defaults are used instead. Nothing errors, so check any override you rely on:

  | Before | After |
  | - | - |
  | `operatorPrometheus.image.tag` | `operatorPrometheus.deployment.image.tag` |
  | `operatorPrometheus.replicas` | `operatorPrometheus.deployment.replicas` |
  | `operatorPrometheus.resources` | `operatorPrometheus.deployment.resources` |
  | `operatorPrometheus.env` (list) | `operatorPrometheus.deployment.env` (map) |
  | `operatorPrometheus.securityContext` | `operatorPrometheus.deployment.securityContext` |
  | `operatorPrometheus.nodeSelector` / `.tolerations` / `.affinity` | the same key under `operatorPrometheus.deployment` |
  | `operatorPrometheus.podAnnotations` / `.podLabels` | the same key under `operatorPrometheus.deployment` |

  The same mapping applies to `operatorKubernetes` and `aiGatewayScraper`. For `flowtrace` the block is `daemonSet:` rather than `deployment:`, and it takes `image`, `resources`, `priorityClassName`, `tolerations` and the scheduling keys.

  `enabled` stays at component level on all four. `<component>.deployment.enabled` (or `.daemonSet.enabled`) is a second, narrower switch that keeps the configuration and drops the pods. `flowtrace.maxUnavailable` and `operatorPrometheus.scrapeTargets` also stay at component level. Settings under `config`, and the top-level `global` and `rbac` values, are otherwise unchanged.

* **`global.namespace` is removed.** It was read by a helper looking at a path that did not exist, so setting it never had an effect. The release namespace is used.

* **`env` is now a map, not a list.** `env.LOG_LEVEL.value: info` rather than `- name: LOG_LEVEL`. A map means `--set` can override one variable without clobbering its siblings. A list at the new path is not read.

### Updates

* All four CostGraph components (`operatorKubernetes`, `operatorPrometheus`, `aiGatewayScraper` and `flowtrace`) are rendered from one shared definition and take one values shape, and enabling, sizing or scheduling any of them is the same operation. The same contract covers the `costgraph-selfhosted` chart; see the [values reference](https://docs.costgraph.ai/costgraph/self-hosted/values.md)
* `operatorPrometheus` and `aiGatewayScraper` gain a `pprof` container port declaration, and `aiGatewayScraper` gains an explicit `replicas`
* `flowtrace` withholds its service account token by default, keeping a privileged per-node pod off the chart's cluster-wide read ClusterRole
* The ClusterRole and its bindings, the ServiceAccount, the RBAC values and every bundled exporter are unchanged

**2026-08-17**

costgraph-operator v0.3.0

### Breaking Changes

* The operator's ClusterRole no longer grants `get`/`watch`/`list` on every resource in every API group. Built-in resources are granted by name and custom resources per API group. Secrets, ConfigMaps and ServiceAccounts are not part of the grant at any version, so the API server refuses them outright rather than the operator choosing not to read them
* Resources in the new `rbac.excludeAPIGroups` list are no longer collected. These are API groups carrying credential material or references to it (cert-manager, External Secrets, Velero, Traefik, Flux notification providers, certificates and the authentication/authorization/RBAC groups), plus cluster machinery with no cost or topology signal (events, leases, admission and API registration, flow control, metrics, scheduling). Dashboards referencing any of these will stop updating after upgrade
* Installing now requires a renderer with cluster access, because the set of custom resource API groups is discovered from the cluster. `helm install`, `helm upgrade` and Argo CD v2.10 or newer qualify. A render without it fails with an explanatory error rather than installing an operator that silently collects nothing beyond core Kubernetes. Set `rbac.requireClusterDiscovery=false` for a cluster that genuinely runs no custom resources

### Updates

* Workloads, nodes, namespaces, storage, networking and pod network identity are unaffected. Karpenter, Argo CD, Cilium, CNPG, cloud provider CRDs and every other custom resource the cluster serves continue to be collected without configuration
* New `rbac.excludeAPIGroups` value sets which API groups CostGraph may not read, applying to every version of a group rather than the specific versions named
* New `rbac.grantCustomResources` value collects built-in resources only when set to `false`
* New `rbac.extraRules` value appends rules to the ClusterRole verbatim. Use it to grant named resources from an excluded group, for example collecting Traefik `IngressRoute` topology while `Middleware`, which can hold inline credentials, stays unreadable
* The bundled kube-state-metrics no longer requests Secrets, ConfigMaps, certificate signing requests, leases or webhook configurations. Its upstream defaults granted read access to every Secret in the cluster to publish metadata CostGraph does not use
* Resources the operator is not permitted to read are skipped at startup rather than retried, so a narrower grant produces no errors and no restart loop

**2026-08-11**

costgraph-operator v0.2.3

### Breaking Changes

* N/A

### Updates

* Added a DaemonSet-based, root-privileged BPF network-flow tracing agent that runs on compatible nodes across the fleet. Compatible nodes must expose a host-mounted cgroup v2 filesystem and run a BTF-enabled kernel for the fentry programs.
* Added default host filesystem mounts for `/proc:/host/proc` and the host cgroup v2 filesystem `/sys/fs/cgroup:/host/sys/fs/cgroup`

**2026-07-21**

costgraph-operator v0.1.14

### Breaking Changes

* The `costgraph` chart is deprecated and no longer supported. It receives no further releases and no fixes. Install the `costgraph-operator` chart; see [Overview](https://docs.costgraph.ai/costgraph/operator/overview.md)

### Updates

* Both operators now ship as tagged releases, `v0.1.0`, and the chart pins those tags rather than build identifiers. You can now see exactly which operator version a chart release deploys via the chart `appVersion`
* Cluster inventory removes resources when they are deleted, so decommissioned workloads no longer linger in the dashboard
* Lower memory use when scraping high-cardinality exporters
* Default resource requests tuned to match observed usage of the operator components

**2026-06-05**

costgraph-operator v0.1.13

### Breaking Changes

* N/A

### Updates

* Both operators expose profiling on the standard port `6060` for cluster-internal diagnostics, making support investigations faster
* Metric names and external labels are consistently namespaced under the `costgraph_` prefix across every exported series

**2026-06-04**

costgraph-operator v0.1.12

### Breaking Changes

* N/A

### Updates

* The kubelet is scraped directly as a metrics destination, improving host and container metric coverage on clusters where cAdvisor is unavailable
* Additional diagnostics to help troubleshoot partially reporting clusters

**2026-05-28**

costgraph-operator v0.1.11

### Breaking Changes

* N/A

### Updates

* Health markers are published for scraped resources, so clusters that are only partially reporting are now visible rather than silently incomplete
* Node scheduling keys are configurable for the operator components and their exporters
* Chart documentation refreshed for the split components

> [!NOTE]
>
> This release reaches feature parity with the `costgraph` chart, which is superseded from this point on.

**2026-05-13**

costgraph-operator v0.1.10

### Breaking Changes

* N/A

### Updates

* Resource requests and limits are configurable for every bundled dependency, so the operator can be sized to the cluster it runs in
* Includes chart patch releases v0.1.8 and v0.1.9: node-exporter is bundled as a metrics source, scrape targets are discovered dynamically instead of being statically configured, and a Helm value override failure under ArgoCD is fixed

**2026-04-17**

costgraph-operator v0.1.7

### Breaking Changes

* N/A

### Updates

* Cluster role rules corrected so that subresources are no longer requested with a wildcard, which some admission controllers rejected
* Includes chart patch releases v0.1.4 through v0.1.6: the API key can be supplied from an existing Secret, the backend URL is overridable for private deployments, and a rendering error caused by whitespace in release names is fixed

**2026-04-12**

costgraph-operator v0.1.3

### Breaking Changes

* N/A

### Updates

* **Beta release of the Kubernetes operator.** The `costgraph-operator` chart now deploys the full split: `costgraph-operator-kubernetes` for cluster inventory and `costgraph-operator-prometheus` for metrics
* Resource discovery is restricted to API resources that actually support `watch` and `list`, removing repeated permission errors on clusters with custom aggregated APIs
* GPU metrics and rightsizing recommendations for GPU-backed nodes

> [!NOTE]
>
> With this release the `costgraph` chart is superseded. New installations must use the `costgraph-operator` chart.

**2026-03-19**

costgraph-operator v0.1.2

### Breaking Changes

* N/A

### Updates

* A customer-supplied cAdvisor deployment can be used instead of the bundled one
* Scheduled reconciliation replaced with event-driven collection, so cluster changes are reflected without waiting for the next cycle
* Includes chart patch release v0.1.1: the bundled cAdvisor image maps PVC device information, which is required for volume cost attribution

**2026-02-11**

costgraph-operator v0.1.0

### Breaking Changes

* N/A

### Updates

* **First release of the redesigned operator.** The single-binary operator is being broken out into components with a single responsibility each, released and versioned independently. This release ships the metrics component, which scrapes cluster, host and container metrics and remote-writes them to CostGraph
* Cluster identity is attached to every published metric, so multi-cluster accounts attribute data correctly

> [!NOTE]
>
> This chart is installed as `costgraph-operator` and is separate from the `costgraph` chart. Do not run both against the same cluster.

**2025-10-05**

v0.1.27

### Breaking Changes

* N/A

### Updates

* Disk and network metrics are now collected
* We now ignore right-sizings if the resource does not have valid settings to apply the recommendations.
* Prometheus library updated to have improved performance and stability
* Bugfixes and cleanup logic improvements

**2025-09-17**

v0.1.26

### Breaking Changes

* N/A

### Updates

* Prometheus interval bug causing CPU usage to be reported incorrectly is fixed, this is now autodiscovered from the prometheus configuration
* Inactive resources are now included in historical data to support rightsizing recommendations
* Provider metadata is now included in the exported metrics
* Annotations and labels are now included in the exported metrics
* Bugfixes and cleanup logic improvements

**2025-09-03**

v0.1.25

### Breaking Changes

* Bundled reporting dashboards are no longer deployed automatically. Visuals are available in the CostGraph dashboard instead

### Updates

* Support for GCP managed prometheus added to our environment, Workload Identity Federation is required for this feature. See [here](https://cloud.google.com/stackdriver/docs/managed-prometheus/setup-otel#gmp-prereqs) for more information
* Automated rightsizings are now available and can be enabled on a workload-by-workload basis.
* Idle usage is now part of the recommendation data, usage can be audited from the dashboard
* Performance improvements to the owner resource grouping process
* Cluster provider specific metadata is now included in the exported data
* Reconcile time period is now configurable.

**2025-08-12**

v0.1.24

### Breaking Changes

* N/A

### Updates

* Retry logic improvements for the prometheus base to ease large cluster throttling failures
* Consume labels and annotations as part of improvements to topology for cluster resources
* Instant usage metric is now available to view data about container resource dynamics
* Deploy resource filter to disambiguate emptyDir vs memory usage data
* Bugfixes and cleanup logic improvements

**2025-07-29**

v0.1.23

### Breaking Changes

* N/A

### Updates

* Cost reporting improvements to correct errors in usage metrics
* Bugfix correcting misrepresented memory values with emptyDir configurations
* Addition of backoff and retries to our codebase
* Performance and memory improvements dropping memory usage requirements by 50%
* `metric_window_days` parameter allowing custom intervals to perform recommendations.

**2025-06-20**

v0.1.22

### Breaking Changes

* N/A

### Updates

* Base memory usage improvements in the operator data aggregation pipeline

**2025-06-13**

v0.1.21

### Breaking Changes

* N/A

### Updates

* Upgrade of database provider module to the latest version
* Addition of Computed usage metrics to the data model
* Performance improvements and logging updates

**2025-06-03**

v0.1.0

### Breaking Changes

* Due to the deployment of our new pricing infrastructure, customers using the raw pricing data will see schema changes. As much as we attempt to provide a standard schema, this change was unavoidable. This change is limited to customers developing with the data from our operator, no changes will be observed for dashboard and prometheus experiences.

### Updates

* Improved operator performance with lower pricing latency
* Updates to the savings dashboard to show more than 5 entries previously causing customers to miss relatively smaller container resources
* Improved pricing updates supporting newer cloud instance types and various usage types such as spot and reserved
* Addition of per-CPU and per-Memory pricing for all cloud providers improving the Cost Driver dashboard experience
* Support for newer GCP instance types and their upcoming Sweden region release
* Addition of liveness and readiness probe endpoints for customer visibility on failed instance deployments
* Hotfix for GCP custom instance types deviating from standard pricing obtained from cloud providers
* Hotfix for AZ based AWS spot pricing on Opt-In regions
* Support for all regional DigitalOcean pricing information providing customers more value for this provider

**2025-03-05**

v0.0.1

### Breaking Changes

* N/A

### Updates

* Initial release
* Support for all major kubernetes cloud providers such as AWS, GCP, Azure
* Dashboards iterations with customers for their internal use cases
* API key support for multiple clusters within a single account
* RBAC and invitation support for organizations
* Clusters can now be viewed on the web dashboard


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.