diff --git a/ui/build/config.go b/ui/build/config.go
index 889e5cc..71b561c 100644
--- a/ui/build/config.go
+++ b/ui/build/config.go
@@ -15,9 +15,9 @@
 package build
 
 import (
+	"fmt"
 	"io/ioutil"
 	"log"
-	"fmt"
 	"os"
 	"path/filepath"
 	"runtime"
@@ -26,6 +26,9 @@
 	"time"
 
 	"android/soong/shared"
+	"github.com/golang/protobuf/proto"
+
+	smpb "android/soong/ui/metrics/metrics_proto"
 )
 
 type Config struct{ *configImpl }
@@ -233,7 +236,23 @@
 		}
 	}
 
-	return Config{ret}
+	c := Config{ret}
+	storeConfigMetrics(ctx, c)
+	return c
+}
+
+// storeConfigMetrics selects a set of configuration information and store in
+// the metrics system for further analysis.
+func storeConfigMetrics(ctx Context, config Config) {
+	if ctx.Metrics == nil {
+		return
+	}
+
+	b := &smpb.BuildConfig{
+		UseGoma: proto.Bool(config.UseGoma()),
+		UseRbe:  proto.Bool(config.UseRBE()),
+	}
+	ctx.Metrics.BuildConfig(b)
 }
 
 func (c *configImpl) parseArgs(ctx Context, args []string) {
diff --git a/ui/metrics/metrics.go b/ui/metrics/metrics.go
index d550f22..9929b9e 100644
--- a/ui/metrics/metrics.go
+++ b/ui/metrics/metrics.go
@@ -64,6 +64,10 @@
 	}
 }
 
+func (m *Metrics) BuildConfig(b *metrics_proto.BuildConfig) {
+	m.metrics.BuildConfig = b
+}
+
 func (m *Metrics) SetMetadataMetrics(metadata map[string]string) {
 	for k, v := range metadata {
 		switch k {
diff --git a/ui/metrics/metrics_proto/metrics.pb.go b/ui/metrics/metrics_proto/metrics.pb.go
index feefc89..b138cfa 100644
--- a/ui/metrics/metrics_proto/metrics.pb.go
+++ b/ui/metrics/metrics_proto/metrics.pb.go
@@ -3,9 +3,11 @@
 
 package metrics_proto
 
-import proto "github.com/golang/protobuf/proto"
-import fmt "fmt"
-import math "math"
+import (
+	fmt "fmt"
+	proto "github.com/golang/protobuf/proto"
+	math "math"
+)
 
 // Reference imports to suppress errors if they are not otherwise used.
 var _ = proto.Marshal
@@ -16,7 +18,7 @@
 // is compatible with the proto package it is being compiled against.
 // A compilation error at this line likely means your copy of the
 // proto package needs to be updated.
-const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package
 
 type MetricsBase_BUILDVARIANT int32
 
@@ -31,6 +33,7 @@
 	1: "USERDEBUG",
 	2: "ENG",
 }
+
 var MetricsBase_BUILDVARIANT_value = map[string]int32{
 	"USER":      0,
 	"USERDEBUG": 1,
@@ -42,9 +45,11 @@
 	*p = x
 	return p
 }
+
 func (x MetricsBase_BUILDVARIANT) String() string {
 	return proto.EnumName(MetricsBase_BUILDVARIANT_name, int32(x))
 }
+
 func (x *MetricsBase_BUILDVARIANT) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(MetricsBase_BUILDVARIANT_value, data, "MetricsBase_BUILDVARIANT")
 	if err != nil {
@@ -53,8 +58,9 @@
 	*x = MetricsBase_BUILDVARIANT(value)
 	return nil
 }
+
 func (MetricsBase_BUILDVARIANT) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_metrics_9e7b895801991242, []int{0, 0}
+	return fileDescriptor_6039342a2ba47b72, []int{0, 0}
 }
 
 type MetricsBase_ARCH int32
@@ -74,6 +80,7 @@
 	3: "X86",
 	4: "X86_64",
 }
+
 var MetricsBase_ARCH_value = map[string]int32{
 	"UNKNOWN": 0,
 	"ARM":     1,
@@ -87,9 +94,11 @@
 	*p = x
 	return p
 }
+
 func (x MetricsBase_ARCH) String() string {
 	return proto.EnumName(MetricsBase_ARCH_name, int32(x))
 }
+
 func (x *MetricsBase_ARCH) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(MetricsBase_ARCH_value, data, "MetricsBase_ARCH")
 	if err != nil {
@@ -98,8 +107,9 @@
 	*x = MetricsBase_ARCH(value)
 	return nil
 }
+
 func (MetricsBase_ARCH) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_metrics_9e7b895801991242, []int{0, 1}
