Skip to content

mise oci build

[experimental] Build an OCI image from the current mise.toml

Each tool version becomes its own content-addressable OCI layer. Bumping a tool version only invalidates that tool's layer — other tools, the base image, and config are reused unchanged. The output directory conforms to the OCI image-layout spec and can be consumed by skopeo, crane, or podman load.

Requires mise settings experimental=true (or MISE_EXPERIMENTAL=1).

Flags

-o --output <OUTPUT>

Output directory for the OCI image layout

Default: ./mise-oci

--from <FROM>

Base image reference (overrides [oci].from and the oci.default_from setting)

-t --tag <TAG>

Tag to record in the image index (the org.opencontainers.image.ref.name annotation)

--mount-point <MOUNT_POINT>

Where to place tool installs inside the image (default: /mise)

--no-mise

Do not embed the currently-running mise binary at /usr/local/bin/mise

Examples:

Build with defaults (debian:bookworm-slim base):
$ mise oci build

Build with a specific base image and tag:
$ mise oci build --from ubuntu:24.04 --tag myorg/dev:latest -o ./img

Inspect the result with skopeo:
$ skopeo inspect oci:./mise-oci

Push to a registry:
$ skopeo copy oci:./mise-oci docker://ghcr.io/me/dev:latest

Notes:

- asdf and vfox plugins are not supported in v1; use a different backend
  (core, aqua, ubi, github, cargo, npm, go, pipx, spm, http) for each tool.
- The host mise binary is embedded at /usr/local/bin/mise by default;
  build on the same OS/arch as your target image (or pass --no-mise).
MIT LicenseCopyright © 2026en.dev