diff --git a/go/test_platform/config/config.pb.go b/go/test_platform/config/config.pb.go
index 0c705a6..4ce6668 100644
--- a/go/test_platform/config/config.pb.go
+++ b/go/test_platform/config/config.pb.go
@@ -403,47 +403,6 @@
 	return ""
 }
 
-// TestRunner defines configuration parameters related to the test_runner
-// recipe.
-type Config_TestRunner struct {
-	Buildbucket          *Config_Buildbucket `protobuf:"bytes,1,opt,name=buildbucket,proto3" json:"buildbucket,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}            `json:"-"`
-	XXX_unrecognized     []byte              `json:"-"`
-	XXX_sizecache        int32               `json:"-"`
-}
-
-func (m *Config_TestRunner) Reset()         { *m = Config_TestRunner{} }
-func (m *Config_TestRunner) String() string { return proto.CompactTextString(m) }
-func (*Config_TestRunner) ProtoMessage()    {}
-func (*Config_TestRunner) Descriptor() ([]byte, []int) {
-	return fileDescriptor_2c858eded7d7f900, []int{0, 5}
-}
-
-func (m *Config_TestRunner) XXX_Unmarshal(b []byte) error {
-	return xxx_messageInfo_Config_TestRunner.Unmarshal(m, b)
-}
-func (m *Config_TestRunner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
-	return xxx_messageInfo_Config_TestRunner.Marshal(b, m, deterministic)
-}
-func (m *Config_TestRunner) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_Config_TestRunner.Merge(m, src)
-}
-func (m *Config_TestRunner) XXX_Size() int {
-	return xxx_messageInfo_Config_TestRunner.Size(m)
-}
-func (m *Config_TestRunner) XXX_DiscardUnknown() {
-	xxx_messageInfo_Config_TestRunner.DiscardUnknown(m)
-}
-
-var xxx_messageInfo_Config_TestRunner proto.InternalMessageInfo
-
-func (m *Config_TestRunner) GetBuildbucket() *Config_Buildbucket {
-	if m != nil {
-		return m.Buildbucket
-	}
-	return nil
-}
-
 // PubSub defines the configuration parameters for PubSub topic.
 type Config_PubSub struct {
 	Project              string   `protobuf:"bytes,1,opt,name=project,proto3" json:"project,omitempty"`
@@ -457,7 +416,7 @@
 func (m *Config_PubSub) String() string { return proto.CompactTextString(m) }
 func (*Config_PubSub) ProtoMessage()    {}
 func (*Config_PubSub) Descriptor() ([]byte, []int) {
-	return fileDescriptor_2c858eded7d7f900, []int{0, 6}
+	return fileDescriptor_2c858eded7d7f900, []int{0, 5}
 }
 
 func (m *Config_PubSub) XXX_Unmarshal(b []byte) error {
@@ -492,6 +451,56 @@
 	return ""
 }
 
+// TestRunner defines configuration parameters related to the test_runner
+// recipe.
+type Config_TestRunner struct {
+	Buildbucket *Config_Buildbucket `protobuf:"bytes,1,opt,name=buildbucket,proto3" json:"buildbucket,omitempty"`
+	// The PubSub topic to which Buildbucket sends the update of test runner build.
+	Pubsub               *Config_PubSub `protobuf:"bytes,2,opt,name=pubsub,proto3" json:"pubsub,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}       `json:"-"`
+	XXX_unrecognized     []byte         `json:"-"`
+	XXX_sizecache        int32          `json:"-"`
+}
+
+func (m *Config_TestRunner) Reset()         { *m = Config_TestRunner{} }
+func (m *Config_TestRunner) String() string { return proto.CompactTextString(m) }
+func (*Config_TestRunner) ProtoMessage()    {}
+func (*Config_TestRunner) Descriptor() ([]byte, []int) {
+	return fileDescriptor_2c858eded7d7f900, []int{0, 6}
+}
+
+func (m *Config_TestRunner) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_Config_TestRunner.Unmarshal(m, b)
+}
+func (m *Config_TestRunner) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_Config_TestRunner.Marshal(b, m, deterministic)
+}
+func (m *Config_TestRunner) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_Config_TestRunner.Merge(m, src)
+}
+func (m *Config_TestRunner) XXX_Size() int {
+	return xxx_messageInfo_Config_TestRunner.Size(m)
+}
+func (m *Config_TestRunner) XXX_DiscardUnknown() {
+	xxx_messageInfo_Config_TestRunner.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_Config_TestRunner proto.InternalMessageInfo
+
+func (m *Config_TestRunner) GetBuildbucket() *Config_Buildbucket {
+	if m != nil {
+		return m.Buildbucket
+	}
+	return nil
+}
+
+func (m *Config_TestRunner) GetPubsub() *Config_PubSub {
+	if m != nil {
+		return m.Pubsub
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterType((*Config)(nil), "test_platform.config.Config")
 	proto.RegisterType((*Config_Swarming)(nil), "test_platform.config.Config.Swarming")
@@ -500,51 +509,51 @@
 	proto.RegisterType((*Config_Versioning)(nil), "test_platform.config.Config.Versioning")
 	proto.RegisterType((*Config_Versioning_CrosTestPlatformBinary)(nil), "test_platform.config.Config.Versioning.CrosTestPlatformBinary")
 	proto.RegisterType((*Config_Buildbucket)(nil), "test_platform.config.Config.Buildbucket")
-	proto.RegisterType((*Config_TestRunner)(nil), "test_platform.config.Config.TestRunner")
 	proto.RegisterType((*Config_PubSub)(nil), "test_platform.config.Config.PubSub")
+	proto.RegisterType((*Config_TestRunner)(nil), "test_platform.config.Config.TestRunner")
 }
 
 func init() { proto.RegisterFile("test_platform/config/config.proto", fileDescriptor_2c858eded7d7f900) }
 
 var fileDescriptor_2c858eded7d7f900 = []byte{
-	// 611 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x8c, 0x54, 0x61, 0x6b, 0xd4, 0x4c,
-	0x10, 0xe6, 0xda, 0x6b, 0xee, 0x32, 0x77, 0x6f, 0xdf, 0xb2, 0xd6, 0x12, 0x03, 0x42, 0xab, 0x15,
-	0x2b, 0x42, 0x22, 0xfa, 0x41, 0x41, 0x28, 0xd2, 0x0a, 0xd6, 0x53, 0xcb, 0xb1, 0x15, 0x15, 0xbf,
-	0x2c, 0x49, 0x9a, 0xe6, 0xb6, 0x97, 0x64, 0xc2, 0xee, 0xa6, 0xe5, 0xfe, 0x9d, 0xbf, 0xc0, 0xdf,
-	0x24, 0xd9, 0x6c, 0xee, 0x72, 0x7a, 0x1c, 0xfd, 0x94, 0x3c, 0xcf, 0xce, 0xf3, 0xec, 0xec, 0xcc,
-	0xec, 0xc2, 0x81, 0x8a, 0xa5, 0x62, 0x45, 0x1a, 0xa8, 0x2b, 0x14, 0x99, 0x1f, 0x61, 0x7e, 0xc5,
-	0x13, 0xf3, 0xf1, 0x0a, 0x81, 0x0a, 0xc9, 0xee, 0x52, 0x88, 0x57, 0xaf, 0xb9, 0x2f, 0x96, 0x85,
-	0x19, 0x4f, 0x44, 0xa0, 0x38, 0xe6, 0xbe, 0xe6, 0x45, 0x99, 0xe7, 0xb1, 0x58, 0xf2, 0x79, 0xf4,
-	0xdb, 0x06, 0xeb, 0x54, 0x13, 0xe4, 0x1c, 0xfe, 0x97, 0xd3, 0x59, 0x1a, 0x84, 0x4c, 0xde, 0x06,
-	0x22, 0xe3, 0x79, 0xe2, 0x74, 0xf6, 0x3b, 0x47, 0x83, 0x97, 0x4f, 0xbc, 0x55, 0x9b, 0x79, 0xb5,
-	0xcc, 0xbb, 0x30, 0xc1, 0x74, 0xbb, 0x56, 0x37, 0x98, 0x7c, 0x02, 0xc3, 0x30, 0x2e, 0x31, 0x0d,
-	0x54, 0xec, 0x6c, 0x6a, 0xbb, 0xc3, 0xb5, 0x76, 0x1f, 0xeb, 0x58, 0xfa, 0x5f, 0xad, 0x35, 0x90,
-	0x9c, 0x83, 0x21, 0xd8, 0x2d, 0x8a, 0x69, 0x2c, 0x9c, 0xae, 0xf6, 0x7a, 0xb6, 0x3e, 0x35, 0xad,
-	0xf8, 0xae, 0x05, 0x74, 0x28, 0x5b, 0x88, 0x7c, 0x00, 0xb8, 0x89, 0x85, 0xe4, 0x98, 0x57, 0xe7,
-	0xec, 0x69, 0xb3, 0xa7, 0x6b, 0xcd, 0xbe, 0xcd, 0xc3, 0x69, 0x4b, 0x4a, 0xce, 0x60, 0xd0, 0x2a,
-	0xae, 0xd3, 0xbf, 0x83, 0xd3, 0xd7, 0x58, 0x2a, 0xaa, 0xc3, 0x29, 0xa8, 0xf9, 0x3f, 0x61, 0x70,
-	0xbf, 0xe5, 0xc4, 0xe6, 0xcd, 0x73, 0x6c, 0xed, 0xf9, 0xfc, 0x2f, 0xcf, 0xf9, 0xba, 0xd7, 0x52,
-	0x99, 0x2d, 0xe8, 0xbd, 0x85, 0xef, 0x97, 0x26, 0x8e, 0xbc, 0x05, 0xab, 0x28, 0x43, 0x59, 0x86,
-	0x0e, 0x68, 0xc7, 0xc7, 0x6b, 0xb3, 0x1c, 0x97, 0xe1, 0x45, 0x19, 0x52, 0x23, 0x71, 0xcf, 0xa0,
-	0x3f, 0xef, 0xec, 0x1e, 0x58, 0x32, 0x16, 0x37, 0xb1, 0xd0, 0x03, 0x62, 0x53, 0x83, 0xc8, 0x21,
-	0x6c, 0x07, 0xa5, 0x9a, 0xb0, 0x6b, 0x89, 0x39, 0x2b, 0x02, 0x35, 0x71, 0x36, 0xf4, 0xfa, 0xb0,
-	0x62, 0x47, 0x12, 0xf3, 0x71, 0xa0, 0x26, 0xae, 0x0f, 0xbd, 0xa6, 0xab, 0xff, 0x0a, 0x3a, 0x2b,
-	0x04, 0x17, 0x30, 0x6c, 0x77, 0x92, 0x1c, 0xc0, 0x30, 0x2d, 0x23, 0xce, 0x0a, 0x81, 0xd7, 0x71,
-	0xa4, 0x8c, 0x66, 0x50, 0x71, 0xe3, 0x9a, 0x22, 0xfb, 0x30, 0x4c, 0x31, 0x61, 0x97, 0x98, 0xb0,
-	0x09, 0x4a, 0x65, 0xf2, 0x80, 0x14, 0x93, 0xf7, 0x98, 0x9c, 0xa1, 0x54, 0xee, 0xaf, 0x0e, 0xc0,
-	0xa2, 0xa5, 0x64, 0x06, 0x0f, 0x22, 0x81, 0x92, 0x2d, 0x55, 0x84, 0x85, 0x3c, 0x0f, 0xc4, 0xcc,
-	0x5c, 0x83, 0xe3, 0x3b, 0x8e, 0x87, 0x77, 0x2a, 0x50, 0x56, 0x3d, 0x1e, 0x9b, 0xc8, 0x13, 0xed,
-	0x42, 0xf7, 0xa2, 0x95, 0xbc, 0xfb, 0x1a, 0xf6, 0x56, 0x2b, 0xc8, 0x43, 0x80, 0x88, 0x17, 0x97,
-	0x2c, 0x0d, 0xc2, 0x38, 0x35, 0xc7, 0xb4, 0x2b, 0xe6, 0x73, 0x45, 0xb8, 0x19, 0x0c, 0x4e, 0x4a,
-	0x9e, 0x5e, 0x86, 0x65, 0x34, 0x8d, 0x15, 0x21, 0xd0, 0xd5, 0x67, 0xad, 0xe3, 0xf4, 0x3f, 0x71,
-	0xa0, 0xd7, 0x54, 0xa9, 0x2e, 0x41, 0x03, 0xab, 0x1e, 0xd6, 0x3a, 0x7d, 0x2b, 0x6d, 0x6a, 0x50,
-	0xa5, 0x08, 0x2b, 0x53, 0x73, 0xc5, 0x6c, 0xda, 0x40, 0xf7, 0x07, 0xc0, 0x62, 0x72, 0xc9, 0x08,
-	0x06, 0xe1, 0x62, 0x73, 0x53, 0xa2, 0xa3, 0xb5, 0x25, 0x6a, 0x25, 0x4b, 0xdb, 0x62, 0xf7, 0x0d,
-	0x58, 0xf5, 0xb4, 0xb5, 0xf3, 0xed, 0x2c, 0xe7, 0xbb, 0x0b, 0x5b, 0x0a, 0x0b, 0x1e, 0x99, 0x73,
-	0xd4, 0x60, 0xd4, 0xed, 0x6f, 0xec, 0x6c, 0x8e, 0xba, 0xfd, 0xad, 0x1d, 0x6b, 0xd4, 0xed, 0x5b,
-	0x3b, 0xbd, 0x93, 0x77, 0x3f, 0x8f, 0x13, 0xf4, 0xa2, 0x89, 0xc0, 0x8c, 0x97, 0x99, 0x87, 0x22,
-	0xf1, 0x1b, 0x80, 0xd2, 0xe7, 0xf9, 0x95, 0x08, 0x7c, 0xfd, 0xf4, 0xf9, 0x09, 0xfa, 0xab, 0xde,
-	0xd9, 0xd0, 0xd2, 0xcb, 0xaf, 0xfe, 0x04, 0x00, 0x00, 0xff, 0xff, 0x1a, 0x09, 0xac, 0xb4, 0x86,
-	0x05, 0x00, 0x00,
+	// 617 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x54, 0x5d, 0x6b, 0xd4, 0x40,
+	0x14, 0x25, 0xed, 0x36, 0xbb, 0x7b, 0x77, 0xad, 0x65, 0xac, 0x25, 0x06, 0x84, 0x56, 0x2b, 0x56,
+	0x84, 0x44, 0xf4, 0x41, 0x41, 0x28, 0xd2, 0x0a, 0xd6, 0x55, 0xcb, 0x32, 0x15, 0x05, 0x5f, 0x86,
+	0x24, 0x4d, 0xb3, 0xd3, 0x26, 0xb9, 0x61, 0x66, 0xd2, 0xb2, 0xff, 0xc1, 0x57, 0xff, 0x8f, 0x3f,
+	0x4d, 0x32, 0x99, 0xec, 0x66, 0x75, 0x59, 0xea, 0x53, 0x72, 0xce, 0xdc, 0x73, 0x66, 0xee, 0xc7,
+	0x0c, 0xec, 0xa9, 0x58, 0x2a, 0x56, 0xa4, 0x81, 0xba, 0x40, 0x91, 0xf9, 0x11, 0xe6, 0x17, 0x3c,
+	0x31, 0x1f, 0xaf, 0x10, 0xa8, 0x90, 0x6c, 0x2f, 0x84, 0x78, 0xf5, 0x9a, 0xfb, 0x62, 0x51, 0x98,
+	0xf1, 0x44, 0x04, 0x8a, 0x63, 0xee, 0x6b, 0x5e, 0x94, 0x79, 0x1e, 0x8b, 0x05, 0x9f, 0x47, 0x3f,
+	0x01, 0xec, 0x63, 0x4d, 0x90, 0x53, 0xb8, 0x2b, 0xaf, 0xa6, 0x69, 0x10, 0x32, 0x79, 0x13, 0x88,
+	0x8c, 0xe7, 0x89, 0x63, 0xed, 0x5a, 0x07, 0x83, 0x97, 0x4f, 0xbc, 0x65, 0x9b, 0x79, 0xb5, 0xcc,
+	0x3b, 0x33, 0xc1, 0x74, 0xb3, 0x56, 0x37, 0x98, 0x7c, 0x02, 0xc3, 0x30, 0x2e, 0x31, 0x0d, 0x54,
+	0xec, 0xac, 0x6b, 0xbb, 0xfd, 0x95, 0x76, 0x1f, 0xeb, 0x58, 0x7a, 0xa7, 0xd6, 0x1a, 0x48, 0x4e,
+	0xc1, 0x10, 0xec, 0x06, 0xc5, 0x55, 0x2c, 0x9c, 0x8e, 0xf6, 0x7a, 0xb6, 0xfa, 0x68, 0x5a, 0xf1,
+	0x5d, 0x0b, 0xe8, 0x50, 0xb6, 0x10, 0xf9, 0x00, 0x70, 0x1d, 0x0b, 0xc9, 0x31, 0xaf, 0xf2, 0xec,
+	0x6a, 0xb3, 0xa7, 0x2b, 0xcd, 0xbe, 0xcd, 0xc2, 0x69, 0x4b, 0x4a, 0x4e, 0x60, 0xd0, 0x2a, 0xae,
+	0xd3, 0xbb, 0x85, 0xd3, 0xd7, 0x58, 0x2a, 0xaa, 0xc3, 0x29, 0xa8, 0xd9, 0x3f, 0x61, 0x70, 0xbf,
+	0xe5, 0xc4, 0x66, 0xcd, 0x73, 0xfa, 0xda, 0xf3, 0xf9, 0x5f, 0x9e, 0xb3, 0x75, 0xaf, 0xa5, 0x32,
+	0x5b, 0xd0, 0x7b, 0x73, 0xdf, 0x2f, 0x4d, 0x1c, 0x79, 0x0b, 0x76, 0x51, 0x86, 0xb2, 0x0c, 0x1d,
+	0xd0, 0x8e, 0x8f, 0x57, 0x9e, 0x72, 0x5c, 0x86, 0x67, 0x65, 0x48, 0x8d, 0xc4, 0x3d, 0x81, 0xde,
+	0xac, 0xb3, 0x3b, 0x60, 0xcb, 0x58, 0x5c, 0xc7, 0x42, 0x0f, 0x48, 0x9f, 0x1a, 0x44, 0xf6, 0x61,
+	0x33, 0x28, 0xd5, 0x84, 0x5d, 0x4a, 0xcc, 0x59, 0x11, 0xa8, 0x89, 0xb3, 0xa6, 0xd7, 0x87, 0x15,
+	0x3b, 0x92, 0x98, 0x8f, 0x03, 0x35, 0x71, 0x7d, 0xe8, 0x36, 0x5d, 0xfd, 0x57, 0x60, 0x2d, 0x11,
+	0x9c, 0xc1, 0xb0, 0xdd, 0x49, 0xb2, 0x07, 0xc3, 0xb4, 0x8c, 0x38, 0x2b, 0x04, 0x5e, 0xc6, 0x91,
+	0x32, 0x9a, 0x41, 0xc5, 0x8d, 0x6b, 0x8a, 0xec, 0xc2, 0x30, 0xc5, 0x84, 0x9d, 0x63, 0xc2, 0x26,
+	0x28, 0x95, 0x39, 0x07, 0xa4, 0x98, 0xbc, 0xc7, 0xe4, 0x04, 0xa5, 0x72, 0x7f, 0x5b, 0x00, 0xf3,
+	0x96, 0x92, 0x29, 0x3c, 0x88, 0x04, 0x4a, 0xb6, 0x50, 0x11, 0x16, 0xf2, 0x3c, 0x10, 0x53, 0x73,
+	0x0d, 0x0e, 0x6f, 0x39, 0x1e, 0xde, 0xb1, 0x40, 0x59, 0xf5, 0x78, 0x6c, 0x22, 0x8f, 0xb4, 0x0b,
+	0xdd, 0x89, 0x96, 0xf2, 0xee, 0x6b, 0xd8, 0x59, 0xae, 0x20, 0x0f, 0x01, 0x22, 0x5e, 0x9c, 0xb3,
+	0x34, 0x08, 0xe3, 0xd4, 0xa4, 0xd9, 0xaf, 0x98, 0xcf, 0x15, 0xe1, 0x66, 0x30, 0x38, 0x2a, 0x79,
+	0x7a, 0x1e, 0x96, 0xd1, 0x55, 0xac, 0x08, 0x81, 0x8e, 0xce, 0xb5, 0x8e, 0xd3, 0xff, 0xc4, 0x81,
+	0x6e, 0x53, 0xa5, 0xba, 0x04, 0x0d, 0xac, 0x7a, 0x58, 0xeb, 0xf4, 0xad, 0xec, 0x53, 0x83, 0x2a,
+	0x45, 0x58, 0x99, 0x9a, 0x2b, 0xd6, 0xa7, 0x0d, 0x74, 0xdf, 0x80, 0x5d, 0xcf, 0x44, 0xdb, 0xd5,
+	0x5a, 0x74, 0xdd, 0x86, 0x0d, 0x85, 0x05, 0x8f, 0xcc, 0x6e, 0x35, 0x70, 0x7f, 0x59, 0x00, 0xf3,
+	0xa1, 0x27, 0x23, 0x18, 0x84, 0xf3, 0x73, 0x9b, 0xea, 0x1e, 0xac, 0xac, 0x6e, 0x2b, 0x4f, 0xda,
+	0x16, 0xb7, 0x66, 0x7a, 0xed, 0xbf, 0x67, 0x7a, 0xd4, 0xe9, 0xad, 0x6d, 0xad, 0x8f, 0x3a, 0xbd,
+	0x8d, 0x2d, 0x7b, 0xd4, 0xe9, 0xd9, 0x5b, 0xdd, 0xa3, 0x77, 0x3f, 0x0e, 0x13, 0xf4, 0xa2, 0x89,
+	0xc0, 0x8c, 0x97, 0x99, 0x87, 0x22, 0xf1, 0x1b, 0x80, 0xd2, 0xe7, 0xf9, 0x85, 0x08, 0x7c, 0xfd,
+	0x70, 0xfa, 0x09, 0xfa, 0xcb, 0x5e, 0xe9, 0xd0, 0xd6, 0xcb, 0xaf, 0xfe, 0x04, 0x00, 0x00, 0xff,
+	0xff, 0x65, 0x72, 0x7f, 0x06, 0xc4, 0x05, 0x00, 0x00,
 }
diff --git a/src/test_platform/config/config.proto b/src/test_platform/config/config.proto
index eb37208..6ae8885 100644
--- a/src/test_platform/config/config.proto
+++ b/src/test_platform/config/config.proto
@@ -62,16 +62,18 @@
         string builder = 4;
     }
 
+    // PubSub defines the configuration parameters for PubSub topic.
+    message PubSub {
+        string project = 1;
+        string topic = 2;
+    }
+
     // TestRunner defines configuration parameters related to the test_runner
     // recipe.
     message TestRunner {
         Buildbucket buildbucket = 1;
-    }
-
-    // PubSub defines the configuration parameters for PubSub topic.
-    message PubSub {
-       string project = 1;
-       string topic = 2;
+        // The PubSub topic to which Buildbucket sends the update of test runner build.
+        PubSub pubsub = 2;
     }
 
     Swarming skylab_swarming = 1;
