GET STARTED
Quick start
This page takes you from a download to a running container in a few minutes. You need a Mac with Apple silicon (M1 or later) on macOS 14 Sonoma or later.
Install and open Kiri
-
Download Kiri from runkiri.com/download. The disk image is signed and notarized. It carries the
dockerCLI, Compose and buildx, so you don’t need anything else. (If you already have adockerCLI, Kiri Lite is the engine alone.) -
Drag Kiri to Applications and open it from there.
-
Let Kiri set itself up. The first time it opens, Kiri runs the same steps as
kiri setup, without asking:- adds a
kiridocker context that points at~/.kiri/run/docker.sock - adds a LaunchAgent,
dev.kiri.daemon, so the engine starts at login - puts
dockerandkiriin~/.kiri/binand adds that folder to the end of yourPATHin~/.zprofile(and bash’s or fish’s profile if you use them), so adockeryou already have keeps priority - makes
kiridocker’s default context, but only if there’s no other Docker engine on the Mac - creates a buildx builder,
kiri-build, sodocker buildruns on Kiri
- adds a
-
Choose how to reach your containers. The window asks once:
- localhost: by port, like
localhost:8080. Nothing to set up. - .kiri.local: by name, like
myapp.kiri.local, with no ports. macOS asks for an administrator password, once, so Kiri can add/etc/resolver/kiri.local. Kiri never sees the password.
You can change this later in Settings → Domains. Either way, every container also answers at
<name>.kiri.localhost, which needs no setup. - localhost: by port, like
Run your first container
Start nginx in the background and publish its port 80 on 8080:
$ docker run -d --name web -p 8080:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
Digest: sha256:…
Status: Downloaded newer image for nginx:latest
3f1c9a7e2b84d06c5e1fa0b2c7d9e4a1f6b3c8d2e5a7f9b1c4d6e8a0b2c4d6e8
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3f1c9a7e2b84 nginx "/docker-entrypoint.…" 4 seconds ago Up 3 seconds 0.0.0.0:8080->80/tcp webThe first docker command starts the VM if it’s asleep. That takes a fraction of a second.
Open it by name
The container is now on localhost:8080, and also at its name:
$ open http://web.kiri.localhost # always works
$ open http://web.kiri.local # if you chose .kiri.local
$ open http://localhost:8080 # by portYou don’t type a port. Kiri listens on port 80 on your Mac and sends web.kiri.local straight to the container’s own HTTP port, nginx’s 80 here, so a name works even without -p. See Domain names, and HTTPS for https:// on the same names.
Start a Compose project
Compose works as it does anywhere else. Save this as compose.yaml in a folder called shop:
services:
web:
image: nginx
ports:
- "8081:80"
redis:
image: redis:7
Then bring it up:
$ cd shop
$ docker compose up -d
[+] Running 3/3
✔ Network shop_default Created
✔ Container shop-redis-1 Started
✔ Container shop-web-1 Started
$ open http://web.shop.kiri.localEach Compose service answers at <service>.<project>.kiri.local. The project name is the folder’s name unless you set one. More in Compose.
See it in the window
Everything you start from the terminal appears in Kiri’s window straight away. The Compose project is one group you can start, stop or remove together. A container you can reach by name shows its address and an Open button. Click a container’s name for its details, live logs, a terminal and its files.
Containers
Close the window and Kiri stays in the menu bar. With nothing running, the VM sleeps after a minute and gives its memory back to macOS; the next docker command wakes it. See Memory and sleep.
Next
kiri command and its subcommands.© 2026 Kiri · runkiri.com