diff --git a/go/chromite/api/artifacts.pb.go b/go/chromite/api/artifacts.pb.go
index bd59e14..22b1209 100644
--- a/go/chromite/api/artifacts.pb.go
+++ b/go/chromite/api/artifacts.pb.go
@@ -728,68 +728,70 @@
 func init() { proto.RegisterFile("chromite/api/artifacts.proto", fileDescriptor_62a7d4c8524262a7) }
 
 var fileDescriptor_62a7d4c8524262a7 = []byte{
-	// 964 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0xdd, 0x6e, 0xe3, 0xc4,
-	0x17, 0xff, 0x3b, 0xa9, 0xba, 0xcd, 0x49, 0x93, 0xfa, 0x3f, 0x2c, 0x6d, 0x48, 0xbb, 0xab, 0x95,
-	0x05, 0x28, 0x70, 0x91, 0x48, 0xa1, 0x42, 0x68, 0xaf, 0x68, 0xf3, 0xb1, 0x8a, 0xb6, 0x24, 0xc1,
-	0x49, 0x00, 0xad, 0x04, 0xd1, 0x34, 0x9e, 0xa4, 0x23, 0xc5, 0x9e, 0x61, 0x3c, 0x2e, 0xe4, 0x39,
-	0x78, 0x1d, 0x2e, 0x10, 0x5c, 0xf0, 0x0c, 0x5c, 0x73, 0x8d, 0xc4, 0x23, 0x20, 0xcf, 0xd8, 0xa9,
-	0xed, 0xa6, 0x6a, 0xd9, 0xac, 0x56, 0xe2, 0xce, 0x33, 0xe7, 0xcc, 0xef, 0x9c, 0xf3, 0x3b, 0x1f,
-	0xe3, 0x81, 0x93, 0xd9, 0x95, 0x60, 0x2e, 0x95, 0xa4, 0x81, 0x39, 0x6d, 0x60, 0x21, 0xe9, 0x1c,
-	0xcf, 0xa4, 0x5f, 0xe7, 0x82, 0x49, 0x86, 0xf6, 0x63, 0x69, 0x1d, 0x73, 0x5a, 0x4d, 0xeb, 0x5e,
-	0x06, 0x74, 0xe9, 0x4c, 0x31, 0xa7, 0x5a, 0xb7, 0x5a, 0x4d, 0x49, 0xfd, 0x95, 0x2f, 0x18, 0x93,
-	0x91, 0xec, 0x48, 0xcb, 0x02, 0x97, 0xf9, 0x8d, 0x19, 0x73, 0x5d, 0xe6, 0x69, 0x81, 0xf5, 0x14,
-	0xf6, 0xce, 0x22, 0x9b, 0x08, 0xc1, 0x0e, 0xc7, 0xf2, 0xaa, 0x62, 0x3c, 0x33, 0x6a, 0x05, 0x5b,
-	0x7d, 0x5b, 0x7f, 0x1b, 0x70, 0x38, 0x14, 0x84, 0x63, 0x41, 0xba, 0x4c, 0x9c, 0x87, 0x26, 0x6d,
-	0xf2, 0x7d, 0x40, 0x7c, 0x89, 0x3e, 0x86, 0xdd, 0x10, 0x95, 0x49, 0x75, 0xa0, 0xd8, 0x44, 0xf5,
-	0x1b, 0x23, 0xf5, 0x96, 0x92, 0xd8, 0x91, 0x06, 0x6a, 0xc0, 0xa3, 0xc8, 0xa1, 0x4a, 0x4e, 0x29,
-	0xbf, 0x5b, 0x4f, 0x46, 0x56, 0x1f, 0x69, 0xa1, 0x1d, 0x6b, 0xa1, 0x16, 0x94, 0x62, 0x2e, 0xa6,
-	0xd4, 0x9b, 0xb3, 0x4a, 0x5e, 0x1d, 0x7b, 0x9a, 0xb4, 0x11, 0x3b, 0xee, 0x9f, 0xaf, 0x46, 0x44,
-	0x5c, 0xd3, 0x19, 0xb1, 0xf7, 0xe3, 0x43, 0x3d, 0x6f, 0xce, 0xd0, 0x29, 0x1c, 0xce, 0x99, 0x98,
-	0x11, 0x67, 0xaa, 0xb9, 0x12, 0x64, 0x49, 0xae, 0xb1, 0x37, 0x23, 0x95, 0x9d, 0x67, 0x46, 0x6d,
-	0xcf, 0x7e, 0xac, 0xa5, 0x51, 0x54, 0x91, 0xcc, 0xfa, 0xcd, 0x80, 0xa3, 0x5b, 0x21, 0xfb, 0x9c,
-	0x79, 0x3e, 0x41, 0xdf, 0xc2, 0x41, 0x16, 0x2a, 0x0c, 0xbe, 0xdc, 0x3c, 0x4d, 0xc7, 0x73, 0xc7,
-	0xf9, 0x7a, 0xda, 0x94, 0x5d, 0xbe, 0x4c, 0x9b, 0xee, 0x41, 0x39, 0xad, 0x81, 0x0e, 0xa0, 0x38,
-	0xe9, 0x8f, 0x86, 0x9d, 0x56, 0xaf, 0xdb, 0xeb, 0xb4, 0xcd, 0xff, 0x21, 0x80, 0xdd, 0x7e, 0xa7,
-	0xd3, 0xee, 0xb4, 0x4d, 0x03, 0x15, 0xe1, 0xd1, 0xa4, 0xff, 0xb2, 0x3f, 0xf8, 0xba, 0x6f, 0xe6,
-	0x50, 0x09, 0x0a, 0xc3, 0x41, 0xaf, 0x3f, 0xbe, 0xe8, 0x8c, 0x46, 0x66, 0xde, 0xfa, 0xc3, 0x80,
-	0xc3, 0xf3, 0xc0, 0x73, 0x96, 0x64, 0x4d, 0xd3, 0x7f, 0x27, 0x71, 0x4f, 0x00, 0x58, 0x20, 0x79,
-	0x20, 0xa7, 0x0e, 0x15, 0x2a, 0x59, 0x05, 0xbb, 0xa0, 0x77, 0xda, 0x54, 0x58, 0x53, 0x38, 0xba,
-	0x15, 0x5a, 0x94, 0xa0, 0x36, 0x14, 0xd6, 0x3d, 0x14, 0x85, 0xf7, 0x61, 0xd2, 0xf4, 0x84, 0x2f,
-	0x19, 0x76, 0x88, 0xb3, 0xc1, 0x85, 0x9b, 0x83, 0xd6, 0xef, 0x06, 0x94, 0xb4, 0x85, 0x98, 0xb3,
-	0xe7, 0xb0, 0xaf, 0x13, 0x2f, 0xb1, 0x58, 0x90, 0x98, 0xb9, 0xa3, 0x24, 0xb4, 0xca, 0xdc, 0x58,
-	0x89, 0xed, 0xe2, 0xe5, 0xcd, 0x22, 0x13, 0x4d, 0x2e, 0x13, 0x4d, 0x22, 0x1d, 0xf9, 0x7f, 0x93,
-	0x8e, 0x9d, 0x87, 0xa4, 0xc3, 0xea, 0x86, 0x15, 0xa5, 0x03, 0x89, 0x18, 0x3a, 0x4d, 0x33, 0x94,
-	0xaf, 0x15, 0x9b, 0x87, 0x69, 0x90, 0x98, 0x9b, 0x24, 0x23, 0x3f, 0x1b, 0xf0, 0x58, 0x03, 0x7d,
-	0xe5, 0x76, 0xe9, 0x92, 0xbc, 0x9d, 0x62, 0xaa, 0x81, 0x29, 0x89, 0x2f, 0xa7, 0x82, 0xf8, 0xc1,
-	0x52, 0xfa, 0x8a, 0xbf, 0xbc, 0xe2, 0xaf, 0x1c, 0xee, 0xdb, 0x7a, 0x3b, 0x24, 0xf1, 0x9e, 0x8a,
-	0xf9, 0xd3, 0x88, 0x4b, 0x26, 0x74, 0xc9, 0x25, 0x67, 0xdd, 0xf6, 0xe0, 0x75, 0x22, 0xc8, 0x96,
-	0x41, 0xee, 0xb5, 0xcb, 0x20, 0x9f, 0x2d, 0x83, 0xb3, 0x44, 0xe3, 0xc8, 0x15, 0xd7, 0x33, 0xaa,
-	0xdc, 0x3c, 0x49, 0x35, 0x4e, 0xb7, 0x3d, 0x88, 0xb3, 0x33, 0x5e, 0xf1, 0x44, 0xdb, 0x84, 0x2b,
-	0x6b, 0x05, 0xd5, 0x21, 0xf5, 0x3c, 0xe2, 0xbc, 0x08, 0x03, 0xeb, 0xb9, 0x78, 0x41, 0x26, 0x82,
-	0xbe, 0x8d, 0x4c, 0x59, 0xbf, 0x18, 0x70, 0xbc, 0xd1, 0x76, 0x54, 0x75, 0x53, 0x28, 0x71, 0x25,
-	0x9e, 0xd2, 0x50, 0x14, 0x57, 0xde, 0xf3, 0xcc, 0xd8, 0xbc, 0x1b, 0xe1, 0x96, 0xcc, 0xde, 0xd7,
-	0x80, 0x6a, 0xe1, 0x57, 0x3f, 0x07, 0x33, 0xab, 0x81, 0xaa, 0xb0, 0x37, 0xa7, 0x4b, 0xe2, 0x61,
-	0x97, 0x44, 0x97, 0xda, 0x7a, 0x8d, 0x4c, 0xc8, 0x07, 0x82, 0x46, 0xdd, 0x18, 0x7e, 0x36, 0x7f,
-	0x2a, 0x82, 0xb9, 0x1e, 0x0b, 0xd1, 0x50, 0x40, 0xdf, 0xc1, 0x41, 0x66, 0x96, 0xa3, 0xf7, 0xef,
-	0x19, 0xf5, 0x8a, 0xed, 0xea, 0x07, 0x0f, 0xba, 0x10, 0x42, 0xfc, 0xcc, 0x28, 0xcb, 0xe2, 0x6f,
-	0x1e, 0xe2, 0x59, 0xfc, 0xbb, 0xe6, 0x21, 0x87, 0xf7, 0xba, 0x44, 0xce, 0xae, 0x36, 0x30, 0xeb,
-	0xa3, 0xda, 0x03, 0xd8, 0xd7, 0xd6, 0x3e, 0x7a, 0x70, 0x9e, 0xd0, 0x10, 0xde, 0x89, 0x9c, 0x09,
-	0x24, 0x0b, 0xbb, 0x54, 0x8d, 0x0b, 0x74, 0xbc, 0xc9, 0xdf, 0x18, 0xfe, 0x64, 0xb3, 0x30, 0x42,
-	0xfc, 0x32, 0x1e, 0x3d, 0xba, 0x77, 0x07, 0xa3, 0x16, 0xf3, 0xe6, 0x74, 0xb1, 0x0d, 0xe4, 0x17,
-	0x60, 0xea, 0x9d, 0x8e, 0xea, 0xd0, 0x0b, 0xb6, 0xd8, 0xca, 0xc3, 0x97, 0xf1, 0x94, 0xed, 0x52,
-	0xe1, 0xfe, 0x80, 0x05, 0xd9, 0x06, 0x6c, 0x4d, 0xa0, 0xa2, 0xf6, 0x4c, 0xcc, 0xae, 0xe8, 0x35,
-	0x79, 0x33, 0xee, 0x29, 0xc4, 0x57, 0x94, 0x6f, 0x03, 0xe6, 0xc0, 0x93, 0x28, 0xbf, 0xdd, 0xf6,
-	0xe0, 0x05, 0xf1, 0x88, 0xc0, 0x92, 0x32, 0xef, 0xa6, 0x7e, 0x37, 0x56, 0xe6, 0xad, 0xb1, 0x7b,
-	0x8f, 0x95, 0x71, 0x3c, 0xaf, 0xb3, 0xa5, 0xb6, 0x15, 0x11, 0xdf, 0xc0, 0xb1, 0xde, 0x19, 0x51,
-	0x97, 0xaf, 0x9d, 0x5a, 0x7b, 0xbe, 0x05, 0xf2, 0x45, 0xdc, 0xc7, 0x63, 0xfc, 0x06, 0x2a, 0x7e,
-	0x02, 0x95, 0x08, 0x8d, 0xf8, 0x72, 0xc2, 0x1d, 0x2c, 0xc9, 0x10, 0xaf, 0xc2, 0x3f, 0x97, 0x2d,
-	0x1b, 0xa9, 0x94, 0xba, 0xc3, 0x91, 0xb5, 0x49, 0x3d, 0x7d, 0xc1, 0xdf, 0x1f, 0x77, 0xe7, 0x47,
-	0xce, 0x84, 0x6c, 0x71, 0x62, 0x93, 0xf0, 0x63, 0x0b, 0x07, 0xab, 0xff, 0xff, 0xf5, 0xaf, 0x6a,
-	0x29, 0xf1, 0x7f, 0x62, 0xe6, 0xce, 0x3f, 0x7b, 0xf5, 0xe9, 0x82, 0xad, 0x6f, 0xaa, 0x3a, 0x13,
-	0x8b, 0x46, 0xe2, 0x2d, 0x43, 0xbd, 0xb9, 0xc0, 0x0d, 0xf5, 0x94, 0x69, 0x2c, 0x58, 0x23, 0xf9,
-	0x02, 0xba, 0xdc, 0x55, 0xdb, 0x9f, 0xfc, 0x13, 0x00, 0x00, 0xff, 0xff, 0x3a, 0x26, 0x47, 0xc1,
-	0x62, 0x0d, 0x00, 0x00,
+	// 996 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xd4, 0x57, 0x4f, 0x6f, 0xe3, 0x44,
+	0x14, 0xc7, 0x49, 0xd5, 0x6d, 0x5e, 0xfe, 0xd4, 0x0c, 0x4b, 0x1b, 0xd2, 0x6e, 0xb5, 0xb2, 0x58,
+	0x14, 0x38, 0x24, 0x52, 0xa8, 0x10, 0xda, 0x13, 0x6d, 0xfe, 0xac, 0xa2, 0x2d, 0x49, 0x70, 0x12,
+	0x40, 0x8b, 0x20, 0x72, 0x9c, 0x49, 0x3a, 0x52, 0xec, 0x19, 0xc6, 0x93, 0x42, 0xbe, 0x1b, 0x07,
+	0x04, 0x07, 0xbe, 0x00, 0x17, 0xce, 0x9c, 0x91, 0xf8, 0x08, 0xc8, 0xe3, 0x71, 0x6a, 0xbb, 0xa9,
+	0x5a, 0xd6, 0xab, 0x4a, 0x7b, 0xb3, 0xe7, 0xcd, 0xfc, 0xde, 0x7b, 0xbf, 0xf7, 0x7b, 0x6f, 0x6c,
+	0x38, 0xb6, 0x2f, 0x39, 0x75, 0x88, 0xc0, 0x75, 0x8b, 0x91, 0xba, 0xc5, 0x05, 0x99, 0x5b, 0xb6,
+	0xf0, 0x6a, 0x8c, 0x53, 0x41, 0x51, 0x21, 0xb4, 0xd6, 0x2c, 0x46, 0x2a, 0xf1, 0xbd, 0xd3, 0x15,
+	0x59, 0xce, 0x26, 0x16, 0x23, 0xc1, 0xde, 0x4a, 0x25, 0x66, 0xf5, 0xd6, 0x1e, 0xa7, 0x54, 0x28,
+	0xdb, 0x61, 0x60, 0x5b, 0x39, 0xd4, 0xab, 0xdb, 0xd4, 0x71, 0xa8, 0x1b, 0x18, 0x8c, 0x13, 0xd8,
+	0x3b, 0x53, 0x3e, 0x11, 0x82, 0x1d, 0x66, 0x89, 0xcb, 0xb2, 0xf6, 0x54, 0xab, 0xe6, 0x4c, 0xf9,
+	0x6c, 0xfc, 0xab, 0xc1, 0xc1, 0x80, 0x63, 0x66, 0x71, 0xdc, 0xa1, 0xfc, 0xdc, 0x77, 0x69, 0xe2,
+	0x1f, 0x57, 0xd8, 0x13, 0xe8, 0x13, 0xd8, 0xf5, 0x51, 0xa9, 0x90, 0x07, 0xf2, 0x0d, 0x54, 0xbb,
+	0x76, 0x52, 0x6b, 0x4a, 0x8b, 0xa9, 0x76, 0xa0, 0x3a, 0x3c, 0x52, 0x01, 0x95, 0x33, 0x72, 0xf3,
+	0xfb, 0xb5, 0x68, 0x66, 0xb5, 0x61, 0x60, 0x34, 0xc3, 0x5d, 0xa8, 0x09, 0xc5, 0x90, 0x8b, 0x09,
+	0x71, 0xe7, 0xb4, 0x9c, 0x95, 0xc7, 0x4e, 0xa2, 0x3e, 0xc2, 0xc0, 0xbd, 0xf3, 0xf5, 0x10, 0xf3,
+	0x2b, 0x62, 0x63, 0xb3, 0x10, 0x1e, 0xea, 0xba, 0x73, 0x8a, 0x4e, 0xe1, 0x60, 0x4e, 0xb9, 0x8d,
+	0x67, 0x93, 0x80, 0x2b, 0x8e, 0x97, 0xf8, 0xca, 0x72, 0x6d, 0x5c, 0xde, 0x79, 0xaa, 0x55, 0xf7,
+	0xcc, 0xc7, 0x81, 0x55, 0x65, 0xa5, 0x6c, 0xc6, 0xef, 0x1a, 0x1c, 0xde, 0x48, 0xd9, 0x63, 0xd4,
+	0xf5, 0x30, 0xfa, 0x1e, 0xf6, 0x93, 0x50, 0x7e, 0xf2, 0xa5, 0xc6, 0x69, 0x3c, 0x9f, 0x5b, 0xce,
+	0xd7, 0xe2, 0xae, 0xcc, 0xd2, 0x34, 0xee, 0xba, 0x0b, 0xa5, 0xf8, 0x0e, 0xb4, 0x0f, 0xf9, 0x71,
+	0x6f, 0x38, 0x68, 0x37, 0xbb, 0x9d, 0x6e, 0xbb, 0xa5, 0xbf, 0x83, 0x00, 0x76, 0x7b, 0xed, 0x76,
+	0xab, 0xdd, 0xd2, 0x35, 0x94, 0x87, 0x47, 0xe3, 0xde, 0xcb, 0x5e, 0xff, 0x9b, 0x9e, 0x9e, 0x41,
+	0x45, 0xc8, 0x0d, 0xfa, 0xdd, 0xde, 0xe8, 0xa2, 0x3d, 0x1c, 0xea, 0x59, 0xe3, 0x2f, 0x0d, 0x0e,
+	0xce, 0x57, 0xee, 0x6c, 0x89, 0x37, 0x34, 0xbd, 0x3d, 0x85, 0x7b, 0x02, 0x40, 0x57, 0x82, 0xad,
+	0xc4, 0x64, 0x46, 0xb8, 0x2c, 0x56, 0xce, 0xcc, 0x05, 0x2b, 0x2d, 0xc2, 0x8d, 0x09, 0x1c, 0xde,
+	0x48, 0x4d, 0x15, 0xa8, 0x05, 0xb9, 0x4d, 0x0f, 0xa9, 0xf4, 0x3e, 0x8a, 0xba, 0x1e, 0xb3, 0x25,
+	0xb5, 0x66, 0x78, 0xb6, 0x25, 0x84, 0xeb, 0x83, 0xc6, 0x1f, 0x1a, 0x14, 0x03, 0x0f, 0x21, 0x67,
+	0xcf, 0xa1, 0x10, 0x14, 0x5e, 0x58, 0x7c, 0x81, 0x43, 0xe6, 0x0e, 0xa3, 0xd0, 0xb2, 0x72, 0x23,
+	0x69, 0x36, 0xf3, 0xd3, 0xeb, 0x97, 0x44, 0x36, 0x99, 0x44, 0x36, 0x91, 0x72, 0x64, 0xff, 0x4f,
+	0x39, 0x76, 0xee, 0x53, 0x0e, 0xa3, 0xe3, 0x2b, 0x2a, 0x48, 0x44, 0x31, 0x74, 0x1a, 0x67, 0x28,
+	0x5b, 0xcd, 0x37, 0x0e, 0xe2, 0x20, 0x21, 0x37, 0x51, 0x46, 0x7e, 0xd1, 0xe0, 0x71, 0x00, 0xf4,
+	0xb5, 0xd3, 0x21, 0x4b, 0xfc, 0x30, 0x62, 0xaa, 0x82, 0x2e, 0xb0, 0x27, 0x26, 0x1c, 0x7b, 0xab,
+	0xa5, 0xf0, 0x24, 0x7f, 0x59, 0xc9, 0x5f, 0xc9, 0x5f, 0x37, 0x83, 0x65, 0x9f, 0xc4, 0x3b, 0x14,
+	0xf3, 0xb7, 0x16, 0x4a, 0xc6, 0x0f, 0xc9, 0xc1, 0x67, 0x9d, 0x56, 0xff, 0x75, 0x32, 0x48, 0xca,
+	0x20, 0xf3, 0xda, 0x32, 0xc8, 0x26, 0x65, 0x70, 0x16, 0x69, 0x1c, 0xb1, 0x66, 0xc1, 0x8c, 0x2a,
+	0x35, 0x8e, 0x63, 0x8d, 0xd3, 0x69, 0xf5, 0xc3, 0xea, 0x8c, 0xd6, 0x2c, 0xd2, 0x36, 0xfe, 0x9b,
+	0xb1, 0x86, 0xca, 0x80, 0xb8, 0x2e, 0x9e, 0xbd, 0xf0, 0x13, 0xeb, 0x3a, 0xd6, 0x02, 0x8f, 0x39,
+	0x79, 0x88, 0x4a, 0x19, 0xbf, 0x6a, 0x70, 0xb4, 0xd5, 0xb7, 0x52, 0xdd, 0x04, 0x8a, 0x4c, 0x9a,
+	0x27, 0xc4, 0x37, 0x85, 0xca, 0x7b, 0x9e, 0x18, 0x9b, 0xb7, 0x23, 0xdc, 0xb0, 0x99, 0x85, 0x00,
+	0x50, 0xbe, 0x78, 0x95, 0x2f, 0x40, 0x4f, 0xee, 0x40, 0x15, 0xd8, 0x9b, 0x93, 0x25, 0x76, 0x2d,
+	0x07, 0xab, 0x4b, 0x6d, 0xf3, 0x8e, 0x74, 0xc8, 0xae, 0x38, 0x51, 0xdd, 0xe8, 0x3f, 0x36, 0xfe,
+	0x2c, 0x80, 0xbe, 0x19, 0x0b, 0x6a, 0x28, 0xa0, 0x1f, 0x60, 0x3f, 0x31, 0xcb, 0xd1, 0x87, 0x77,
+	0x8c, 0x7a, 0xc9, 0x76, 0xe5, 0xd9, 0xbd, 0x2e, 0x04, 0x1f, 0x3f, 0x31, 0xca, 0x92, 0xf8, 0xdb,
+	0x87, 0x78, 0x12, 0xff, 0xb6, 0x79, 0xc8, 0xe0, 0x83, 0x0e, 0x16, 0xf6, 0xe5, 0x16, 0x66, 0x3d,
+	0x54, 0xbd, 0x07, 0xfb, 0x81, 0xb7, 0x8f, 0xef, 0x5d, 0x27, 0x34, 0x80, 0xf7, 0x54, 0x30, 0x2b,
+	0x41, 0xfd, 0x2e, 0x95, 0xe3, 0x02, 0x1d, 0x6d, 0x8b, 0x37, 0x84, 0x3f, 0xde, 0x6e, 0x54, 0x88,
+	0x5f, 0x85, 0xa3, 0x27, 0xe8, 0xdd, 0xfe, 0xb0, 0x49, 0xdd, 0x39, 0x59, 0xa4, 0x81, 0xfc, 0x12,
+	0xf4, 0x60, 0xa5, 0x2d, 0x3b, 0xf4, 0x82, 0x2e, 0x52, 0x45, 0xf8, 0x32, 0x9c, 0xb2, 0x1d, 0xc2,
+	0x9d, 0x9f, 0x2c, 0x8e, 0xd3, 0x80, 0x6d, 0x08, 0x94, 0xd4, 0x9e, 0x71, 0xfb, 0x92, 0x5c, 0xe1,
+	0x37, 0x13, 0x9e, 0x44, 0x7c, 0x45, 0x58, 0x1a, 0xb0, 0x19, 0x3c, 0x51, 0xf5, 0xed, 0xb4, 0xfa,
+	0x2f, 0xb0, 0x8b, 0xb9, 0x25, 0x08, 0x75, 0xaf, 0xf5, 0xbb, 0x55, 0x99, 0x37, 0xc6, 0xee, 0x1d,
+	0x5e, 0x46, 0xe1, 0xbc, 0x4e, 0x4a, 0x2d, 0x15, 0x11, 0xdf, 0xc2, 0x51, 0xb0, 0x32, 0x24, 0x0e,
+	0xdb, 0x04, 0xb5, 0x89, 0x3c, 0x05, 0xf2, 0x45, 0xd8, 0xc7, 0x23, 0xeb, 0x0d, 0x28, 0x7e, 0x0c,
+	0x65, 0x85, 0x86, 0x3d, 0x31, 0x66, 0x33, 0x4b, 0xe0, 0x81, 0xb5, 0xf6, 0xbf, 0x5c, 0x52, 0x36,
+	0x52, 0x31, 0x76, 0x87, 0x23, 0x63, 0xdb, 0xf6, 0xf8, 0x05, 0x7f, 0x77, 0xde, 0xed, 0x9f, 0x19,
+	0xe5, 0xa2, 0xc9, 0xb0, 0x89, 0xfd, 0x87, 0x34, 0x01, 0x4e, 0xe1, 0x99, 0x52, 0x14, 0x36, 0xb1,
+	0x43, 0x85, 0xcc, 0xbf, 0xc5, 0xc9, 0x15, 0xe6, 0x43, 0x86, 0x6d, 0x32, 0x27, 0xb6, 0x14, 0x5b,
+	0x1a, 0x1f, 0xdf, 0xc1, 0xc9, 0x6d, 0x3e, 0x52, 0x0b, 0xac, 0xf2, 0xee, 0x6f, 0xff, 0x54, 0x8a,
+	0x91, 0x0f, 0x2c, 0x3d, 0x73, 0xfe, 0xf9, 0xab, 0xcf, 0x16, 0x74, 0x73, 0xd5, 0xd6, 0x28, 0x5f,
+	0xd4, 0x23, 0x3f, 0x63, 0xc4, 0x9d, 0x73, 0xab, 0x2e, 0xff, 0xc5, 0xea, 0x0b, 0x5a, 0x8f, 0xfe,
+	0xc2, 0x4d, 0x77, 0xe5, 0xf2, 0xa7, 0xff, 0x05, 0x00, 0x00, 0xff, 0xff, 0xa7, 0x8c, 0x99, 0x9f,
+	0x23, 0x0e, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
@@ -851,6 +853,30 @@
 	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate a CPE report to a file.
 	ExportCpeReport(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// Generate all Remote Test Driver metadata.
+	//
+	// Response consists of one or more metadata files. Each file must contain a
+	// single binary encoded chromiumos.config.api.test.metadata.v1.Specification
+	// protobuf payload.
+	// Schema defined at
+	// https://chromium.googlesource.com/chromiumos/config/+/refs/heads/master/proto/chromiumos/config/api/test/metadata/v1/metadata.proto
+	//
+	// These artifacts partially replace chromiumos.ArtifactsByService.Test
+	// artifacts. See also, GenerateRemoteTestDriverImages()
+	//
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
+	GenerateRemoteTestDriverSpecification(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
+	// Generate all Remote Test Driver container images.
+	//
+	// Response consists of one or more Docker container images.
+	// The images are identified by their Docker image digest. The filenames of
+	// the created artifacts are ignored.
+	//
+	// These artifacts partially replace chromiumos.ArtifactsByService.Test
+	// artifacts. See also, GenerateRemoteTestDriverSpecification()
+	//
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
+	GenerateRemoteTestDriverImages(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error)
 }
 
 type artifactsServiceClient struct {
@@ -1005,6 +1031,24 @@
 	return out, nil
 }
 
+func (c *artifactsServiceClient) GenerateRemoteTestDriverSpecification(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error) {
+	out := new(BundleResponse)
+	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/GenerateRemoteTestDriverSpecification", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
+func (c *artifactsServiceClient) GenerateRemoteTestDriverImages(ctx context.Context, in *BundleRequest, opts ...grpc.CallOption) (*BundleResponse, error) {
+	out := new(BundleResponse)
+	err := c.cc.Invoke(ctx, "/chromite.api.ArtifactsService/GenerateRemoteTestDriverImages", in, out, opts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // ArtifactsServiceServer is the server API for ArtifactsService service.
 type ArtifactsServiceServer interface {
 	// Prepare to build artifacts.
@@ -1054,6 +1098,30 @@
 	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
 	// Generate a CPE report to a file.
 	ExportCpeReport(context.Context, *BundleRequest) (*BundleResponse, error)
+	// Generate all Remote Test Driver metadata.
+	//
+	// Response consists of one or more metadata files. Each file must contain a
+	// single binary encoded chromiumos.config.api.test.metadata.v1.Specification
+	// protobuf payload.
+	// Schema defined at
+	// https://chromium.googlesource.com/chromiumos/config/+/refs/heads/master/proto/chromiumos/config/api/test/metadata/v1/metadata.proto
+	//
+	// These artifacts partially replace chromiumos.ArtifactsByService.Test
+	// artifacts. See also, GenerateRemoteTestDriverImages()
+	//
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
+	GenerateRemoteTestDriverSpecification(context.Context, *BundleRequest) (*BundleResponse, error)
+	// Generate all Remote Test Driver container images.
+	//
+	// Response consists of one or more Docker container images.
+	// The images are identified by their Docker image digest. The filenames of
+	// the created artifacts are ignored.
+	//
+	// These artifacts partially replace chromiumos.ArtifactsByService.Test
+	// artifacts. See also, GenerateRemoteTestDriverSpecification()
+	//
+	// TODO(crbug/1034529): DEPRECATED use BundleArtifacts
+	GenerateRemoteTestDriverImages(context.Context, *BundleRequest) (*BundleResponse, error)
 }
 
 // UnimplementedArtifactsServiceServer can be embedded to have forward compatible implementations.
@@ -1108,6 +1176,12 @@
 func (*UnimplementedArtifactsServiceServer) ExportCpeReport(ctx context.Context, req *BundleRequest) (*BundleResponse, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method ExportCpeReport not implemented")
 }
+func (*UnimplementedArtifactsServiceServer) GenerateRemoteTestDriverSpecification(ctx context.Context, req *BundleRequest) (*BundleResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GenerateRemoteTestDriverSpecification not implemented")
+}
+func (*UnimplementedArtifactsServiceServer) GenerateRemoteTestDriverImages(ctx context.Context, req *BundleRequest) (*BundleResponse, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GenerateRemoteTestDriverImages not implemented")
+}
 
 func RegisterArtifactsServiceServer(s *grpc.Server, srv ArtifactsServiceServer) {
 	s.RegisterService(&_ArtifactsService_serviceDesc, srv)
@@ -1401,6 +1475,42 @@
 	return interceptor(ctx, in, info, handler)
 }
 
+func _ArtifactsService_GenerateRemoteTestDriverSpecification_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BundleRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ArtifactsServiceServer).GenerateRemoteTestDriverSpecification(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/chromite.api.ArtifactsService/GenerateRemoteTestDriverSpecification",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ArtifactsServiceServer).GenerateRemoteTestDriverSpecification(ctx, req.(*BundleRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
+func _ArtifactsService_GenerateRemoteTestDriverImages_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(BundleRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ArtifactsServiceServer).GenerateRemoteTestDriverImages(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: "/chromite.api.ArtifactsService/GenerateRemoteTestDriverImages",
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ArtifactsServiceServer).GenerateRemoteTestDriverImages(ctx, req.(*BundleRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 var _ArtifactsService_serviceDesc = grpc.ServiceDesc{
 	ServiceName: "chromite.api.ArtifactsService",
 	HandlerType: (*ArtifactsServiceServer)(nil),
@@ -1469,6 +1579,14 @@
 			MethodName: "ExportCpeReport",
 			Handler:    _ArtifactsService_ExportCpeReport_Handler,
 		},
+		{
+			MethodName: "GenerateRemoteTestDriverSpecification",
+			Handler:    _ArtifactsService_GenerateRemoteTestDriverSpecification_Handler,
+		},
+		{
+			MethodName: "GenerateRemoteTestDriverImages",
+			Handler:    _ArtifactsService_GenerateRemoteTestDriverImages_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "chromite/api/artifacts.proto",
diff --git a/src/chromite/api/artifacts.proto b/src/chromite/api/artifacts.proto
index 350dbb8..9fde6c3 100644
--- a/src/chromite/api/artifacts.proto
+++ b/src/chromite/api/artifacts.proto
@@ -207,4 +207,31 @@
   // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
   // Generate a CPE report to a file.
   rpc ExportCpeReport(BundleRequest) returns (BundleResponse);
+
+  // Generate all Remote Test Driver metadata.
+  //
+  // Response consists of one or more metadata files. Each file must contain a
+  // single binary encoded chromiumos.config.api.test.metadata.v1.Specification
+  // protobuf payload.
+  // Schema defined at
+  // https://chromium.googlesource.com/chromiumos/config/+/refs/heads/master/proto/chromiumos/config/api/test/metadata/v1/metadata.proto
+  //
+  // These artifacts partially replace chromiumos.ArtifactsByService.Test
+  // artifacts. See also, GenerateRemoteTestDriverImages()
+  //
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
+  rpc GenerateRemoteTestDriverSpecification(BundleRequest)
+    returns (BundleResponse);
+
+  // Generate all Remote Test Driver container images.
+  //
+  // Response consists of one or more Docker container images.
+  // The images are identified by their Docker image digest. The filenames of
+  // the created artifacts are ignored.
+  //
+  // These artifacts partially replace chromiumos.ArtifactsByService.Test
+  // artifacts. See also, GenerateRemoteTestDriverSpecification()
+  //
+  // TODO(crbug/1034529): DEPRECATED use BundleArtifacts
+  rpc GenerateRemoteTestDriverImages(BundleRequest) returns (BundleResponse);
 }
