# 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.
