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)