+	return fileDescriptor_6039342a2ba47b72, []int{0, 1}
 }
 
 type ModuleTypeInfo_BUILDSYSTEM int32
@@ -115,6 +125,7 @@
 	1: "SOONG",
 	2: "MAKE",
 }
+
 var ModuleTypeInfo_BUILDSYSTEM_value = map[string]int32{
 	"UNKNOWN": 0,
 	"SOONG":   1,
@@ -126,9 +137,11 @@
 	*p = x
 	return p
 }
+
 func (x ModuleTypeInfo_BUILDSYSTEM) String() string {
 	return proto.EnumName(ModuleTypeInfo_BUILDSYSTEM_name, int32(x))
 }
+
 func (x *ModuleTypeInfo_BUILDSYSTEM) UnmarshalJSON(data []byte) error {
 	value, err := proto.UnmarshalJSONEnum(ModuleTypeInfo_BUILDSYSTEM_value, data, "ModuleTypeInfo_BUILDSYSTEM")
 	if err != nil {
@@ -137,8 +150,9 @@
 	*x = ModuleTypeInfo_BUILDSYSTEM(value)
 	return nil
 }
+
 func (ModuleTypeInfo_BUILDSYSTEM) EnumDescriptor() ([]byte, []int) {
-	return fileDescriptor_metrics_9e7b895801991242, []int{2, 0}
+	return fileDescriptor_6039342a2ba47b72, []int{3, 0}
 }
 
 type MetricsBase struct {
@@ -181,26 +195,28 @@
 	// The metrics for calling Soong.
 	SoongRuns []*PerfInfo `protobuf:"bytes,19,rep,name=soong_runs,json=soongRuns" json:"soong_runs,omitempty"`
 	// The metrics for calling Ninja.
-	NinjaRuns            []*PerfInfo `protobuf:"bytes,20,rep,name=ninja_runs,json=ninjaRuns" json:"ninja_runs,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}    `json:"-"`
-	XXX_unrecognized     []byte      `json:"-"`
-	XXX_sizecache        int32       `json:"-"`
+	NinjaRuns            []*PerfInfo  `protobuf:"bytes,20,rep,name=ninja_runs,json=ninjaRuns" json:"ninja_runs,omitempty"`
+	BuildConfig          *BuildConfig `protobuf:"bytes,23,opt,name=build_config,json=buildConfig" json:"build_config,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}     `json:"-"`
+	XXX_unrecognized     []byte       `json:"-"`
+	XXX_sizecache        int32        `json:"-"`
 }
 
 func (m *MetricsBase) Reset()         { *m = MetricsBase{} }
 func (m *MetricsBase) String() string { return proto.CompactTextString(m) }
 func (*MetricsBase) ProtoMessage()    {}
 func (*MetricsBase) Descriptor() ([]byte, []int) {
-	return fileDescriptor_metrics_9e7b895801991242, []int{0}
+	return fileDescriptor_6039342a2ba47b72, []int{0}
 }
+
 func (m *MetricsBase) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_MetricsBase.Unmarshal(m, b)
 }
 func (m *MetricsBase) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_MetricsBase.Marshal(b, m, deterministic)
 }
-func (dst *MetricsBase) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_MetricsBase.Merge(dst, src)
+func (m *MetricsBase) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_MetricsBase.Merge(m, src)
 }
 func (m *MetricsBase) XXX_Size() int {
 	return xxx_messageInfo_MetricsBase.Size(m)
@@ -356,6 +372,60 @@
 	return nil
 }
 
