diff --git a/api/build_api.py b/api/build_api.py
index 00959eb..3df89e0 100644
--- a/api/build_api.py
+++ b/api/build_api.py
@@ -13,10 +13,10 @@
 from google.protobuf import symbol_database
 
 from chromite.api import service
-from chromite.api.gen import autotest_pb2
 from chromite.api.gen import build_api_pb2
 from chromite.api.gen import depgraph_pb2
 from chromite.api.gen import image_pb2
+from chromite.api.gen import test_archive_pb2
 from chromite.lib import commandline
 from chromite.lib import cros_build_lib
 from chromite.lib import osutils
@@ -232,9 +232,9 @@
   Args:
     router (Router): The router.
   """
-  router.Register(autotest_pb2)
   router.Register(depgraph_pb2)
   router.Register(image_pb2)
+  router.Register(test_archive_pb2)
 
 
 def main(argv):
diff --git a/api/gen/autotest_pb2.py b/api/gen/autotest_pb2.py
deleted file mode 100644
index 3faf323..0000000
--- a/api/gen/autotest_pb2.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Generated by the protocol buffer compiler.  DO NOT EDIT!
-# source: autotest.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
-from google.protobuf import descriptor as _descriptor
-from google.protobuf import message as _message
-from google.protobuf import reflection as _reflection
-from google.protobuf import symbol_database as _symbol_database
-# @@protoc_insertion_point(imports)
-
-_sym_db = _symbol_database.Default()
-
-
-import build_api_pb2 as build__api__pb2
-import common_pb2 as common__pb2
-
-
-DESCRIPTOR = _descriptor.FileDescriptor(
-  name='autotest.proto',
-  package='chromite.api',
-  syntax='proto3',
-  serialized_options=None,
-  serialized_pb=_b('\n\x0e\x61utotest.proto\x12\x0c\x63hromite.api\x1a\x0f\x62uild_api.proto\x1a\x0c\x63ommon.proto\"[\n\x1b\x43reateHwTestArchivesRequest\x12\"\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x0c.BuildTarget\x12\x18\n\x10output_directory\x18\x02 \x01(\t\"\x1b\n\x0b\x41rchiveFile\x12\x0c\n\x04path\x18\x01 \x01(\t\"H\n\x1c\x43reateHwTestArchivesResponse\x12(\n\x05\x66iles\x18\x01 \x03(\x0b\x32\x19.chromite.api.ArchiveFile2\x97\x01\n\x0e\x41rchiveService\x12m\n\x14\x43reateHwTestArchives\x12).chromite.api.CreateHwTestArchivesRequest\x1a*.chromite.api.CreateHwTestArchivesResponse\x1a\x16\xc2\xed\x1a\x12\n\x10\x61utotest_archiveb\x06proto3')
-  ,
-  dependencies=[build__api__pb2.DESCRIPTOR,common__pb2.DESCRIPTOR,])
-
-
-
-
-_CREATEHWTESTARCHIVESREQUEST = _descriptor.Descriptor(
-  name='CreateHwTestArchivesRequest',
-  full_name='chromite.api.CreateHwTestArchivesRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='build_target', full_name='chromite.api.CreateHwTestArchivesRequest.build_target', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='output_directory', full_name='chromite.api.CreateHwTestArchivesRequest.output_directory', index=1,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=63,
-  serialized_end=154,
-)
-
-
-_ARCHIVEFILE = _descriptor.Descriptor(
-  name='ArchiveFile',
-  full_name='chromite.api.ArchiveFile',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='path', full_name='chromite.api.ArchiveFile.path', index=0,
-      number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=156,
-  serialized_end=183,
-)
-
-
-_CREATEHWTESTARCHIVESRESPONSE = _descriptor.Descriptor(
-  name='CreateHwTestArchivesResponse',
-  full_name='chromite.api.CreateHwTestArchivesResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='files', full_name='chromite.api.CreateHwTestArchivesResponse.files', index=0,
-      number=1, type=11, cpp_type=10, label=3,
-      has_default_value=False, default_value=[],
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=185,
-  serialized_end=257,
-)
-
-_CREATEHWTESTARCHIVESREQUEST.fields_by_name['build_target'].message_type = common__pb2._BUILDTARGET
-_CREATEHWTESTARCHIVESRESPONSE.fields_by_name['files'].message_type = _ARCHIVEFILE
-DESCRIPTOR.message_types_by_name['CreateHwTestArchivesRequest'] = _CREATEHWTESTARCHIVESREQUEST
-DESCRIPTOR.message_types_by_name['ArchiveFile'] = _ARCHIVEFILE
-DESCRIPTOR.message_types_by_name['CreateHwTestArchivesResponse'] = _CREATEHWTESTARCHIVESRESPONSE
-_sym_db.RegisterFileDescriptor(DESCRIPTOR)
-
-CreateHwTestArchivesRequest = _reflection.GeneratedProtocolMessageType('CreateHwTestArchivesRequest', (_message.Message,), dict(
-  DESCRIPTOR = _CREATEHWTESTARCHIVESREQUEST,
-  __module__ = 'autotest_pb2'
-  # @@protoc_insertion_point(class_scope:chromite.api.CreateHwTestArchivesRequest)
-  ))
-_sym_db.RegisterMessage(CreateHwTestArchivesRequest)
-
-ArchiveFile = _reflection.GeneratedProtocolMessageType('ArchiveFile', (_message.Message,), dict(
-  DESCRIPTOR = _ARCHIVEFILE,
-  __module__ = 'autotest_pb2'
-  # @@protoc_insertion_point(class_scope:chromite.api.ArchiveFile)
-  ))
-_sym_db.RegisterMessage(ArchiveFile)
-
-CreateHwTestArchivesResponse = _reflection.GeneratedProtocolMessageType('CreateHwTestArchivesResponse', (_message.Message,), dict(
-  DESCRIPTOR = _CREATEHWTESTARCHIVESRESPONSE,
-  __module__ = 'autotest_pb2'
-  # @@protoc_insertion_point(class_scope:chromite.api.CreateHwTestArchivesResponse)
-  ))
-_sym_db.RegisterMessage(CreateHwTestArchivesResponse)
-
-
-
-_ARCHIVESERVICE = _descriptor.ServiceDescriptor(
-  name='ArchiveService',
-  full_name='chromite.api.ArchiveService',
-  file=DESCRIPTOR,
-  index=0,
-  serialized_options=_b('\302\355\032\022\n\020autotest_archive'),
-  serialized_start=260,
-  serialized_end=411,
-  methods=[
-  _descriptor.MethodDescriptor(
-    name='CreateHwTestArchives',
-    full_name='chromite.api.ArchiveService.CreateHwTestArchives',
-    index=0,
-    containing_service=None,
-    input_type=_CREATEHWTESTARCHIVESREQUEST,
-    output_type=_CREATEHWTESTARCHIVESRESPONSE,
-    serialized_options=None,
-  ),
-])
-_sym_db.RegisterServiceDescriptor(_ARCHIVESERVICE)
-
-DESCRIPTOR.services_by_name['ArchiveService'] = _ARCHIVESERVICE
-
-# @@protoc_insertion_point(module_scope)
diff --git a/api/gen/test_archive_pb2.py b/api/gen/test_archive_pb2.py
new file mode 100644
index 0000000..7694718
--- /dev/null
+++ b/api/gen/test_archive_pb2.py
@@ -0,0 +1,183 @@
+# Generated by the protocol buffer compiler.  DO NOT EDIT!
+# source: test_archive.proto
+
+import sys
+_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+from google.protobuf import descriptor as _descriptor
+from google.protobuf import message as _message
+from google.protobuf import reflection as _reflection
+from google.protobuf import symbol_database as _symbol_database
+# @@protoc_insertion_point(imports)
+
+_sym_db = _symbol_database.Default()
+
+
+import build_api_pb2 as build__api__pb2
+import common_pb2 as common__pb2
+
+
+DESCRIPTOR = _descriptor.FileDescriptor(
+  name='test_archive.proto',
+  package='chromite.api',
+  syntax='proto3',
+  serialized_options=None,
+  serialized_pb=_b('\n\x12test_archive.proto\x12\x0c\x63hromite.api\x1a\x0f\x62uild_api.proto\x1a\x0c\x63ommon.proto\"T\n\x14\x43reateArchiveRequest\x12\"\n\x0c\x62uild_target\x18\x01 \x01(\x0b\x32\x0c.BuildTarget\x12\x18\n\x10output_directory\x18\x02 \x01(\t\"\x1b\n\x0b\x41rchiveFile\x12\x0c\n\x04path\x18\x01 \x01(\t\"A\n\x15\x43reateArchiveResponse\x12(\n\x05\x66iles\x18\x01 \x03(\x0b\x32\x19.chromite.api.ArchiveFile2\x89\x01\n\x0e\x41rchiveService\x12_\n\x14\x43reateHwTestArchives\x12\".chromite.api.CreateArchiveRequest\x1a#.chromite.api.CreateArchiveResponse\x1a\x16\xc2\xed\x1a\x12\n\x10\x61utotest_archiveb\x06proto3')
+  ,
+  dependencies=[build__api__pb2.DESCRIPTOR,common__pb2.DESCRIPTOR,])
+
+
+
+
+_CREATEARCHIVEREQUEST = _descriptor.Descriptor(
+  name='CreateArchiveRequest',
+  full_name='chromite.api.CreateArchiveRequest',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='build_target', full_name='chromite.api.CreateArchiveRequest.build_target', index=0,
+      number=1, type=11, cpp_type=10, label=1,
+      has_default_value=False, default_value=None,
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+    _descriptor.FieldDescriptor(
+      name='output_directory', full_name='chromite.api.CreateArchiveRequest.output_directory', index=1,
+      number=2, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=67,
+  serialized_end=151,
+)
+
+
+_ARCHIVEFILE = _descriptor.Descriptor(
+  name='ArchiveFile',
+  full_name='chromite.api.ArchiveFile',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='path', full_name='chromite.api.ArchiveFile.path', index=0,
+      number=1, type=9, cpp_type=9, label=1,
+      has_default_value=False, default_value=_b("").decode('utf-8'),
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=153,
+  serialized_end=180,
+)
+
+
+_CREATEARCHIVERESPONSE = _descriptor.Descriptor(
+  name='CreateArchiveResponse',
+  full_name='chromite.api.CreateArchiveResponse',
+  filename=None,
+  file=DESCRIPTOR,
+  containing_type=None,
+  fields=[
+    _descriptor.FieldDescriptor(
+      name='files', full_name='chromite.api.CreateArchiveResponse.files', index=0,
+      number=1, type=11, cpp_type=10, label=3,
+      has_default_value=False, default_value=[],
+      message_type=None, enum_type=None, containing_type=None,
+      is_extension=False, extension_scope=None,
+      serialized_options=None, file=DESCRIPTOR),
+  ],
+  extensions=[
+  ],
+  nested_types=[],
+  enum_types=[
+  ],
+  serialized_options=None,
+  is_extendable=False,
+  syntax='proto3',
+  extension_ranges=[],
+  oneofs=[
+  ],
+  serialized_start=182,
+  serialized_end=247,
+)
+
+_CREATEARCHIVEREQUEST.fields_by_name['build_target'].message_type = common__pb2._BUILDTARGET
+_CREATEARCHIVERESPONSE.fields_by_name['files'].message_type = _ARCHIVEFILE
+DESCRIPTOR.message_types_by_name['CreateArchiveRequest'] = _CREATEARCHIVEREQUEST
+DESCRIPTOR.message_types_by_name['ArchiveFile'] = _ARCHIVEFILE
+DESCRIPTOR.message_types_by_name['CreateArchiveResponse'] = _CREATEARCHIVERESPONSE
+_sym_db.RegisterFileDescriptor(DESCRIPTOR)
+
+CreateArchiveRequest = _reflection.GeneratedProtocolMessageType('CreateArchiveRequest', (_message.Message,), dict(
+  DESCRIPTOR = _CREATEARCHIVEREQUEST,
+  __module__ = 'test_archive_pb2'
+  # @@protoc_insertion_point(class_scope:chromite.api.CreateArchiveRequest)
+  ))
+_sym_db.RegisterMessage(CreateArchiveRequest)
+
+ArchiveFile = _reflection.GeneratedProtocolMessageType('ArchiveFile', (_message.Message,), dict(
+  DESCRIPTOR = _ARCHIVEFILE,
+  __module__ = 'test_archive_pb2'
+  # @@protoc_insertion_point(class_scope:chromite.api.ArchiveFile)
+  ))
+_sym_db.RegisterMessage(ArchiveFile)
+
+CreateArchiveResponse = _reflection.GeneratedProtocolMessageType('CreateArchiveResponse', (_message.Message,), dict(
+  DESCRIPTOR = _CREATEARCHIVERESPONSE,
+  __module__ = 'test_archive_pb2'
+  # @@protoc_insertion_point(class_scope:chromite.api.CreateArchiveResponse)
+  ))
+_sym_db.RegisterMessage(CreateArchiveResponse)
+
+
+
+_ARCHIVESERVICE = _descriptor.ServiceDescriptor(
+  name='ArchiveService',
+  full_name='chromite.api.ArchiveService',
+  file=DESCRIPTOR,
+  index=0,
+  serialized_options=_b('\302\355\032\022\n\020autotest_archive'),
+  serialized_start=250,
+  serialized_end=387,
+  methods=[
+  _descriptor.MethodDescriptor(
+    name='CreateHwTestArchives',
+    full_name='chromite.api.ArchiveService.CreateHwTestArchives',
+    index=0,
+    containing_service=None,
+    input_type=_CREATEARCHIVEREQUEST,
+    output_type=_CREATEARCHIVERESPONSE,
+    serialized_options=None,
+  ),
+])
+_sym_db.RegisterServiceDescriptor(_ARCHIVESERVICE)
+
+DESCRIPTOR.services_by_name['ArchiveService'] = _ARCHIVESERVICE
+
+# @@protoc_insertion_point(module_scope)
diff --git a/api/proto/autotest.proto b/api/proto/test_archive.proto
similarity index 70%
rename from api/proto/autotest.proto
rename to api/proto/test_archive.proto
index 4989bef..81f4a1a 100644
--- a/api/proto/autotest.proto
+++ b/api/proto/test_archive.proto
@@ -5,12 +5,12 @@
 import "common.proto";
 
 
-// Autotest archive messages and service.
+// Test archive messages and service.
 
-// Message for creating Hardware Test archives.
+// Message for creating archives.
 // Example Json:
 // {"build_target":{"name":"board"},"output_directory":"/tmp/archives"}
-message CreateHwTestArchivesRequest {
+message CreateArchiveRequest {
   // The board whose tarballs are being created.
   BuildTarget build_target = 1;
   // The directory where the completed archive(s) should be saved.
@@ -23,8 +23,8 @@
   string path = 1;
 }
 
-// Response from creating Hardware Test archives.
-message CreateHwTestArchivesResponse {
+// Response from creating archives.
+message CreateArchiveResponse {
   // The created archive files.
   repeated ArchiveFile files = 1;
 }
@@ -37,6 +37,6 @@
   };
 
   // Create the HW Test archive.
-  rpc CreateHwTestArchives(CreateHwTestArchivesRequest)
-    returns (CreateHwTestArchivesResponse);
+  rpc CreateHwTestArchives(CreateArchiveRequest)
+    returns (CreateArchiveResponse);
 }
diff --git a/api/service/autotest_archive.py b/api/service/test_archive.py
similarity index 73%
rename from api/service/autotest_archive.py
rename to api/service/test_archive.py
index b94aa79..cdcc380 100644
--- a/api/service/autotest_archive.py
+++ b/api/service/test_archive.py
@@ -3,7 +3,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-"""Autotest archive creation service.
+"""Test archive creation service.
 
 The CI system requires archives of autotest files for a number of stages.
 This service handles the creation of those archives.
@@ -11,16 +11,16 @@
 
 from __future__ import print_function
 
-from chromite.lib.api import autotest
 from chromite.lib import cros_build_lib
+from chromite.lib.api import test_archive
 
 
 def CreateHwTestArchives(input_proto, output_proto):
   """Create the HW Test archives.
 
   Args:
