diff --git a/cmd/tip/README b/cmd/tip/README
deleted file mode 100644
index b5f42a9..0000000
--- a/cmd/tip/README
+++ /dev/null
@@ -1,28 +0,0 @@
-============================================================
-Old instructions, only valid for talks.golang.org:
-============================================================
-
-1. Deploy the app.
-
-   To deploy tip.golang.org:
-       (See Kubernetes instruction below.)
-
-   To deploy talks.golang.org:
-       $ gcloud --project golang-org app deploy --no-promote talks.yaml
-
-2. Wait until the deployed version is serving requests.
-
-3. Go to the developer console and upgrade the default version.
-   https://console.developers.google.com/appengine/versions?project=golang-org&moduleId=tip
-
-4. Clean up any old versions (they continue to use at least one instance).
-
-============================================================
-New Kubernetes instructions, for tip.golang.org:
-============================================================
-
-Kubernetes instructions:
-
- * make deploy-prod
-
-Also: move talks.golang.org to GKE too?
diff --git a/cmd/tip/README.md b/cmd/tip/README.md
new file mode 100644
index 0000000..60a8563
--- /dev/null
+++ b/cmd/tip/README.md
@@ -0,0 +1,25 @@
+<!-- Auto-generated by x/build/update-readmes.go -->
+
+[![Go Reference](https://pkg.go.dev/badge/golang.org/x/build/cmd/tip.svg)](https://pkg.go.dev/golang.org/x/build/cmd/tip)
+
+# golang.org/x/build/cmd/tip
+
+Command tip is the tip.golang.org server, serving the latest HEAD straight from the Git oven.
+
+## Deployment
+
+### Staging
+
+To deploy to the staging project https://tip-staging.golang.org:
+
+```sh
+$ make deploy-staging
+```
+
+### Production
+
+To deploy to https://tip.golang.org:
+
+```sh
+$ make deploy-prod
+```
diff --git a/cmd/tip/talks.go b/cmd/tip/talks.go
deleted file mode 100644
index f2e7cd6..0000000
--- a/cmd/tip/talks.go
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2015 The Go Authors. All rights reserved.
-// Use of this source code is governed by the Apache 2.0
-// license that can be found in the LICENSE file.
-
-package main
-
-import (
-	"bytes"
-	"errors"
-	"fmt"
-	"log"
-	"os"
-	"os/exec"
-	"path/filepath"
-	"runtime"
-)
-
-type talksBuilder struct{}
-
-func (b talksBuilder) Signature(heads map[string]string) string {
-	return heads["talks"]
-}
-
-const talksToolsRev = "8cab8a1319f0be9798e7fe78b15da75e5f94b2e9"
-
-func (b talksBuilder) Init(logger *log.Logger, dir, hostport string, heads map[string]string) (*exec.Cmd, error) {
-	if _, ok := heads["talks"]; !ok {
-		return nil, fmt.Errorf("missing HEAD revision for 'talks' repo")
-	}
-	// TODO: use logger
-	toolsDir := filepath.Join(dir, "gopath/src/golang.org/x/tools")
-	if err := checkout(repoURL+"tools", talksToolsRev, toolsDir); err != nil {
-		return nil, err
-	}
-	talksDir := filepath.Join(dir, "gopath/src/golang.org/x/talks")
-	if err := checkout(repoURL+"talks", heads["talks"], talksDir); err != nil {
-		return nil, err
-	}
-
-	goDir := os.Getenv("GOROOT_BOOTSTRAP")
-	if goDir == "" {
-		goDir = runtime.GOROOT()
-	}
-	goBin := filepath.Join(goDir, "bin/go")
-	goPath := filepath.Join(dir, "gopath")
-	presentPath := "golang.org/x/tools/cmd/present"
-	install := exec.Command(goBin, "install", "-tags=appenginevm", presentPath)
-	install.Env = append(os.Environ(), "GOROOT="+goDir, "GOPATH="+goPath)
-	if err := runErr(install); err != nil {
-		return nil, err
-	}
-
-	talksBin := filepath.Join(goPath, "bin/present")
-	presentSrc := filepath.Join(goPath, "src", presentPath)
-	present := exec.Command(talksBin, "-http="+hostport, "-base="+presentSrc)
-	present.Dir = talksDir
-	// TODO(adg): log this somewhere useful
-	present.Stdout = os.Stdout
-	present.Stderr = os.Stderr
-	if err := present.Start(); err != nil {
-		return nil, err
-	}
-	return present, nil
-}
-
-var talksMsg = []byte("Talks - The Go Programming Language")
-
-func (b talksBuilder) HealthCheck(hostport string) error {
-	body, err := getOK(fmt.Sprintf("http://%v/", hostport))
-	if err != nil {
-		return err
-	}
-	if !bytes.Contains(body, talksMsg) {
-		return errors.New("couldn't match string")
-	}
-	return nil
-}
diff --git a/cmd/tip/talks.yaml b/cmd/tip/talks.yaml
deleted file mode 100644
index 24391a7..0000000
--- a/cmd/tip/talks.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-service: talks
-runtime: custom
-env: flex
-
-manual_scaling:
-  instances: 1
-
-env_variables:
-  TIP_BUILDER: 'talks'
-
-health_check:
-  enable_health_check: False
diff --git a/cmd/tip/tip.go b/cmd/tip/tip.go
index 424ecb9..f5c13ec 100644
--- a/cmd/tip/tip.go
+++ b/cmd/tip/tip.go
@@ -46,8 +46,6 @@
 	switch os.Getenv(k) {
 	case "golangorg":
 		b = golangorgBuilder{}
-	case "talks":
-		b = talksBuilder{}
 	default:
 		log.Fatalf("Unknown %v value: %q", k, os.Getenv(k))
 	}
