<!-- @generated by usage-cli from usage spec -->
# `mise oci push`

- **Usage**: `mise oci push [FLAGS] <REF>`
- **Source code**: [`src/cli/oci/push.rs`](https://github.com/jdx/mise/blob/main/src/cli/oci/push.rs)

[experimental] Build an OCI image and push it to a registry

Requires `skopeo` (or `crane`) on PATH. If `--image-dir` is not passed,
builds fresh from the current mise.toml first, then shells out to
`skopeo copy oci:<dir> docker://<ref>` (or `crane push <dir> <ref>`).
Authentication is handled by the underlying tool — configure it the same
way you would for a plain `skopeo` / `crane` push (e.g. `docker login`,
`REGISTRY_AUTH_FILE`, `~/.config/containers/auth.json`).

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

## Arguments

### `<REF>`

Destination registry reference (e.g. `ghcr.io/me/devenv:latest`)

## Flags

### `--from <FROM>`

Base image for the build (ignored with --image-dir)

### `--image-dir <IMAGE_DIR>`

Push an already-built OCI image layout (skip the build step)

### `--mount-point <MOUNT_POINT>`

Override in-image mount point (ignored with --image-dir)

### `--no-mise`

Don't embed the mise binary (ignored with --image-dir)

### `--tool <TOOL>`

Force the push tool (`auto`, `skopeo`, `crane`). Default `auto`

**Choices:**

- `auto`
- `skopeo`
- `crane`

**Default:** `auto`

Examples:

```
Build and push to GHCR:
$ mise oci push ghcr.io/me/devenv:latest

Push an image built earlier:
$ mise oci build -o ./img
$ mise oci push --image-dir ./img ghcr.io/me/devenv:v1

Force a specific push tool:
$ mise oci push --tool crane ghcr.io/me/devenv:latest
```

Auth:

```
mise shells out to skopeo (preferred) or crane; configure registry
credentials the usual way — `docker login`, `REGISTRY_AUTH_FILE`,
or `~/.config/containers/auth.json` for skopeo; `crane auth login`
for crane.
```
