installer: appmanager cmd
diff --git a/core/installer/cmd/app_manager.go b/core/installer/cmd/app_manager.go
new file mode 100644
index 0000000..1fc6d64
--- /dev/null
+++ b/core/installer/cmd/app_manager.go
@@ -0,0 +1,55 @@
+package main
+
+import (
+	"os"
+
+	"github.com/giolekva/pcloud/core/installer"
+	"github.com/spf13/cobra"
+	"golang.org/x/crypto/ssh"
+)
+
+var appManagerFlags struct {
+	sshKey   string
+	repoAddr string
+}
+
+func appManagerCmd() *cobra.Command {
+	cmd := &cobra.Command{
+		Use:  "appmanager",
+		RunE: installCmdRun,
+	}
+	cmd.Flags().StringVar(
+		&installFlags.sshKey,
+		"ssh-key",
+		"",
+		"",
+	)
+	cmd.Flags().StringVar(
+		&installFlags.repoAddr,
+		"repo-addr",
+		"",
+		"",
+	)
+	return cmd
+}
+
+func appManagerCmdRun(cmd *cobra.Command, args []string) error {
+	sshKey, err := os.ReadFile(installFlags.sshKey)
+	if err != nil {
+		return err
+	}
+	signer, err := ssh.ParsePrivateKey(sshKey)
+	if err != nil {
+		return err
+	}
+	repo, err := cloneRepo(installFlags.repoAddr, signer)
+	if err != nil {
+		return err
+	}
+	_, err = installer.NewAppManager(repo, signer)
+	if err != nil {
+		return err
+	}
+	// TODO(gio): start server
+	return nil
+}