# Metacontroller (/docs/data/components/metacontroller)



## Component Category [#component-category]

Platform internals / controller framework

## Component Description [#component-description]

Metacontroller is a Kubernetes add-on that simplifies writing custom controllers using declarative rules and webhooks. It provides `CompositeController` and `DecoratorController` custom resources that let operators define controller behavior without writing Go code. The platform deploys it as raw YAML manifests (no Helm chart), based on upstream tag v4.15.0.

## Why It Is Used [#why-it-is-used]

In BullSequana AI, Metacontroller is a hard runtime dependency of Kubeflow Pipelines. The `kubeflow-pipelines-profile-controller` resource shipped by Kubeflow is a `DecoratorController`. Without the Metacontroller CRDs and pod running, Kubeflow sync fails with a missing CRD error. Metacontroller has no other consumers in the platform.

## Learn More [#learn-more]

* [Metacontroller documentation](https://metacontroller.github.io/metacontroller/)
* [metacontroller/metacontroller on GitHub](https://github.com/metacontroller/metacontroller)

## Deployment notes [#deployment-notes]

Metacontroller deploys in the proai tier at sync wave 5, before Kubeflow (sync wave 6). It uses the `yaml` format (raw manifests, no Helm chart) based on upstream tag `v4.15.0`. A single-replica `StatefulSet` runs the controller.

## Interacts With [#interacts-with]

* `Kubeflow`, which defines the DecoratorController resources that Metacontroller processes.
* `ArgoCD`, which reconciles the raw manifests as part of the proai parent application.
