diff --git a/cmd/coordinator/coordinator.go b/cmd/coordinator/coordinator.go
index 426040a..ee13e13 100644
--- a/cmd/coordinator/coordinator.go
+++ b/cmd/coordinator/coordinator.go
@@ -60,6 +60,7 @@
 	"golang.org/x/build/gerrit"
 	"golang.org/x/build/internal/buildgo"
 	"golang.org/x/build/internal/buildstats"
+	"golang.org/x/build/internal/cloud"
 	"golang.org/x/build/internal/coordinator/pool"
 	"golang.org/x/build/internal/secret"
 	"golang.org/x/build/internal/singleflight"
@@ -115,6 +116,7 @@
 	mode           = flag.String("mode", "", "Valid modes are 'dev', 'prod', or '' for auto-detect. dev means localhost development, not be confused with staging on go-dashboard-dev, which is still the 'prod' mode.")
 	buildEnvName   = flag.String("env", "", "The build environment configuration to use. Not required if running on GCE.")
 	devEnableGCE   = flag.Bool("dev_gce", false, "Whether or not to enable the GCE pool when in dev mode. The pool is enabled by default in prod mode.")
+	devEnableEC2   = flag.Bool("dev_ec2", false, "Whether or not to enable the EC2 pool when in dev mode. The pool is enabled by default in prod mode.")
 	shouldRunBench = flag.Bool("run_bench", false, "Whether or not to run benchmarks on trybot commits. Override by GCE project attribute 'farmer-run-bench'.")
 	perfServer     = flag.String("perf_server", "", "Upload benchmark results to `server`. Overrides buildenv default for testing.")
 )
@@ -296,6 +298,13 @@
 		log.Printf("Kube support disabled due to error initializing Kubernetes: %v", err)
 	}
 
+	if *mode == "prod" || (*mode == "dev" && *devEnableEC2) {
+		// TODO(golang.org/issues/38337) the coordinator will use a package scoped pool
+		// until the coordinator is refactored to not require them.
+		ec2Pool := mustCreateEC2BuildletPool(sc)
+		defer ec2Pool.Close()
+	}
+
 	go updateInstanceRecord()
 
 	switch *mode {
@@ -1634,6 +1643,8 @@
 		panic("nil conf")
 	}
 	switch {
+	case conf.IsEC2():
+		return pool.EC2BuildetPool()
 	case conf.IsVM():
 		return pool.NewGCEConfiguration().BuildletPool()
 	case conf.IsContainer():
@@ -1751,6 +1762,9 @@
 			return 2 * time.Minute
 		}
 		return time.Minute
+	case *pool.EC2Buildlet:
+		// lack of historical data. 2 * time.Minute is a safe overestimate
+		return 2 * time.Minute
 	case *pool.ReverseBuildletPool:
 		goos, arch := st.conf.GOOS(), st.conf.GOARCH()
 		if goos == "darwin" {
@@ -4048,3 +4062,26 @@
 	}
 	return client
 }
+
+func mustCreateEC2BuildletPool(sc *secret.Client) *pool.EC2Buildlet {
+	awsKeyID, err := sc.Retrieve(context.Background(), secret.NameAWSKeyID)
+	if err != nil {
+		log.Fatalf("unable to retrieve secret %q: %s", secret.NameAWSKeyID, err)
+	}
+
+	awsAccessKey, err := sc.Retrieve(context.Background(), secret.NameAWSAccessKey)
+	if err != nil {
+		log.Fatalf("unable to retrieve secret %q: %s", secret.NameAWSAccessKey, err)
+	}
+
+	awsClient, err := cloud.NewAWSClient(buildenv.Production.AWSRegion, awsKeyID, awsAccessKey)
+	if err != nil {
+		log.Fatalf("unable to create AWS client: %s", err)
+	}
+
+	ec2Pool, err := pool.NewEC2Buildlet(awsClient, buildenv.Production, dashboard.Hosts, isGCERemoteBuildlet)
+	if err != nil {
+		log.Fatalf("unable to create EC2 buildlet pool: %s", err)
+	}
+	return ec2Pool
+}
diff --git a/cmd/coordinator/status.go b/cmd/coordinator/status.go
index 544b455..0b7ed70 100644
--- a/cmd/coordinator/status.go
+++ b/cmd/coordinator/status.go
@@ -659,6 +659,11 @@
 	data.GCEPoolStatus = template.HTML(buf.String())
 	buf.Reset()
 
+	buf.Reset()
+	pool.EC2BuildetPool().WriteHTMLStatus(&buf)
+	data.EC2PoolStatus = template.HTML(buf.String())
+	buf.Reset()
+
 	pool.KubePool().WriteHTMLStatus(&buf)
 	data.KubePoolStatus = template.HTML(buf.String())
 	buf.Reset()
@@ -727,6 +732,7 @@
 	TrybotsErr        string
 	Trybots           template.HTML
 	GCEPoolStatus     template.HTML // TODO: embed template
+	EC2PoolStatus     template.HTML // TODO: embed template
 	KubePoolStatus    template.HTML // TODO: embed template
 	ReversePoolStatus template.HTML // TODO: embed template
 	RemoteBuildlets   template.HTML
@@ -790,6 +796,7 @@
 <h2 id=pools>Buildlet pools <a href='#pools'>¶</a></h2>
 <ul>
 	<li>{{.GCEPoolStatus}}</li>
+	<li>{{.EC2PoolStatus}}</li>
 	<li>{{.KubePoolStatus}}</li>
 	<li>{{.ReversePoolStatus}}</li>
 </ul>
