Kiri 0.1.0 · Apple silicon · written in Rust

The container runtime
that does less.

Kiri runs Docker containers on your Mac with one small VM and one Rust daemon. No dockerd, no containerd, no shims, no runc. The docker CLI, Compose and the Docker API work as they do today.

14.2 ms Measured

for docker run --rm alpine true, start to finish, through the same docker CLI. Docker Desktop takes 243.3 ms, OrbStack 442.2 ms. p50 of 30 runs on one Mac.

$ kiri run --rm alpine echo "kiri" prints kiri. $ kiri run -d --name web nginx prints a container ID. $ kiri ps lists the running web container. $ curl http://web.kiri.localhost reaches it by name, with no port to remember. $ docker ps shows the same container, because Kiri answers the Docker API.

Illustrative session. With Kiri open, the ordinary docker command runs on Kiri.

Compare

Same command, three routes.

Docker Desktop and OrbStack pass every container start through five programs, each with its own socket. Kiri passes it through one daemon that calls the kernel itself. Same docker command on all three.

docker run --rm alpine true
OrbStackMeasured0 ms

Five hops. One shim process stays resident for every running container.

Docker DesktopMeasured0 ms

The same five hops, and a shim per running container.

KiriMeasured0 ms

One daemon creates namespaces, cgroups and mounts itself. Nothing per container is left running. Most of this time is the docker CLI starting up; Kiri's own part is about 2.5 ms.

p50 of 30 runs on one Apple Silicon Mac, all three through the same docker CLI with Docker's default bridge networking. Stops are drawn evenly; only the totals are figures.

How it works

One small VM. One daemon. A socket between them.

On macOS, Kiri boots a single Linux VM through Apple's Virtualization.framework, with a custom kernel and a 360 KB Rust init as PID 1. The host and guest talk over vsock. Inside, the Kiri daemon creates each container with clone3.

Kiri architecture on macOS On the Mac host, the kiri CLI, the Docker CLI and later stormglass talk to the kiri host process, which runs the VM through Virtualization.framework. A vsock channel connects it to the Linux guest, where kiri-init is PID 1 and the kiri daemon creates containers with clone3. macOS host stormglass later docker / kiri CLI kiri hostDocker API socket · 409 KB Virtualization.framework One VM for every container. No per-container process on the host. vsock 31 µs round trip, p50 Linux VM custom minimal kernel kiri-init · PID 1 · 360 KB kiri daemon clone3 containers: namespaces + cgroup + overlay Kiri architecture on macOS: host, vsock, Linux VM with kiri-init, kiri daemon and containers macOS host stormglass later docker / kiri CLI kiri hostDocker API socket · 409 KB Virtualization.framework vsock 31 µs p50 Linux VM custom minimal kernel kiri-init · PID 1 · 360 KB kiri daemon clone3 → containers

Boot once

One VM serves every container. Cold boot to ready takes 112 ms, down from 810 ms on a stock kernel.

Talk directly

Requests cross one vsock channel into the VM, not a chain of Unix sockets. A round trip takes 31 µs.

Leave nothing behind

No process stays per container. OrbStack keeps a shim for each one: 143 running containers held 1.13 GB in shims on our test Mac.

Measured on one Apple Silicon Mac. Method and raw numbers are on the benchmarks page.

Mac app

A Mac app, not a web wrapper.

Built with AppKit and the system WebKit, so no Electron and no bundled browser. Manage containers, images, volumes, networks and Compose projects, with live stats, logs, a terminal and files for each container. Running apps open by name at myapp.kiri.local. It brings your images and volumes over from OrbStack or Docker Desktop, and lives in the menu bar.

  • macOSOne minimal Linux VM through Virtualization.framework
  • LinuxNative, no VM at all: the daemon calls clone3 on your kernel
  • WindowsInside WSL2, on the Linux kernel Windows already ships (experimental)

Containers

No containers yet

Containers you start with docker run or Compose show up here, with the kiri context.

Later

Inside stormglass

stormglass is a desktop client for Kubernetes. The plan is to ship Kiri inside it as the built-in Docker runtime, so its users get containers without installing anything else.

The name

Kiri means "a little"

It comes from the Igbo word ntakịrị, "small" or "a little". That is the whole idea: a little code, a little memory, a little time.

Install

Kiri 0.1.0 for Mac.

For Apple silicon Macs on macOS 14 or later. Open the disk image, drag Kiri to Applications and open it. Kiri sets up a kiri docker context and brings its own docker, Compose and buildx, so nothing else needs installing.

Download Kiri 0.1.0 All downloads

Or from Terminal:

$ curl -fsSL https://runkiri.com/install.sh | bash

Then, in a new window:

$ kiri run --rm hello-world
Signed and notarized by Apple · 45 MB