A lightweight, OrbStack-style runtime that boots a Linux VM with Apple's Virtualization.framework — then projects the Docker engine, file sharing, x86 translation and port mapping straight onto macOS. No Docker Desktop.
Named for the Oort cloud — the vast shell of countless small icy bodies at the edge of our solar system. Here: the many lightweight machines & sandboxes orbiting one shared kernel.
oort studies why OrbStack is fast and light, then reimplements the core mechanisms by hand. One command to start; the stock docker CLI just works.
oort suspend freezes the whole VM; the next start resumes in ~1.2 s with containers still running. OrbStack cold-boots.
https://web.oort.local just works — any container, any port, per-name certs from a local CA. No -p publishing.
The guest's and every machine's live filesystem, browsable and read-write from macOS — no sudo, no kexts.
mac command ✓Run Mac commands from any Linux shell: mac open https://…, mac pbpaste. Output and exit codes round-trip.
snapshot / restore / fork a whole Linux machine — git for dev environments. OrbStack can't.
oort mcp gives coding agents disposable machines with snapshot-on-risk and fork-to-explore — built on time-travel.
dockerd projected onto a macOS socket; the stock CLI works via an auto-selected oort docker context.
ssh oort on a stable localhost port; pick host "oort" in VS Code Remote-SSH and develop inside.
Guest TRIM punches APFS holes on the Mac — freed space returns automatically (daily) or on demand.
--platform linux/amd64 images run via Apple's Rosetta translation — far faster than QEMU.
One command runs k3s in the guest and projects the kube API onto localhost:6443.
Kernel-tier memory efficiency: zram swap plus an active balloon that returns idle RAM to macOS.
docker run in four steps.Requires macOS 13+ on Apple Silicon. The CLI is oort (so it never clashes with OrbStack's own orb).
The app is self-contained: first start downloads the Ubuntu image and builds the golden disk under ~/.oort, automatically.
$ brew install qemu # one external tool (image conversion) $ brew install --cask everettjf/tap/oort # hackers: git clone https://github.com/everettjf/oort && ./oort build-image
Boots Docker, file sharing, Rosetta and port forwarding. A reused golden disk is ready in seconds.
$ ./oort start starting oort VM… waiting for Docker.... ready. $ eval "$(./oort env)" # export DOCKER_HOST=unix://~/.oort/docker.sock
It's just Docker. Run containers, publish ports, even run x86-64 images via Rosetta.
$ docker run --rm hello-world Hello from Docker! $ docker run -p 8080:80 nginx # curl localhost:8080 on the Mac $ docker run --platform linux/amd64 alpine uname -m x86_64 # via Rosetta
Spin up named Linux machines, or bring up a k3s cluster with a single command.
$ oort machine create dev ubuntu # named Linux machine $ oort machine shell dev $ oort k8s enable # k3s in the guest $ kubectl get nodes NAME STATUS ROLES AGE VERSION oort Ready control-plane,master 12s v1.30…
Builds a VZVirtualMachineConfiguration — virtio-blk root disk, NAT net, vsock, VirtioFS, Rosetta share, memory balloon — and owns the lifecycle on a dedicated VM queue.
Each host Unix socket is a tunnel to a guest vsock port: dockerd on 2375, the exec agent on 2376, TCP forwards on 2377.
A tiny static linux/arm64 binary splices the Docker socket, runs oort exec commands, and forwards published ports — steady under load where Python wasn't.
An exclusive flock on the disk image stops two VMs corrupting it; graceful-only shutdown; oort reset restores the golden snapshot instantly.
Everything above is verified on real hardware by a 32-test end-to-end suite — boot, Docker, domains + HTTPS, ssh, Finder fs, the mac command, suspend/resume with surviving containers, time-travel, MCP sandboxes, and self-healing watchdogs for wedged daemons. Cold start ~4.5 s (stock kernel) / ~2.8 s (self-built); resume ~1.2 s.
Known residual: bind-mount metadata speed (VirtioFS is 8–35× slower per-file than the guest disk; real npm install is only ~1.2× — oort fastvol covers the hot paths). Matching OrbStack's general virtiofs speed needs a custom VMM — deliberately deferred. See the roadmap.
brew install --cask everettjf/tap/oort — you're one oort start away.