diff --git a/metropolis/installer/BUILD.bazel b/metropolis/installer/BUILD.bazel
index fe80669..27eb5a5 100644
--- a/metropolis/installer/BUILD.bazel
+++ b/metropolis/installer/BUILD.bazel
@@ -16,6 +16,8 @@
         "//osbase/bringup",
         "//osbase/build/mkimage/osimage",
         "//osbase/efivarfs",
+        "//osbase/oci",
+        "//osbase/oci/osimage",
         "//osbase/structfs",
         "//osbase/supervisor",
         "//osbase/sysfs",
diff --git a/metropolis/installer/main.go b/metropolis/installer/main.go
index 216f99c..2ba2142 100644
--- a/metropolis/installer/main.go
+++ b/metropolis/installer/main.go
@@ -2,12 +2,11 @@
 // SPDX-License-Identifier: Apache-2.0
 
 // Installer creates a Metropolis image at a suitable block device based on the
-// installer bundle present in the installation medium's ESP, after which it
-// reboots. It's meant to be used as an init process.
+// OS image present in the installation medium's ESP, after which it reboots.
+// It's meant to be used as an init process.
 package main
 
 import (
-	"archive/zip"
 	"context"
 	_ "embed"
 	"errors"
@@ -23,6 +22,8 @@
 	"source.monogon.dev/osbase/bringup"
 	"source.monogon.dev/osbase/build/mkimage/osimage"
 	"source.monogon.dev/osbase/efivarfs"
+	"source.monogon.dev/osbase/oci"
+	ociosimage "source.monogon.dev/osbase/oci/osimage"
 	"source.monogon.dev/osbase/structfs"
 	"source.monogon.dev/osbase/supervisor"
 	"source.monogon.dev/osbase/sysfs"
@@ -103,24 +104,6 @@
 	return suitable, nil
 }
 
-// zipBlob looks up a file in a [zip.Reader] and adapts it to [structfs.Blob].
-func zipBlob(reader *zip.Reader, name string) (zipFileBlob, error) {
-	for _, file := range reader.File {
-		if file.Name == name {
-			return zipFileBlob{file}, nil
-		}
-	}
-	return zipFileBlob{}, fmt.Errorf("file %q not found", name)
-}
-
-type zipFileBlob struct {
-	*zip.File
-}
-
-func (f zipFileBlob) Size() int64 {
-	return int64(f.File.UncompressedSize64)
-}
-
 func main() {
 	bringup.Runnable(installerRunnable).Run()
 }
@@ -159,7 +142,7 @@
 		}
 	}
 	espPath := filepath.Join("/dev", espDev)
-	// Mount the installer partition. The installer bundle will be read from it.
+	// Mount the installer partition. The OS image will be read from it.
 	if err := mountInstallerESP(espPath); err != nil {
 		return fmt.Errorf("while mounting the installer ESP: %w", err)
 	}
@@ -169,19 +152,22 @@
 		return fmt.Errorf("failed to open node parameters from ESP: %w", err)
 	}
 
-	// TODO(lorenz): Replace with proper bundles
-	bundle, err := zip.OpenReader("/installer/metropolis-installer/bundle.bin")
+	ociImage, err := oci.ReadLayout("/installer/metropolis-installer/osimage")
 	if err != nil {
-		return fmt.Errorf("failed to open node bundle from ESP: %w", err)
+		return fmt.Errorf("failed to read OS image from ESP: %w", err)
 	}
-	defer bundle.Close()
-	efiPayload, err := zipBlob(&bundle.Reader, "kernel_efi.efi")
+	osImage, err := ociosimage.Read(ociImage)
 	if err != nil {
-		return fmt.Errorf("cannot open EFI payload in bundle: %w", err)
+		return fmt.Errorf("failed to read OS image from ESP: %w", err)
 	}
-	systemImage, err := zipBlob(&bundle.Reader, "verity_rootfs.img")
+
+	efiPayload, err := osImage.Payload("kernel.efi")
 	if err != nil {
-		return fmt.Errorf("cannot open system image in bundle: %w", err)
+		return fmt.Errorf("cannot open EFI payload in OS image: %w", err)
+	}
+	systemImage, err := osImage.Payload("system")
+	if err != nil {
+		return fmt.Errorf("cannot open system image in OS image: %w", err)
 	}
 
 	// Build the osimage parameters.