-    input_proto (CreateHwTestArchiveRequest): The input arguments message.
-    output_proto (CreateHwTestArchiveResponse): The empty output message.
+    input_proto (CreateArchiveRequest): The input arguments message.
+    output_proto (CreateArchiveResponse): The empty output message.
   """
   board = input_proto.build_target.name
   output_dir = input_proto.output_directory
@@ -31,8 +31,8 @@
     cros_build_lib.Die('An output directory must be specified.')
 
   try:
-    files = autotest.CreateHwTestArchives(board, output_dir)
-  except autotest.ArchiveBaseDirNotFound as e:
+    files = test_archive.CreateHwTestArchives(board, output_dir)
+  except test_archive.ArchiveBaseDirNotFound as e:
     cros_build_lib.Die(e.message)
 
   for current in files.values():
diff --git a/lib/api/autotest.py b/lib/api/test_archive.py
similarity index 96%
rename from lib/api/autotest.py
rename to lib/api/test_archive.py
index a0e7d8e..fe06bda 100644
--- a/lib/api/autotest.py
+++ b/lib/api/test_archive.py
@@ -3,7 +3,7 @@
 # Use of this source code is governed by a BSD-style license that can be
 # found in the LICENSE file.
 
-"""Autotest functionality."""
+"""Test archive functionality."""
 
 from __future__ import print_function
 
@@ -34,7 +34,7 @@
 
 
 def CreateHwTestArchives(board, output_directory):
-  """Create the Autotest Hardware Test archives.
+  """Create the Hardware Test archives.
 
   Args:
     board (str): The name of the board whose artifacts are being created.
