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.
Kiri 0.1.0 · Apple silicon · written in Rust
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.
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.
docker command runs on Kiri.Compare
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.
Five hops. One shim process stays resident for every running container.
The same five hops, and a shim per running container.
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.
Full benchmarks: p99s, the Docker API path and every raw figure
How it works
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.
One VM serves every container. Cold boot to ready takes 112 ms, down from 810 ms on a stock kernel.
Requests cross one vsock channel into the VM, not a chain of Unix sockets. A round trip takes 31 µs.
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
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.
clone3 on your kernelContainers
No containers yet
Containers you start with docker run or Compose show up here, with the kiri context.
Later
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
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
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.
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