diff --git a/build/static_binary_tarball/def.bzl b/build/static_binary_tarball/def.bzl
new file mode 100644
index 0000000..1b24b18
--- /dev/null
+++ b/build/static_binary_tarball/def.bzl
@@ -0,0 +1,77 @@
+#  Copyright 2020 The Monogon Project Authors.
+#
+#  SPDX-License-Identifier: Apache-2.0
+#
+#  Licensed under the Apache License, Version 2.0 (the "License");
+#  you may not use this file except in compliance with the License.
+#  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+#  Unless required by applicable law or agreed to in writing, software
+#  distributed under the License is distributed on an "AS IS" BASIS,
+#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+#  See the License for the specific language governing permissions and
+#  limitations under the License.
+
+load("//metropolis/node/build:def.bzl", "build_static_transition")
+
+def _static_binary_tarball_impl(ctx):
+    layer_spec = ctx.actions.declare_file(ctx.label.name + ".prototxt")
+    if len(ctx.attr.executable) != 1:
+        fail("executable arg can only contain one file/label")
+    executable_label = ctx.attr.executable[0]
+    executable = executable_label[DefaultInfo].files_to_run.executable
+    runfiles = executable_label[DefaultInfo].default_runfiles
+    files = []
+    for file in runfiles.files.to_list():
+        layer_path = file.short_path
+
+        # Weird shenanigans with external repos
+        if layer_path.startswith("../"):
+            layer_path = "external/" + layer_path[3:]
+        files.append(struct(
+            path = layer_path,
+            src = file.path,
+        ))
+    ctx.actions.write(layer_spec, proto.encode_text(struct(file = files)))
+
+    layer_out = ctx.actions.declare_file(ctx.label.name + ".tar")
+    ctx.actions.run(
+        outputs = [layer_out],
+        inputs = [layer_spec, executable] + runfiles.files.to_list(),
+        tools = [ctx.executable._container_binary],
+        executable = ctx.executable._container_binary,
+        arguments = ["-out", layer_out.path, "-spec", layer_spec.path],
+    )
+
+    return [DefaultInfo(files = depset([layer_out]), runfiles = ctx.runfiles(files = [layer_out]))]
+
+static_binary_tarball = rule(
+    implementation = _static_binary_tarball_impl,
+    doc = """
+        Build a tarball from a binary given in `executable` and its runfiles. Everything will be put under
+        /app with the same filesystem layout as if run under `bazel run`. So if your executable works under bazel run,
+        it will work when packaged with this rule with the exception of runfile manifests, which this rule currently
+        doesn't support.
+    """,
+    attrs = {
+        "executable": attr.label(
+            mandatory = True,
+            executable = True,
+            allow_single_file = True,
+            cfg = build_static_transition,
+        ),
+        "_container_binary": attr.label(
+            default = Label("//build/static_binary_tarball"),
+            cfg = "exec",
+            executable = True,
+            allow_files = True,
+        ),
+
+        # Allow for transitions to be attached to this rule.
+        "_whitelist_function_transition": attr.label(
+            default = "@bazel_tools//tools/whitelists/function_transition_whitelist",
+        ),
+    },
+)
