diff --git a/cmd/ejobs/main.go b/cmd/ejobs/main.go
index 2e7c7ab..47c3d68 100644
--- a/cmd/ejobs/main.go
+++ b/cmd/ejobs/main.go
@@ -9,6 +9,7 @@
 	"bytes"
 	"context"
 	"crypto/md5"
+	"debug/buildinfo"
 	"encoding/json"
 	"errors"
 	"flag"
@@ -43,7 +44,7 @@
 	{"cancel", "JOBID...",
 		"cancel the jobs", doCancel},
 	{"start", "BINARY [MIN_IMPORTERS]",
-		"start a job", doStart},
+		"start a job for a linux/amd64 binary", doStart},
 }
 
 type command struct {
@@ -67,7 +68,7 @@
 
 	flag.Parse()
 	if err := run(context.Background()); err != nil {
-		fmt.Fprintf(os.Stderr, "%v\n", err)
+		fmt.Fprintf(os.Stderr, "%v\n\n", err)
 		flag.Usage()
 		os.Exit(2)
 	}
@@ -186,6 +187,8 @@
 		return err
 	} else if fi.IsDir() {
 		return fmt.Errorf("%s is a directory, not a file", binaryFile)
+	} else if err := checkIsLinuxAmd64(binaryFile); err != nil {
+		return err
 	}
 
 	// Copy binary to GCS if it's not already there.
@@ -210,6 +213,36 @@
 	return nil
 }
 
+// checkIsLinuxAmd64 checks if binaryFile is a linux/amd64 Go
+// binary. If not, returns an error with appropriate message.
+// Otherwise, returns nil.
+func checkIsLinuxAmd64(binaryFile string) error {
+	bin, err := os.Open(binaryFile)
+	if err != nil {
+		return err
+	}
+	defer bin.Close()
+
+	bi, err := buildinfo.Read(bin)
+	if err != nil {
+		return err
+	}
+
+	var goos, goarch string
+	for _, setting := range bi.Settings {
+		if setting.Key == "GOOS" {
+			goos = setting.Value
+		} else if setting.Key == "GOARCH" {
+			goarch = setting.Value
+		}
+	}
+
+	if goos != "linux" || goarch != "amd64" {
+		return fmt.Errorf("binary not built for linux/amd64: GOOS=%s GOARCH=%s", goos, goarch)
+	}
+	return nil
+}
+
 // uploadAnalysisBinary copies binaryFile to the GCS location used for
 // analysis binaries.
 // As an optimization, it skips the upload if the file is already on GCS
