diff --git a/apps/app-runner/main.go b/apps/app-runner/main.go
index 9c57225..b9acaa6 100644
--- a/apps/app-runner/main.go
+++ b/apps/app-runner/main.go
@@ -35,7 +35,7 @@
 	Env  []string `json:"env"`
 }
 
-func CloneRepositoryBranch(addr, branch, rootDir string, signer ssh.Signer, path string) error {
+func CloneRepositoryBranch(addr, branch, rootDir string, signer ssh.Signer, path string) (string, error) {
 	ref := fmt.Sprintf("refs/heads/%s", branch)
 	opts := &git.CloneOptions{
 		URL:             addr,
@@ -61,29 +61,13 @@
 	}
 	c, err := git.Clone(memory.NewStorage(), osfs.New(path, osfs.WithBoundOS()), opts)
 	if err != nil {
-		return err
+		return "", err
 	}
-	wt, err := c.Worktree()
+	head, err := c.Head()
 	if err != nil {
-		return err
+		return "", err
 	}
-	if wt == nil {
-		panic(wt)
-	}
-	// TODO(gio): This should probably be removed.
-	// sb, err := wt.Submodules()
-	// if err != nil {
-	// 	return err
-	// }
-	// if err := sb.Init(); err != nil {
-	// 	return err
-	// }
-	// if err := sb.Update(&git.SubmoduleUpdateOptions{
-	// 	Depth: 1,
-	// }); err != nil {
-	// 	return err
-	// }
-	return err
+	return head.Hash().String(), nil
 }
 
 func main() {
@@ -92,6 +76,10 @@
 	if !ok {
 		panic("no SELF_IP")
 	}
+	id, ok := os.LookupEnv("SELF_ID")
+	if !ok {
+		panic("no SELF_ID")
+	}
 	var signer ssh.Signer
 	// TODO(gio): revisit this logic
 	if *sshKey != "" && !(strings.HasPrefix(*repoAddr, "http://") || strings.HasPrefix(*repoAddr, "https://")) {
@@ -104,7 +92,7 @@
 			panic(err)
 		}
 	}
-	if err := CloneRepositoryBranch(*repoAddr, *branch, *rootDir, signer, *appDir); err != nil {
+	if err := os.Mkdir(*appDir, os.ModePerm); err != nil {
 		panic(err)
 	}
 	r, err := os.Open(*runCfg)
@@ -116,7 +104,7 @@
 	if err := json.NewDecoder(r).Decode(&cmds); err != nil {
 		panic(err)
 	}
-	s := NewServer(*port, *appId, *service, *repoAddr, *branch, *rootDir, signer, *appDir, cmds, self, *managerAddr)
+	s := NewServer(*port, *appId, *service, id, *repoAddr, *branch, *rootDir, signer, *appDir, cmds, self, *managerAddr)
 	if err := s.Start(); err != nil {
 		log.Fatal(err)
 	}
