diff --git a/apps/matrix/capture-config/main.go b/apps/matrix/capture-config/main.go
new file mode 100644
index 0000000..b031fbb
--- /dev/null
+++ b/apps/matrix/capture-config/main.go
@@ -0,0 +1,58 @@
+package main
+
+import (
+	"context"
+	"flag"
+	"io/ioutil"
+	"path"
+
+	v1 "k8s.io/api/core/v1"
+	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
+	"k8s.io/client-go/kubernetes"
+	"k8s.io/client-go/rest"
+)
+
+var configFile = flag.String("config", "", "Path to the homeserver.yaml config file.")
+var namespace = flag.String("namespace", "", "Namespace name.")
+var configMapName = flag.String("config-map-name", "", "Name of the ConfigMap to create.")
+
+func createClient() *kubernetes.Clientset {
+	config, err := rest.InClusterConfig()
+	if err != nil {
+		panic(err.Error())
+	}
+	cs, err := kubernetes.NewForConfig(config)
+	if err != nil {
+		panic(err.Error())
+	}
+	return cs
+}
+
+func createConfigFromFile() *v1.ConfigMap {
+	f, err := ioutil.ReadFile(*configFile)
+	if err != nil {
+		panic(err)
+	}
+	return &v1.ConfigMap{
+		TypeMeta: metav1.TypeMeta{
+			Kind:       "ConfigMap",
+			APIVersion: "v1",
+		},
+		ObjectMeta: metav1.ObjectMeta{
+			Name: *configMapName,
+		},
+		Data: map[string]string{
+			path.Base(*configFile): string(f),
+		},
+	}
+}
+
+func main() {
+	flag.Parse()
+	config := createConfigFromFile()
+	client := createClient().CoreV1().ConfigMaps(*namespace)
+	_, err := client.Create(context.TODO(), config, metav1.CreateOptions{})
+	if err != nil {
+		panic(err)
+	}
+}