diff --git a/metropolis/installer/test/BUILD.bazel b/metropolis/installer/test/BUILD.bazel
index 7b7828d..903f46e 100644
--- a/metropolis/installer/test/BUILD.bazel
+++ b/metropolis/installer/test/BUILD.bazel
@@ -7,7 +7,7 @@
     srcs = ["run_test.go"],
     data = [
         ":kernel",
-        "//metropolis/installer/test/testos:testos_bundle",
+        "//metropolis/installer/test/testos:testos_image",
         "//third_party/edk2:OVMF_CODE.fd",
         "//third_party/edk2:OVMF_VARS.fd",
     ],
@@ -17,13 +17,14 @@
         "xOvmfVarsPath": "$(rlocationpath //third_party/edk2:OVMF_VARS.fd )",
         "xOvmfCodePath": "$(rlocationpath //third_party/edk2:OVMF_CODE.fd )",
         "xInstallerPath": "$(rlocationpath :kernel )",
-        "xBundlePath": "$(rlocationpath //metropolis/installer/test/testos:testos_bundle )",
+        "xImagePath": "$(rlocationpath //metropolis/installer/test/testos:testos_image )",
     },
     deps = [
         "//metropolis/cli/metroctl/core",
         "//metropolis/proto/api",
         "//osbase/build/mkimage/osimage",
         "//osbase/cmd",
+        "//osbase/oci",
         "//osbase/structfs",
         "@com_github_diskfs_go_diskfs//:go-diskfs",
         "@com_github_diskfs_go_diskfs//disk",
diff --git a/metropolis/installer/test/run_test.go b/metropolis/installer/test/run_test.go
index cd87852..925e758 100644
--- a/metropolis/installer/test/run_test.go
+++ b/metropolis/installer/test/run_test.go
@@ -26,6 +26,7 @@
 	mctl "source.monogon.dev/metropolis/cli/metroctl/core"
 	"source.monogon.dev/osbase/build/mkimage/osimage"
 	"source.monogon.dev/osbase/cmd"
+	"source.monogon.dev/osbase/oci"
 	"source.monogon.dev/osbase/structfs"
 )
 
@@ -36,14 +37,14 @@
 	xOvmfCodePath  string
 	xOvmfVarsPath  string
 	xInstallerPath string
-	xBundlePath    string
+	xImagePath     string
 )
 
 func init() {
 	var err error
 	for _, path := range []*string{
 		&xOvmfCodePath, &xOvmfVarsPath,
-		&xInstallerPath, &xBundlePath,
+		&xInstallerPath, &xImagePath,
 	} {
 		*path, err = runfiles.Rlocation(*path)
 		if err != nil {
@@ -139,7 +140,7 @@
 		log.Fatal(err)
 	}
 
-	bundle, err := structfs.OSPathBlob(xBundlePath)
+	image, err := oci.ReadLayout(xImagePath)
 	if err != nil {
 		log.Fatal(err)
 	}
@@ -148,7 +149,7 @@
 		Installer:  installer,
 		TargetPath: installerImage,
 		NodeParams: &api.NodeParameters{},
-		Bundle:     bundle,
+		Image:      image,
 	}
 	if err := mctl.MakeInstallerImage(iargs); err != nil {
 		log.Fatalf("Couldn't create the installer image at %q: %v", installerImage, err)
diff --git a/metropolis/installer/test/testos/BUILD.bazel b/metropolis/installer/test/testos/BUILD.bazel
index c8f1c3f..e8d8700 100644
--- a/metropolis/installer/test/testos/BUILD.bazel
+++ b/metropolis/installer/test/testos/BUILD.bazel
@@ -1,6 +1,7 @@
 load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library")
 load("@rules_pkg//:pkg.bzl", "pkg_zip")
 load("//osbase/build/mkerofs:def.bzl", "erofs_image")
+load("//osbase/build/mkoci:def.bzl", "oci_os_image")
 load("//osbase/build/mkpayload:def.bzl", "efi_unified_kernel_image")
 load("//osbase/build/mkverity:def.bzl", "verity_image")
 
@@ -35,6 +36,15 @@
     visibility = ["//visibility:public"],
 )
 
+oci_os_image(
+    name = "testos_image",
+    srcs = {
+        "system": ":verity_rootfs",
+        "kernel.efi": ":kernel_efi",
+    },
+    visibility = ["//visibility:public"],
+)
+
 go_library(
     name = "testos_lib",
     srcs = ["main.go"],
