diff --git a/core/installer/server/appmanager/server.go b/core/installer/server/appmanager/server.go
index 5e1e06b..b3a0883 100644
--- a/core/installer/server/appmanager/server.go
+++ b/core/installer/server/appmanager/server.go
@@ -1,6 +1,7 @@
 package appmanager
 
 import (
+	"bytes"
 	"context"
 	"embed"
 	"encoding/json"
@@ -9,6 +10,7 @@
 	"html/template"
 	"net"
 	"net/http"
+	"path/filepath"
 	"strconv"
 	"strings"
 	"sync"
@@ -138,6 +140,7 @@
 	r.HandleFunc("/api/instance/{slug}", s.handleInstance).Methods(http.MethodGet)
 	r.HandleFunc("/api/instance/{slug}/update", s.handleAppUpdate).Methods(http.MethodPost)
 	r.HandleFunc("/api/instance/{slug}/remove", s.handleAppRemove).Methods(http.MethodPost)
+	r.HandleFunc("/api/dodo-app", s.handleDodoAppInstall).Methods(http.MethodPost)
 	r.HandleFunc("/clusters/{cluster}/servers/{server}/remove", s.handleClusterRemoveServer).Methods(http.MethodPost)
 	r.HandleFunc("/clusters/{cluster}/servers", s.handleClusterAddServer).Methods(http.MethodPost)
 	r.HandleFunc("/clusters/{name}", s.handleCluster).Methods(http.MethodGet)
@@ -154,6 +157,47 @@
 	return http.ListenAndServe(fmt.Sprintf(":%d", s.port), r)
 }
 
+type dodoAppInstallReq struct {
+	Id            string         `json:"id"`
+	SSHPrivateKey string         `json:"sshPrivateKey"`
+	Config        map[string]any `json:"config"`
+}
+
+func (s *Server) handleDodoAppInstall(w http.ResponseWriter, r *http.Request) {
+	var req dodoAppInstallReq
+	// TODO(gio): validate that no internal fields are overridden by request
+	if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	clusters, err := s.m.GetClusters()
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+		return
+	}
+	req.Config["clusters"] = installer.ToAccessConfigs(clusters)
+	var cfg bytes.Buffer
+	if err := json.NewEncoder(&cfg).Encode(req.Config); err != nil {
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+		return
+	}
+	app, err := installer.NewDodoApp(cfg.Bytes())
+	if err != nil {
+		http.Error(w, err.Error(), http.StatusBadRequest)
+		return
+	}
+	appDir := filepath.Join("/dodo-app", req.Id)
+	namespace := "dodo-app-test" // TODO(gio)
+	if _, err := s.m.Install(app, req.Id, appDir, namespace, map[string]any{
+		"managerAddr":   "", // TODO(gio)
+		"appId":         req.Id,
+		"sshPrivateKey": req.SSHPrivateKey,
+	}); err != nil {
+		http.Error(w, err.Error(), http.StatusInternalServerError)
+		return
+	}
+}
+
 func (s *Server) handleNetworks(w http.ResponseWriter, r *http.Request) {
 	env, err := s.m.Config()
 	if err != nil {
diff --git a/core/installer/server/dodo-app/schemas/app.schema.json b/core/installer/server/dodo-app/schemas/app.schema.json
index 55b9941..f6f2171 100644
--- a/core/installer/server/dodo-app/schemas/app.schema.json
+++ b/core/installer/server/dodo-app/schemas/app.schema.json
@@ -22,7 +22,16 @@
           "$ref": "#/definitions/nodejs"
         }
       ]
-    }
+    },
+	"volume": {
+	  "$ref": "#/definitions/volumes"
+	},
+	"postgresql": {
+	  "$ref": "#/definitions/postgresql"
+	},
+	"mongodb": {
+	  "$ref": "#/definitions/mongodb"
+	}
   },
   "definitions": {
     "golang": {
@@ -45,15 +54,6 @@
         "ingress": {
           "$ref": "#/definitions/ingress"
         },
-        "volumes": {
-          "$ref": "#/definitions/volumes"
-        },
-        "postgresql": {
-          "$ref": "#/definitions/postgresql"
-        },
-        "mongodb": {
-          "$ref": "#/definitions/mongodb"
-        },
         "dev": {
           "$ref": "#/definitions/dev"
         }
@@ -100,15 +100,6 @@
         "ingress": {
           "$ref": "#/definitions/ingress"
         },
-        "volumes": {
-          "$ref": "#/definitions/volumes"
-        },
-        "postgresql": {
-          "$ref": "#/definitions/postgresql"
-        },
-        "mongodb": {
-          "$ref": "#/definitions/mongodb"
-        },
         "dev": {
           "$ref": "#/definitions/dev"
         }
@@ -132,15 +123,6 @@
         "ingress": {
           "$ref": "#/definitions/ingress"
         },
-        "volumes": {
-          "$ref": "#/definitions/volumes"
-        },
-        "postgresql": {
-          "$ref": "#/definitions/postgresql"
-        },
-        "mongodb": {
-          "$ref": "#/definitions/mongodb"
-        },
         "dev": {
           "$ref": "#/definitions/dev"
         },
@@ -167,15 +149,6 @@
         "ingress": {
           "$ref": "#/definitions/ingress"
         },
-        "volumes": {
-          "$ref": "#/definitions/volumes"
-        },
-        "postgresql": {
-          "$ref": "#/definitions/postgresql"
-        },
-        "mongodb": {
-          "$ref": "#/definitions/mongodb"
-        },
         "dev": {
           "$ref": "#/definitions/dev"
         },
diff --git a/core/installer/server/dodo-app/server.go b/core/installer/server/dodo-app/server.go
index 7643168..2bbbb7c 100644
--- a/core/installer/server/dodo-app/server.go
+++ b/core/installer/server/dodo-app/server.go
@@ -1439,7 +1439,6 @@
 			"/.dodo/app",
 			namespace,
 			map[string]any{
-				"repoAddr":       repo.FullAddress(),
 				"repoPublicAddr": s.repoPublicAddr,
 				"managerAddr":    fmt.Sprintf("http://%s", s.self),
 				"appId":          name,