+func (m *MetricsBase) GetBuildConfig() *BuildConfig {
+	if m != nil {
+		return m.BuildConfig
+	}
+	return nil
+}
+
+type BuildConfig struct {
+	UseGoma              *bool    `protobuf:"varint,1,opt,name=use_goma,json=useGoma" json:"use_goma,omitempty"`
+	UseRbe               *bool    `protobuf:"varint,2,opt,name=use_rbe,json=useRbe" json:"use_rbe,omitempty"`
+	XXX_NoUnkeyedLiteral struct{} `json:"-"`
+	XXX_unrecognized     []byte   `json:"-"`
+	XXX_sizecache        int32    `json:"-"`
+}
+
+func (m *BuildConfig) Reset()         { *m = BuildConfig{} }
+func (m *BuildConfig) String() string { return proto.CompactTextString(m) }
+func (*BuildConfig) ProtoMessage()    {}
+func (*BuildConfig) Descriptor() ([]byte, []int) {
+	return fileDescriptor_6039342a2ba47b72, []int{1}
+}
+
+func (m *BuildConfig) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_BuildConfig.Unmarshal(m, b)
+}
+func (m *BuildConfig) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_BuildConfig.Marshal(b, m, deterministic)
+}
+func (m *BuildConfig) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_BuildConfig.Merge(m, src)
+}
+func (m *BuildConfig) XXX_Size() int {
+	return xxx_messageInfo_BuildConfig.Size(m)
+}
+func (m *BuildConfig) XXX_DiscardUnknown() {
+	xxx_messageInfo_BuildConfig.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_BuildConfig proto.InternalMessageInfo
+
+func (m *BuildConfig) GetUseGoma() bool {
+	if m != nil && m.UseGoma != nil {
+		return *m.UseGoma
+	}
+	return false
+}
+
+func (m *BuildConfig) GetUseRbe() bool {
+	if m != nil && m.UseRbe != nil {
+		return *m.UseRbe
+	}
+	return false
+}
+
 type PerfInfo struct {
 	// The description for the phase/action/part while the tool running.
 	Desc *string `protobuf:"bytes,1,opt,name=desc" json:"desc,omitempty"`
@@ -378,16 +448,17 @@
 func (m *PerfInfo) String() string { return proto.CompactTextString(m) }
 func (*PerfInfo) ProtoMessage()    {}
 func (*PerfInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_metrics_9e7b895801991242, []int{1}
+	return fileDescriptor_6039342a2ba47b72, []int{2}
 }
+
 func (m *PerfInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_PerfInfo.Unmarshal(m, b)
 }
 func (m *PerfInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_PerfInfo.Marshal(b, m, deterministic)
 }
-func (dst *PerfInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_PerfInfo.Merge(dst, src)
+func (m *PerfInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_PerfInfo.Merge(m, src)
 }
 func (m *PerfInfo) XXX_Size() int {
 	return xxx_messageInfo_PerfInfo.Size(m)
@@ -449,16 +520,17 @@
 func (m *ModuleTypeInfo) String() string { return proto.CompactTextString(m) }
 func (*ModuleTypeInfo) ProtoMessage()    {}
 func (*ModuleTypeInfo) Descriptor() ([]byte, []int) {
-	return fileDescriptor_metrics_9e7b895801991242, []int{2}
+	return fileDescriptor_6039342a2ba47b72, []int{3}
 }
+
 func (m *ModuleTypeInfo) XXX_Unmarshal(b []byte) error {
 	return xxx_messageInfo_ModuleTypeInfo.Unmarshal(m, b)
 }
 func (m *ModuleTypeInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
 	return xxx_messageInfo_ModuleTypeInfo.Marshal(b, m, deterministic)
 }
-func (dst *ModuleTypeInfo) XXX_Merge(src proto.Message) {
-	xxx_messageInfo_ModuleTypeInfo.Merge(dst, src)
+func (m *ModuleTypeInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_ModuleTypeInfo.Merge(m, src)
 }
 func (m *ModuleTypeInfo) XXX_Size() int {
 	return xxx_messageInfo_ModuleTypeInfo.Size(m)
@@ -493,65 +565,70 @@
 }
 
 func init() {
-	proto.RegisterType((*MetricsBase)(nil), "build_metrics.MetricsBase")
-	proto.RegisterType((*PerfInfo)(nil), "build_metrics.PerfInfo")
-	proto.RegisterType((*ModuleTypeInfo)(nil), "build_metrics.ModuleTypeInfo")
 	proto.RegisterEnum("build_metrics.MetricsBase_BUILDVARIANT", MetricsBase_BUILDVARIANT_name, MetricsBase_BUILDVARIANT_value)
 	proto.RegisterEnum("build_metrics.MetricsBase_ARCH", MetricsBase_ARCH_name, MetricsBase_ARCH_value)
 	proto.RegisterEnum("build_metrics.ModuleTypeInfo_BUILDSYSTEM", ModuleTypeInfo_BUILDSYSTEM_name, ModuleTypeInfo_BUILDSYSTEM_value)
+	proto.RegisterType((*MetricsBase)(nil), "build_metrics.MetricsBase")
+	proto.RegisterType((*BuildConfig)(nil), "build_metrics.BuildConfig")
+	proto.RegisterType((*PerfInfo)(nil), "build_metrics.PerfInfo")
+	proto.RegisterType((*ModuleTypeInfo)(nil), "build_metrics.ModuleTypeInfo")
 }
 
-func init() { proto.RegisterFile("metrics.proto", fileDescriptor_metrics_9e7b895801991242) }
+func init() { proto.RegisterFile("metrics.proto", fileDescriptor_6039342a2ba47b72) }
 
-var fileDescriptor_metrics_9e7b895801991242 = []byte{
-	// 783 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdd, 0x6e, 0xdb, 0x36,
-	0x14, 0xae, 0x62, 0x25, 0x96, 0x8e, 0x62, 0x57, 0x61, 0x02, 0x44, 0xc5, 0x50, 0x34, 0x30, 0xf6,
-	0x93, 0x01, 0x9b, 0x57, 0x18, 0x81, 0x11, 0x04, 0xbb, 0xb1, 0x13, 0xa3, 0x35, 0x5a, 0xdb, 0x85,
-	0x6c, 0x67, 0xdd, 0x2e, 0x46, 0x68, 0x12, 0xdd, 0x68, 0xb3, 0x44, 0x81, 0xa4, 0x8a, 0xf9, 0x21,
-	0xf6, 0x8c, 0x7b, 0x91, 0x5d, 0x0c, 0x3c, 0xb4, 0x5c, 0xa5, 0x17, 0x29, 0x72, 0x47, 0x9d, 0xef,
-	0x87, 0xdf, 0x91, 0xc8, 0x23, 0x68, 0x65, 0x4c, 0x89, 0x34, 0x96, 0xdd, 0x42, 0x70, 0xc5, 0x49,
-	0xeb, 0x8f, 0x32, 0x5d, 0x27, 0x74, 0x5b, 0xec, 0xfc, 0xe7, 0x80, 0x37, 0x31, 0xeb, 0x61, 0x24,
-	0x19, 0x79, 0x09, 0x27, 0x86, 0x90, 0x44, 0x8a, 0x51, 0x95, 0x66, 0x4c, 0xaa, 0x28, 0x2b, 0x02,
-	0xeb, 0xcc, 0x3a, 0x6f, 0x84, 0x04, 0xb1, 0x9b, 0x48, 0xb1, 0x45, 0x85, 0x90, 0x67, 0xe0, 0x18,
-	0x45, 0x9a, 0x04, 0x7b, 0x67, 0xd6, 0xb9, 0x1b, 0x36, 0xf1, 0x79, 0x9c, 0x90, 0x2b, 0x78, 0x56,
-	0xac, 0x23, 0xb5, 0xe2, 0x22, 0xa3, 0x1f, 0x99, 0x90, 0x29, 0xcf, 0x69, 0xcc, 0x13, 0x96, 0x47,
-	0x19, 0x0b, 0x1a, 0xc8, 0x3d, 0xad, 0x08, 0xb7, 0x06, 0xbf, 0xde, 0xc2, 0xe4, 0x1b, 0x68, 0xab,
-	0x48, 0x7c, 0x60, 0x8a, 0x16, 0x82, 0x27, 0x65, 0xac, 0x02, 0x1b, 0x05, 0x2d, 0x53, 0x7d, 0x67,
-	0x8a, 0xe4, 0x77, 0x38, 0xd9, 0xd2, 0x4c, 0x88, 0x8f, 0x91, 0x48, 0xa3, 0x5c, 0x05, 0xfb, 0x67,
-	0xd6, 0x79, 0xbb, 0xf7, 0x5d, 0xf7, 0x5e, 0xb7, 0xdd, 0x5a, 0xa7, 0xdd, 0xe1, 0x72, 0xfc, 0xf6,
-	0xe6, 0x76, 0x10, 0x8e, 0x07, 0xd3, 0xc5, 0x55, 0x63, 0x34, 0x7d, 0x15, 0x12, 0xe3, 0x34, 0xd4,
-	0x92, 0x5b, 0xe3, 0x43, 0xc6, 0xe0, 0x6d, 0xfd, 0x23, 0x11, 0xdf, 0x05, 0x07, 0x68, 0xfb, 0xe2,
-	0x01, 0xdb, 0x41, 0x78, 0xfd, 0xfa, 0xaa, 0xb9, 0x9c, 0xbe, 0x99, 0xce, 0x7e, 0x99, 0x86, 0x60,
-	0xc4, 0x03, 0x11, 0xdf, 0x91, 0x2e, 0x1c, 0xd7, 0xac, 0x76, 0x49, 0x9b, 0xd8, 0xd6, 0xd1, 0x27,
-	0x62, 0xb5, 0xf5, 0x0f, 0xb0, 0x0d, 0x44, 0xe3, 0xa2, 0xdc, 0xd1, 0x1d, 0xa4, 0xfb, 0x06, 0xb9,
-	0x2e, 0xca, 0x8a, 0x3d, 0x02, 0xf7, 0x8e, 0xcb, 0x6d, 0x4c, 0xf7, 0x91, 0x31, 0x1d, 0x2d, 0xc5,
-	0x90, 0x6f, 0xa1, 0x85, 0x36, 0xbd, 0x3c, 0x31, 0x56, 0xf0, 0x48, 0x2b, 0x4f, 0xcb, 0x7b, 0x79,
-	0x82, 0x6e, 0xa7, 0xd0, 0x44, 0x37, 0x2e, 0x03, 0x0f, 0x73, 0x1f, 0xe8, 0xc7, 0x99, 0x24, 0x9d,
-	0xed, 0x36, 0x5c, 0x52, 0xf6, 0xb7, 0x12, 0x51, 0x70, 0x88, 0xb0, 0x67, 0xe0, 0x91, 0x2e, 0xed,
-	0x38, 0xb1, 0xe0, 0x52, 0x6a, 0x8b, 0xd6, 0x27, 0xce, 0xb5, 0xae, 0xcd, 0x24, 0xf9, 0x16, 0x9e,
-	0xd6, 0x38, 0x18, 0xb8, 0x6d, 0x8e, 0xc9, 0x8e, 0x85, 0x41, 0x7e, 0x84, 0xe3, 0x1a, 0x6f, 0xd7,
-	0xdc, 0x53, 0xf3, 0x32, 0x77, 0xdc, 0x5a, 0x6e, 0x5e, 0x2a, 0x9a, 0xa4, 0x22, 0xf0, 0x4d, 0x6e,
-	0x5e, 0xaa, 0x9b, 0x54, 0x90, 0x4b, 0xf0, 0x24, 0x53, 0x65, 0x41, 0x15, 0xe7, 0x6b, 0x19, 0x1c,
-	0x9d, 0x35, 0xce, 0xbd, 0xde, 0xe9, 0x67, 0x2f, 0xe7, 0x1d, 0x13, 0xab, 0x71, 0xbe, 0xe2, 0x21,
-	0x20, 0x77, 0xa1, 0xa9, 0xe4, 0x02, 0xdc, 0xbf, 0x22, 0x95, 0x52, 0x51, 0xe6, 0x32, 0x20, 0x0f,
-	0xeb, 0x1c, 0xcd, 0x0c, 0xcb, 0x5c, 0x92, 0x3e, 0x80, 0xe4, 0x3c, 0xff, 0x60, 0x64, 0xc7, 0x0f,
-	0xcb, 0x5c, 0xa4, 0x56, 0xba, 0x3c, 0xcd, 0xff, 0x8c, 0x8c, 0xee, 0xe4, 0x0b, 0x3a, 0xa4, 0x6a,
-	0x5d, 0xe7, 0x25, 0x1c, 0xd6, 0xef, 0x05, 0x71, 0xc0, 0x5e, 0xce, 0x47, 0xa1, 0xff, 0x84, 0xb4,
-	0xc0, 0xd5, 0xab, 0x9b, 0xd1, 0x70, 0xf9, 0xca, 0xb7, 0x48, 0x13, 0xf4, 0x95, 0xf1, 0xf7, 0x3a,
-	0x3f, 0x83, 0xad, 0x0f, 0x00, 0xf1, 0xa0, 0x3a, 0x02, 0xfe, 0x13, 0x8d, 0x0e, 0xc2, 0x89, 0x6f,
-	0x11, 0x17, 0xf6, 0x07, 0xe1, 0xa4, 0x7f, 0xe1, 0xef, 0xe9, 0xda, 0xfb, 0xcb, 0xbe, 0xdf, 0x20,
-	0x00, 0x07, 0xef, 0x2f, 0xfb, 0xb4, 0x7f, 0xe1, 0xdb, 0x9d, 0x7f, 0x2c, 0x70, 0xaa, 0x1c, 0x84,
-	0x80, 0x9d, 0x30, 0x19, 0xe3, 0xac, 0x71, 0x43, 0x5c, 0xeb, 0x1a, 0x4e, 0x0b, 0x33, 0x59, 0x70,
-	0x4d, 0x9e, 0x03, 0x48, 0x15, 0x09, 0x85, 0xe3, 0x09, 0xe7, 0x88, 0x1d, 0xba, 0x58, 0xd1, 0x53,
-	0x89, 0x7c, 0x05, 0xae, 0x60, 0xd1, 0xda, 0xa0, 0x36, 0xa2, 0x8e, 0x2e, 0x20, 0xf8, 0x1c, 0x20,
-	0x63, 0x19, 0x17, 0x1b, 0x5a, 0x4a, 0x86, 0x53, 0xc2, 0x0e, 0x5d, 0x53, 0x59, 0x4a, 0xd6, 0xf9,
-	0xd7, 0x82, 0xf6, 0x84, 0x27, 0xe5, 0x9a, 0x2d, 0x36, 0x05, 0xc3, 0x54, 0x4b, 0x38, 0x34, 0xef,
-	0x4d, 0x6e, 0xa4, 0x62, 0x19, 0xa6, 0x6b, 0xf7, 0xbe, 0xff, 0xfc, 0x42, 0xdc, 0x13, 0x99, 0xe1,
-	0x32, 0xff, 0x75, 0xbe, 0x18, 0x4d, 0x6a, 0x57, 0x03, 0x25, 0x73, 0xb4, 0x21, 0x2f, 0xc0, 0xcb,
-	0x50, 0x43, 0xd5, 0xa6, 0xa8, 0xfa, 0x83, 0x6c, 0x67, 0x43, 0xbe, 0x86, 0x76, 0x5e, 0x66, 0x94,
-	0xaf, 0xa8, 0x29, 0x4a, 0xec, 0xb4, 0x15, 0x1e, 0xe6, 0x65, 0x36, 0x5b, 0x99, 0xfd, 0x64, 0xe7,
-	0x27, 0xf0, 0x6a, 0x7b, 0xdd, 0xff, 0x0a, 0x2e, 0xec, 0xcf, 0x67, 0xb3, 0xa9, 0xfe, 0x5c, 0x0e,
-	0xd8, 0x93, 0xc1, 0x9b, 0x91, 0xbf, 0x37, 0x3c, 0x7a, 0xdd, 0xf8, 0xad, 0xfa, 0x25, 0x50, 0xfc,
-	0x25, 0xfc, 0x1f, 0x00, 0x00, 0xff, 0xff, 0xd4, 0x8d, 0x19, 0x89, 0x22, 0x06, 0x00, 0x00,
+var fileDescriptor_6039342a2ba47b72 = []byte{
+	// 847 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x94, 0x55, 0xdd, 0x6e, 0xe2, 0x46,
+	0x14, 0x5e, 0x02, 0x1b, 0xec, 0xe3, 0xc0, 0x3a, 0x93, 0x48, 0xf1, 0xb6, 0x5a, 0x2d, 0x42, 0xfd,
+	0xa1, 0x52, 0x4b, 0x57, 0x28, 0x42, 0x51, 0xd4, 0x5e, 0x00, 0x41, 0x59, 0xb4, 0x0b, 0xac, 0x06,
+	0x48, 0xb7, 0xbd, 0xa8, 0xe5, 0xd8, 0x43, 0xe2, 0x16, 0x7b, 0xac, 0x99, 0xf1, 0xaa, 0x79, 0x88,
+	0x3e, 0x51, 0x1f, 0xa6, 0xaf, 0x52, 0xcd, 0x19, 0x4c, 0x9c, 0x5c, 0xa4, 0xda, 0xbb, 0xf1, 0xf9,
+	0x7e, 0xe6, 0x3b, 0x1e, 0xcf, 0x31, 0x34, 0x12, 0xa6, 0x44, 0x1c, 0xca, 0x6e, 0x26, 0xb8, 0xe2,
+	0xa4, 0x71, 0x9d, 0xc7, 0x9b, 0xc8, 0xdf, 0x16, 0xdb, 0xff, 0xd8, 0xe0, 0x4c, 0xcd, 0x7a, 0x18,
+	0x48, 0x46, 0xde, 0xc0, 0xb1, 0x21, 0x44, 0x81, 0x62, 0xbe, 0x8a, 0x13, 0x26, 0x55, 0x90, 0x64,
+	0x5e, 0xa5, 0x55, 0xe9, 0x54, 0x29, 0x41, 0xec, 0x22, 0x50, 0x6c, 0x59, 0x20, 0xe4, 0x25, 0x58,
+	0x46, 0x11, 0x47, 0xde, 0x5e, 0xab, 0xd2, 0xb1, 0x69, 0x1d, 0x9f, 0x27, 0x11, 0x39, 0x87, 0x97,
+	0xd9, 0x26, 0x50, 0x6b, 0x2e, 0x12, 0xff, 0x13, 0x13, 0x32, 0xe6, 0xa9, 0x1f, 0xf2, 0x88, 0xa5,
+	0x41, 0xc2, 0xbc, 0x2a, 0x72, 0x4f, 0x0a, 0xc2, 0x95, 0xc1, 0x47, 0x5b, 0x98, 0x7c, 0x0d, 0x4d,
+	0x15, 0x88, 0x1b, 0xa6, 0xfc, 0x4c, 0xf0, 0x28, 0x0f, 0x95, 0x57, 0x43, 0x41, 0xc3, 0x54, 0x3f,
+	0x98, 0x22, 0xf9, 0x1d, 0x8e, 0xb7, 0x34, 0x13, 0xe2, 0x53, 0x20, 0xe2, 0x20, 0x55, 0xde, 0xf3,
+	0x56, 0xa5, 0xd3, 0xec, 0x7d, 0xdb, 0x7d, 0xd0, 0x6d, 0xb7, 0xd4, 0x69, 0x77, 0xb8, 0x9a, 0xbc,
+	0xbf, 0xb8, 0x1a, 0xd0, 0xc9, 0x60, 0xb6, 0x3c, 0xaf, 0x8e, 0x67, 0x97, 0x94, 0x18, 0xa7, 0xa1,
+	0x96, 0x5c, 0x19, 0x1f, 0x32, 0x01, 0x67, 0xeb, 0x1f, 0x88, 0xf0, 0xd6, 0xdb, 0x47, 0xdb, 0xd7,
+	0x4f, 0xd8, 0x0e, 0xe8, 0xe8, 0xed, 0x79, 0x7d, 0x35, 0x7b, 0x37, 0x9b, 0xff, 0x32, 0xa3, 0x60,
+	0xc4, 0x03, 0x11, 0xde, 0x92, 0x2e, 0x1c, 0x95, 0xac, 0x76, 0x49, 0xeb, 0xd8, 0xd6, 0xe1, 0x3d,
+	0xb1, 0xd8, 0xfa, 0x7b, 0xd8, 0x06, 0xf2, 0xc3, 0x2c, 0xdf, 0xd1, 0x2d, 0xa4, 0xbb, 0x06, 0x19,
+	0x65, 0x79, 0xc1, 0x1e, 0x83, 0x7d, 0xcb, 0xe5, 0x36, 0xa6, 0xfd, 0x99, 0x31, 0x2d, 0x2d, 0xc5,
+	0x90, 0xef, 0xa1, 0x81, 0x36, 0xbd, 0x34, 0x32, 0x56, 0xf0, 0x99, 0x56, 0x8e, 0x96, 0xf7, 0xd2,
+	0x08, 0xdd, 0x4e, 0xa0, 0x8e, 0x6e, 0x5c, 0x7a, 0x0e, 0xe6, 0xde, 0xd7, 0x8f, 0x73, 0x49, 0xda,
+	0xdb, 0x6d, 0xb8, 0xf4, 0xd9, 0x5f, 0x4a, 0x04, 0xde, 0x01, 0xc2, 0x8e, 0x81, 0xc7, 0xba, 0xb4,
+	0xe3, 0x84, 0x82, 0x4b, 0xa9, 0x2d, 0x1a, 0xf7, 0x9c, 0x91, 0xae, 0xcd, 0x25, 0xf9, 0x06, 0x5e,
+	0x94, 0x38, 0x18, 0xb8, 0x69, 0x3e, 0x93, 0x1d, 0x0b, 0x83, 0xfc, 0x00, 0x47, 0x25, 0xde, 0xae,
+	0xb9, 0x17, 0xe6, 0x65, 0xee, 0xb8, 0xa5, 0xdc, 0x3c, 0x57, 0x7e, 0x14, 0x0b, 0xcf, 0x35, 0xb9,
+	0x79, 0xae, 0x2e, 0x62, 0x41, 0xce, 0xc0, 0x91, 0x4c, 0xe5, 0x99, 0xaf, 0x38, 0xdf, 0x48, 0xef,
+	0xb0, 0x55, 0xed, 0x38, 0xbd, 0x93, 0x47, 0x2f, 0xe7, 0x03, 0x13, 0xeb, 0x49, 0xba, 0xe6, 0x14,
+	0x90, 0xbb, 0xd4, 0x54, 0x72, 0x0a, 0xf6, 0x9f, 0x81, 0x8a, 0x7d, 0x91, 0xa7, 0xd2, 0x23, 0x4f,
+	0xeb, 0x2c, 0xcd, 0xa4, 0x79, 0x2a, 0x49, 0x1f, 0x40, 0x72, 0x9e, 0xde, 0x18, 0xd9, 0xd1, 0xd3,
+	0x32, 0x1b, 0xa9, 0x85, 0x2e, 0x8d, 0xd3, 0x3f, 0x02, 0xa3, 0x3b, 0xfe, 0x1f, 0x1d, 0x52, 0x51,
+	0xf7, 0x33, 0x1c, 0x18, 0x52, 0xc8, 0xd3, 0x75, 0x7c, 0xe3, 0x9d, 0xb4, 0x2a, 0x1d, 0xa7, 0xf7,
+	0xc5, 0x23, 0x25, 0xde, 0x90, 0x11, 0x32, 0xa8, 0x73, 0x7d, 0xff, 0xd0, 0x7e, 0x03, 0x07, 0xe5,
+	0x6b, 0x45, 0x2c, 0xa8, 0xad, 0x16, 0x63, 0xea, 0x3e, 0x23, 0x0d, 0xb0, 0xf5, 0xea, 0x62, 0x3c,
+	0x5c, 0x5d, 0xba, 0x15, 0x52, 0x07, 0x7d, 0xe3, 0xdc, 0xbd, 0xf6, 0x4f, 0x50, 0xd3, 0xdf, 0x0f,
+	0x71, 0xa0, 0xf8, 0x82, 0xdc, 0x67, 0x1a, 0x1d, 0xd0, 0xa9, 0x5b, 0x21, 0x36, 0x3c, 0x1f, 0xd0,
+	0x69, 0xff, 0xd4, 0xdd, 0xd3, 0xb5, 0x8f, 0x67, 0x7d, 0xb7, 0x4a, 0x00, 0xf6, 0x3f, 0x9e, 0xf5,
+	0xfd, 0xfe, 0xa9, 0x5b, 0x6b, 0x0f, 0xc0, 0x29, 0x65, 0xd1, 0xa3, 0x28, 0x97, 0xcc, 0xbf, 0xe1,
+	0x49, 0x80, 0x03, 0xcb, 0xa2, 0xf5, 0x5c, 0xb2, 0x4b, 0x9e, 0x04, 0xfa, 0x44, 0x35, 0x24, 0xae,
+	0x19, 0x0e, 0x29, 0x8b, 0xee, 0xe7, 0x92, 0xd1, 0x6b, 0xd6, 0xfe, 0xbb, 0x02, 0x56, 0xf1, 0x26,
+	0x08, 0x81, 0x5a, 0xc4, 0x64, 0x88, 0x62, 0x9b, 0xe2, 0x5a, 0xd7, 0x70, 0x5e, 0x99, 0xd9, 0x86,
+	0x6b, 0xf2, 0x0a, 0x40, 0xaa, 0x40, 0x28, 0x1c, 0x90, 0x38, 0xc9, 0x6a, 0xd4, 0xc6, 0x8a, 0x9e,
+	0x8b, 0xe4, 0x4b, 0xb0, 0x05, 0x0b, 0x36, 0x06, 0xad, 0x21, 0x6a, 0xe9, 0x02, 0x82, 0xaf, 0x00,
+	0x12, 0x96, 0x70, 0x71, 0xe7, 0xe7, 0x92, 0xe1, 0x9c, 0xaa, 0x51, 0xdb, 0x54, 0x56, 0x92, 0xb5,
+	0xff, 0xad, 0x40, 0x73, 0xca, 0xa3, 0x7c, 0xc3, 0x96, 0x77, 0x19, 0xc3, 0x54, 0xab, 0xe2, 0x50,
+	0xe4, 0x9d, 0x54, 0x2c, 0xc1, 0x74, 0xcd, 0xde, 0x77, 0x8f, 0xaf, 0xe4, 0x03, 0x91, 0x19, 0x6f,
+	0x8b, 0x5f, 0x17, 0xcb, 0xf1, 0xb4, 0x74, 0x39, 0x51, 0xb2, 0x40, 0x1b, 0xf2, 0x1a, 0x9c, 0x04,
+	0x35, 0xbe, 0xba, 0xcb, 0x8a, 0xfe, 0x20, 0xd9, 0xd9, 0x90, 0xaf, 0xa0, 0x99, 0xe6, 0x89, 0xcf,
+	0xd7, 0xbe, 0x29, 0x4a, 0xec, 0xb4, 0x41, 0x0f, 0xd2, 0x3c, 0x99, 0xaf, 0xcd, 0x7e, 0xb2, 0xfd,
+	0x23, 0x38, 0xa5, 0xbd, 0x1e, 0x1e, 0xa4, 0x0d, 0xcf, 0x17, 0xf3, 0xf9, 0x4c, 0x9f, 0xb8, 0x05,
+	0xb5, 0xe9, 0xe0, 0xdd, 0xd8, 0xdd, 0x1b, 0x1e, 0xbe, 0xad, 0xfe, 0x56, 0xfc, 0x94, 0x7c, 0xfc,
+	0x29, 0xfd, 0x17, 0x00, 0x00, 0xff, 0xff, 0x76, 0x9a, 0xf7, 0xbd, 0xa4, 0x06, 0x00, 0x00,
 }
diff --git a/ui/metrics/metrics_proto/metrics.proto b/ui/metrics/metrics_proto/metrics.proto
index b3de2f4..6c5c321 100644
--- a/ui/metrics/metrics_proto/metrics.proto
+++ b/ui/metrics/metrics_proto/metrics.proto
@@ -91,6 +91,14 @@
 
   // The metrics for calling Ninja.
   repeated PerfInfo ninja_runs = 20;
+
+  optional BuildConfig build_config = 23;
+}
+
+message BuildConfig {
+  optional bool use_goma = 1;
+
+  optional bool use_rbe = 2;
 }
 
 message PerfInfo {
