diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index 3d1e397..9296749 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -12,6 +12,7 @@
 
 	"github.com/go-git/go-billy/v5/osfs"
 	"github.com/go-git/go-git/v5"
+	"github.com/go-git/go-git/v5/plumbing"
 	gitssh "github.com/go-git/go-git/v5/plumbing/transport/ssh"
 	"github.com/go-git/go-git/v5/storage/memory"
 )
@@ -19,6 +20,7 @@
 var port = flag.Int("port", 3000, "Port to listen on")
 var appId = flag.String("app-id", "", "Application ID")
 var repoAddr = flag.String("repo-addr", "", "Git repository address")
+var branch = flag.String("branch", "", "Name of the branch to process")
 var sshKey = flag.String("ssh-key", "", "Private SSH key to access Git repository")
 var appDir = flag.String("app-dir", "", "Path to store application repository locally")
 var runCfg = flag.String("run-cfg", "", "Run configuration")
@@ -30,7 +32,8 @@
 	Env  []string `json:"env"`
 }
 
-func CloneRepository(addr string, signer ssh.Signer, path string) error {
+func CloneRepositoryBranch(addr, branch string, signer ssh.Signer, path string) error {
+	ref := fmt.Sprintf("refs/heads/%s", branch)
 	c, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), &git.CloneOptions{
 		URL: addr,
 		Auth: &gitssh.PublicKeys{
@@ -45,7 +48,7 @@
 			},
 		},
 		RemoteName:      "origin",
-		ReferenceName:   "refs/heads/master",
+		ReferenceName:   plumbing.ReferenceName(ref),
 		SingleBranch:    true,
 		Depth:           1,
 		InsecureSkipTLS: true,
@@ -87,7 +90,7 @@
 	if err != nil {
 		panic(err)
 	}
-	if err := CloneRepository(*repoAddr, signer, *appDir); err != nil {
+	if err := CloneRepositoryBranch(*repoAddr, *branch, signer, *appDir); err != nil {
 		panic(err)
 	}
 	r, err := os.Open(*runCfg)
@@ -99,7 +102,7 @@
 	if err := json.NewDecoder(r).Decode(&cmds); err != nil {
 		panic(err)
 	}
-	s := NewServer(*port, *appId, *repoAddr, signer, *appDir, cmds, self, *managerAddr)
+	s := NewServer(*port, *appId, *repoAddr, *branch, signer, *appDir, cmds, self, *managerAddr)
 	if err := s.Start(); err != nil {
 		log.Fatal(err)
 	}
diff --git a/apps/app-runner/server.go b/apps/app-runner/server.go
index b906e7b..ffc5709 100644
--- a/apps/app-runner/server.go
+++ b/apps/app-runner/server.go
@@ -22,6 +22,7 @@
 	ready       bool
 	cmd         *exec.Cmd
 	repoAddr    string
+	branch      string
 	signer      ssh.Signer
 	appDir      string
 	runCommands []Command
@@ -30,13 +31,14 @@
 	logs        *Log
 }
 
-func NewServer(port int, appId string, repoAddr string, signer ssh.Signer, appDir string, runCommands []Command, self string, manager string) *Server {
+func NewServer(port int, appId string, repoAddr, branch string, signer ssh.Signer, appDir string, runCommands []Command, self string, manager string) *Server {
 	return &Server{
 		l:           &sync.Mutex{},
 		port:        port,
 		ready:       false,
 		appId:       appId,
 		repoAddr:    repoAddr,
+		branch:      branch,
 		signer:      signer,
 		appDir:      appDir,
 		runCommands: runCommands,
@@ -100,7 +102,7 @@
 }
 
 func (s *Server) run() error {
-	if err := CloneRepository(s.repoAddr, s.signer, s.appDir); err != nil {
+	if err := CloneRepositoryBranch(s.repoAddr, s.branch, s.signer, s.appDir); err != nil {
 		return err
 	}
 	logM := io.MultiWriter(os.Stdout, s.logs)
diff --git a/charts/app-runner/templates/install.yaml b/charts/app-runner/templates/install.yaml
index f3b2a00..b9ecdbb 100644
--- a/charts/app-runner/templates/install.yaml
+++ b/charts/app-runner/templates/install.yaml
@@ -100,6 +100,7 @@
         - --app-id={{ .Values.appId }}
         - --app-dir={{ .Values.appDir }}
         - --repo-addr={{ .Values.repoAddr }}
+        - --branch={{ .Values.branch }}
         - --ssh-key=/pcloud/ssh-key/private
         - --run-cfg=/pcloud/config/run
         - --manager-addr={{ .Values.managerAddr }}
diff --git a/charts/app-runner/values.yaml b/charts/app-runner/values.yaml
index 9145c47..88958ae 100644
--- a/charts/app-runner/values.yaml
+++ b/charts/app-runner/values.yaml
@@ -3,6 +3,7 @@
   tag: latest
   pullPolicy: Always
 repoAddr: 192.168.0.11
+branch: "master"
 sshPrivateKey: key
 appId: ""
 runCfg: ""
diff --git a/core/installer/app_configs/dodo_app.cue b/core/installer/app_configs/dodo_app.cue
index cb172bb..aa3b527 100644
--- a/core/installer/app_configs/dodo_app.cue
+++ b/core/installer/app_configs/dodo_app.cue
@@ -349,6 +349,7 @@
 						appDir: _app.rootDir
 						appId: input.appId
 						repoAddr: "\(input.repoPublicAddr)/\(input.appId)"
+						branch: input.branch
 						sshPrivateKey: base64.Encode(null, input.sshPrivateKey)
 						runCfg: base64.Encode(null, json.Marshal(_app.runConfiguration))
 						managerAddr: input.managerAddr
