Native Rust · gpui + guise · Apple Containers

Docker,
without the Desktop.

On Apple silicon Macs running macOS 26 or later, Hopper runs your containers on Apple Containers, where every container is its own lightweight VM. Import from Docker brings your images across first.

Install Hopper → See it work brew install --cask wess/packages/hopper
Hopper dashboard showing running containers, image and CPU counts, and disk usage with a one-click cleanup.
Hopper v0.7.0 · connected to its own engine
One binary. No Electron, no browser. Apple's runtime. No Docker Desktop. Zero telemetry. Local by design. Apple silicon. macOS 26 or later.

The daily loop

Everything you reach for, rendered natively.

Containers, images, volumes, networks, and compose stacks. Apple Containers supports logs and inspect in the detail pane; Docker-compatible engines also offer stats, files, and an interactive shell.

Files

Pull a file out of a container.

Browse a container's filesystem in a real tree — sizes, modes, symlinks — and copy files out. The operation you reach for daily, that no Docker GUI made simple.

How the detail pane works →
The Files tab showing a container's root filesystem with directories, permissions, and file sizes.
Terminal

A shell that's actually a shell.

Interactive exec over a hijacked socket, with a real terminal model that interprets escape sequences — top, vim, and colour render, not garble.

Exec & terminal →
The Terminal tab with a live bash prompt inside a running container.
Stats

Live meters, not spinners.

CPU, memory (page-cache excluded, like Docker Desktop), network, block-IO, and PID counts stream in as fast as the daemon samples them.

Streaming internals →
The Stats tab showing live CPU, memory, network, block-IO, and PID meters.

The engine

Apple's runtime, driven properly.

macOS 26 ships a container runtime Apple maintains. Hopper installs it, starts it, and speaks to it — and is honest about the parts of Docker it does not have.

  1. Installs it for you

    If Apple's container is missing, Hopper fetches the package Apple signed and hands it to the system installer. Hopper never elevates.

  2. A VM per container

    Stronger isolation than a shared kernel, and on macOS 26 containers reach each other by name across isolated networks.

  3. Imports from Docker

    Copies your images, networks and containers out of Docker Desktop, Colima or Rancher Desktop. Nothing is removed from the source.

  4. Says what it cannot do

    Apple's runtime has no pause, rename, restart policy or healthchecks. Hopper hides those rather than offering a button that fails.

zsh — Apple Containers
# Apple's runtime has its own CLI, not a Docker Engine API socket
$ container --version
container CLI version 1.2.2

$ container system status --format json
{"status":"running", ...}

Parity, and then some

A real replacement — not a viewer.

Build with BuildKit

Dockerfiles with --mount=cache, secrets, and --platform, plus honest .dockerignore negations.

Registries, signed in

Push and pull with keychain-stored credentials; authenticated pulls lift Hub rate limits.

Compose stacks

Reconstructed from labels — stacks appear with no CLI, and start and stop label-driven.

Migrate in

Scan Docker Desktop, Colima, or Rancher and copy images, volumes, and networks over.

MCP server

A stdio Model Context Protocol server exposes Docker tools to AI clients.

Ship it

Keep Docker.
Lose the Desktop.