diff --git a/cobalt.ensure b/cobalt.ensure
index 469544e..35a3111 100644
--- a/cobalt.ensure
+++ b/cobalt.ensure
@@ -12,9 +12,12 @@
 # dart
 fuchsia/dart-sdk/${platform} git_revision:cd41b767a29dbb1cbf4f2b66e7a45b5ac822448f
 
+# python
+infra/3pp/tools/cpython3/${platform} version:3.8.6.chromium.10
+
 # Ninja
 @Subdir bin
-infra/ninja/${platform} version:1.9.0
+fuchsia/third_party/ninja/${platform} git_revision:c8f8f2a9e3016ab7a9ecb2e8b084cf441f3ae88e
 
 # GN
 gn/gn/${platform} git_revision:239533d2d91a04b3317ca9101cf7189f4e651e4d
@@ -22,7 +25,7 @@
 
 # Goma
 @Subdir goma
-fuchsia/third_party/goma/client/${platform} git_revision:9c15a8cecf525a4fbc7d4a11685e7dbd61cdc830
+fuchsia/third_party/goma/client/${platform} git_revision:a73a64a6e613a91fb5df0ec85c0a4ab94a4bd148
 
 # Go
 @Subdir golang
diff --git a/cobaltb.py b/cobaltb.py
index 29129c3..d9a9736 100755
--- a/cobaltb.py
+++ b/cobaltb.py
@@ -33,6 +33,7 @@
 PRIVACY_ENCODING_PARAMS_PATH = os.path.join(THIS_DIR, 'src', 'algorithms',
                                             'privacy', 'data',
                                             'privacy_encoding_params')
+PYTHON_CMD = os.path.join(SYSROOT_DIR, 'bin', 'python3')
 
 _logger = logging.getLogger()
 _verbose_count = 0
@@ -130,7 +131,9 @@
 
 def _goma_login(args):
   goma_dir = os.path.join(SYSROOT_DIR, 'goma')
-  subprocess.check_call(['%s/goma_auth' % goma_dir, 'login'])
+  if args.goma_dir:
+    goma_dir = args.goma_dir
+  subprocess.check_call([PYTHON_CMD, '%s/goma_auth.py' % goma_dir, 'login'])
 
 
 def _build(args):
@@ -160,7 +163,7 @@
       start_goma = True
     if start_goma:
       try:
-        if subprocess.check_output(['%s/goma_auth' % goma_dir, 'info']).strip() == 'Not logged in':
+        if subprocess.check_output([PYTHON_CMD, '%s/goma_auth.py' % goma_dir, 'info']).strip() == 'Not logged in':
           print()
           print()
           print("Goma is not logged in and will not be used. Please run: `./cobaltb.py goma_login`")
@@ -175,7 +178,7 @@
         print()
         use_goma = False
       if use_goma:
-        subprocess.check_call(['%s/goma_ctl.py' % goma_dir, 'ensure_start'])
+        subprocess.check_call([PYTHON_CMD, '%s/goma_ctl.py' % goma_dir, 'ensure_start'])
 
   if args.release:
     gn_args.append('is_debug=false')
@@ -649,6 +652,10 @@
   ########################################################
   sub_parser = subparsers.add_parser(
       'goma_login', parents=[parent_parser], help='Logs in to the goma service.')
+  sub_parser.add_argument(
+      '--goma_dir',
+      default='',
+      help='The dir where goma is installed (defaults to sysroot/goma')
   sub_parser.set_defaults(func=_goma_login)
 
   ########################################################
