diff --git a/api/controller/api.py b/api/controller/api.py
index 7811368..238f755 100644
--- a/api/controller/api.py
+++ b/api/controller/api.py
@@ -23,40 +23,46 @@
 
 
 def _CompileProtoSuccess(_input_proto, output_proto, _config):
-  """Mock success response for CompileProto."""
-  output_proto.modified_files.add().path = '/code/chromite/api/gen/foo_pb2.py'
+    """Mock success response for CompileProto."""
+    output_proto.modified_files.add().path = "/code/chromite/api/gen/foo_pb2.py"
 
 
 @faux.success(_CompileProtoSuccess)
 @faux.empty_error
 @validate.validation_complete
 def CompileProto(_input_proto, output_proto, _config):
-  """Compile the Build API proto, returning the list of modified files."""
-  cmd = [os.path.join(constants.CHROMITE_DIR, 'api', 'compile_build_api_proto')]
-  cros_build_lib.run(cmd)
-  result = cros_build_lib.run(['git', 'status', '--porcelain=v1'],
-                              cwd=constants.CHROMITE_DIR, capture_output=True,
-                              encoding='utf-8')
-  for line in result.stdout.splitlines():
-    if not line:
-      continue
-    path = line.split()[-1]
-    output_proto.modified_files.add().path = os.path.join(
-        constants.CHROMITE_DIR, path)
+    """Compile the Build API proto, returning the list of modified files."""
+    cmd = [
+        os.path.join(constants.CHROMITE_DIR, "api", "compile_build_api_proto")
+    ]
+    cros_build_lib.run(cmd)
+    result = cros_build_lib.run(
+        ["git", "status", "--porcelain=v1"],
+        cwd=constants.CHROMITE_DIR,
+        capture_output=True,
+        encoding="utf-8",
+    )
+    for line in result.stdout.splitlines():
+        if not line:
+            continue
+        path = line.split()[-1]
+        output_proto.modified_files.add().path = os.path.join(
+            constants.CHROMITE_DIR, path
+        )
 
 
 @faux.all_empty
 @validate.validation_complete
 def GetMethods(_input_proto, output_proto, _config):
-  """List all of the registered methods."""
-  router = router_lib.GetRouter()
-  for method in router.ListMethods():
-    output_proto.methods.add().method = method
+    """List all of the registered methods."""
+    router = router_lib.GetRouter()
+    for method in router.ListMethods():
+        output_proto.methods.add().method = method
 
 
 @validate.validation_complete
 def GetVersion(_input_proto, output_proto, _config):
-  """Get the Build API major version number."""
-  output_proto.version.major = VERSION_MAJOR
-  output_proto.version.minor = VERSION_MINOR
-  output_proto.version.bug = VERSION_BUG
+    """Get the Build API major version number."""
+    output_proto.version.major = VERSION_MAJOR
+    output_proto.version.minor = VERSION_MINOR
+    output_proto.version.bug = VERSION_BUG
