fluxcd-reconciler, env creator calling it every 30 sec to sync the cluster
diff --git a/core/installer/bootstrapper.go b/core/installer/bootstrapper.go
index 94c1e2d..e3331c4 100644
--- a/core/installer/bootstrapper.go
+++ b/core/installer/bootstrapper.go
@@ -88,6 +88,10 @@
 	if err := b.installDNSZoneManager(ss, repoIO, nsGen, b.ns, env); err != nil {
 		return err
 	}
+	fmt.Println("Installing Fluxcd Reconciler")
+	if err := b.installFluxcdReconciler(ss, repoIO, nsGen, b.ns, env); err != nil {
+		return err
+	}
 	fmt.Println("Installing env manager")
 	if err := b.installEnvManager(ss, repoIO, nsGen, b.ns, env); err != nil {
 		return err
@@ -555,6 +559,34 @@
 	return nil
 }
 
+func (b Bootstrapper) installFluxcdReconciler(ss *soft.Client, repo RepoIO, nsGen NamespaceGenerator, nsCreator NamespaceCreator, env EnvConfig) error {
+	appRepo := NewInMemoryAppRepository(CreateAllApps())
+	app, err := appRepo.Find("fluxcd-reconciler")
+	if err != nil {
+		return err
+	}
+	ns, err := nsGen.Generate(app.Namespaces[0])
+	if err != nil {
+		return err
+	}
+	if err := nsCreator.Create(ns); err != nil {
+		return err
+	}
+	derived := Derived{
+		Global: Values{
+			PCloudEnvName: env.Name,
+		},
+		Values: map[string]any{},
+		Release: Release{
+			Namespace: ns,
+		},
+	}
+	if err := repo.InstallApp(*app, filepath.Join("/infrastructure", app.Name), derived.Values, derived); err != nil {
+		return err
+	}
+	return nil
+}
+
 type HelmActionConfigFactory interface {
 	New(namespace string) (*action.Configuration, error)
 }