New0.1.17 Mac · Windows · Linux written in Rust
8× faster than Docker.
Share your localhost publicly with one click.
Built from scratch in Rust, not on top of Docker's parts. Kiri runs Docker containers with one daemon. The docker CLI, Compose and the Docker API work as they do today.
The 8×: docker run takes 22 ms on Kiri and 178 ms on Docker Desktop (152 ms on Colima, 279 ms on OrbStack), every engine on 2 CPUs and 8 GB.
CPU and memory · 10 containers running
Sample One Apple-silicon Mac, one runtime at a time. Measured numbers replace these soon. Benchmarks →
Free, and in beta on Mac, Windows and Linux. Something broken or annoying? Tell us with Feedback in Kiri's window, and we fix it.
Works with what
you already use
dockerdocker composedocker buildx- Docker Engine API
- Docker Hub
- OCI images
ghcr.io- Dockerfiles
What's in it
Everything you'd reach for Docker Desktop for.
Containers were the start. Kiri now builds and scans images, runs Kubernetes and whole Linux machines, and puts any container on the internet with one click.
-
Containers and Compose
Every
dockercommand you use, Compose projects grouped in the window, and a page for each container with live logs, a shell and its files. -
Images from Docker Hub
Search Docker Hub from the window and watch each layer pull. amd64 images run through Rosetta.
-
Builds, with a scan
docker buildthrough BuildKit, a Builds view of every build, and a vulnerability scan of each image on its own page. -
Kubernetes
kiri k8s startgives you a k3s cluster in about 20 seconds, with Pods and Services in the window. kind runs too. -
Linux machines
kiri machine create dev --distro ubuntu: your user, sudo, and your Mac folders at the same paths. -
Share
A public link for any container on
runkiri.cloud, from the window orkiri share web. More. -
Names and HTTPS
Apps open at
web.kiri.local, Compose services atapi.myapp.kiri.local, with HTTPS from Kiri's own narrow certificate authority. -
Light on your Mac
Unused memory goes back while it runs, and the VM sleeps after a minute idle. The daemon stays around 15 MB; waking takes 0.15 s.
-
Move over in one go
Bring your images, volumes and containers from OrbStack or Docker Desktop, then switch
dockerto Kiri from the window.
Prefer the terminal?
The commands you already type.
With Kiri open, the ordinary docker command runs on Kiri, and kiri adds what Docker doesn't have: a name for every container, Kubernetes, Linux machines and a public link.
kiri run,kiri pswork like theirdockertwins.web.kiri.localhostreaches a container by name, no port to remember.kiri k8s startandkiri machine createfor a cluster or a Linux box.kiri share webputs it on the internet.
$ 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. $ kiri share web gives it a public link at web.runkiri.cloud.
docker command runs on Kiri.Getting started
From download to a public link in four steps.
-
Step 1
Install
Open the disk image and drag Kiri to Applications. It sets up
Download for Macdockerfor you. -
Step 2
Pull an image
Search Docker Hub in Images and press Pull, or:
docker pull nginx -
Step 3
Run a container
Press Run and give it a port. It starts in milliseconds.
docker run -p 80:80 nginx -
Step 4
Share
Press Share on the container for a public link, or:
kiri share 80
Compare
Same command, three routes.
OrbStack and Docker Desktop 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. Through the Docker API, a whole container lifecycle takes 3.1 ms.
Medians from one full run on one Apple Silicon Mac, every engine limited to 2 CPUs and 8 GB, all three through the same docker CLI with Docker's default bridge networking. Stops are drawn evenly; only the totals are figures. Windows has its own race.
Full benchmarks: p99s, the Docker API path and every raw figure
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 small Rust init as PID 1. The host and guest talk over vsock. Inside, the Kiri daemon creates each container with clone3. On Linux the same daemon runs on your own kernel with no VM at all, and on Windows it runs inside WSL2.
One VM, one daemonSee the numbers
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.
The app
A native app, not a web wrapper.
AppKit and the system WebKit on the Mac, Win32 and WebView2 on Windows, 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. On the Mac it brings your images and volumes over from OrbStack or Docker Desktop, and lives in the menu bar.
Download
Kiri for Mac is out.
Every number on this page was measured on it. Kiri sets up a kiri docker context and brings its own docker, Compose and buildx, so there's nothing else to install. Coming from OrbStack or Docker Desktop? Kiri brings your images and volumes over.
Then, in a new terminal:
$ docker run --rm hello-world
Same docker and docker compose you use today.