diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json
new file mode 100644
index 000000000..18618392c
--- /dev/null
+++ b/.devcontainer/devcontainer.json
@@ -0,0 +1,14 @@
+{
+    "name": "Homebrew/homebrew-bundle",
+    "image": "ghcr.io/homebrew/brew:latest",
+    "workspaceFolder": "/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-bundle/",
+    "workspaceMount": "source=${localWorkspaceFolder},target=/home/linuxbrew/.linuxbrew/Homebrew/Library/Taps/homebrew/homebrew-bundle/,type=bind,consistency=cached",
+    "onCreateCommand": "./.devcontainer/on-create-command.sh",
+    "postCreateCommand": "bundle install",
+    "remoteEnv": {
+      "HOMEBREW_GITHUB_API_TOKEN": "${localEnv:GITHUB_TOKEN}",
+      "PATH": "${containerEnv:PATH}:/home/linuxbrew/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin",
+      "EDITOR": "code --wait",
+      "VISUAL": "code --wait"
+    }
+  }
diff --git a/.devcontainer/on-create-command.sh b/.devcontainer/on-create-command.sh
new file mode 100755
index 000000000..67c8f5a61
--- /dev/null
+++ b/.devcontainer/on-create-command.sh
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+set -eux -o pipefail
+
+# fix permissions so Homebrew and Bundler don't complain
+sudo chmod -R g-w,o-w /home/linuxbrew
+
+# everything below is too slow to do unless prebuilding so skip it
+CODESPACES_ACTION_NAME="$(jq --raw-output '.ACTION_NAME' /workspaces/.codespaces/shared/environment-variables.json)"
+if [[ "${CODESPACES_ACTION_NAME}" != "createPrebuildTemplate" ]]
+then
+  echo "Skipping slow items, not prebuilding."
+  exit 0
+fi
+
+# install Homebrew's development gems
+brew install-bundler-gems --groups=all
+
+# install some useful development things
+sudo apt-get update
+
+apt_get_install() {
+  sudo apt-get install --yes --no-install-recommends \
+    -o Dpkg::Options::=--force-confdef \
+    -o Dpkg::Options::=--force-confnew \
+    "$@"
+}
+
+apt_get_install \
+  openssh-server \
+  zsh
+
+# Ubuntu 18.04 doesn't include zsh-autosuggestions
+if ! grep -q "Ubuntu 18.04" /etc/issue &>/dev/null
+then
+  apt_get_install zsh-autosuggestions
+fi
+
+# Start the SSH server so that `gh cs ssh` works.
+sudo service ssh start