Keg. Download ↓
Apple Containerization 1.3.1 · Native macOS

Containers on
Apple Silicon.

The Docker Desktop replacement for macOS. Native SwiftUI. Hardware-level isolation. Sub-second boot. Open source forever.

macOS 26+ Tahoe M1 / M2 / M3 / M4 Apache 2.0
Fig. 01 — System dashboard, Keg for macOS SwiftUI · Virtualization.framework
Keg system dashboard in dark mode showing system status for Apple Containerization 1.3.1, CPU, memory, storage and API latency metrics, four running services, and disk usage ● 4 running 455 µs · container api latency
618ms
Container Start
55ms
Exec Latency
69MB
Idle Memory
437
Tests Passing
01

Everything you need.

Containers, images, networks, volumes, builds, Compose, Kubernetes — plus guided onboarding, a health score, port dashboard, embedded terminal, dev containers, an on-device agent, and a companion CLI. All native. All fast.

No. 01Boot

Sub-second Boot

618ms average container start. No daemon warmup, no shared VM spin-up. Each container boots its own micro-VM in under a second — 50× faster than Docker Desktop's cold start.

No. 02Isolation

Hardware Isolation

Per-container VMs via Virtualization.framework. Real hardware boundaries, not namespace tricks.

No. 03Footprint

69MB Idle

Docker Desktop idles at 500MB to 2GB. Keg gives you your RAM back.

No. 04Compat

Docker API

Full Engine API on a Unix socket at ~/.keg/docker.sock. docker ps, docker run, docker compose. It all works.

No. 05Stacks

Compose Orchestration

Dependency-ordered bring-up, per-service output, env vars, volumes, networks. Your compose files, zero changes.

No. 06Cluster

Kubernetes

One-click K8s cluster. kindest/node + kubeadm. kubectl ready in 90 seconds.

No. 07Health

Health Score

A single 0–100 score across every container, with per-container memory and CPU signals. Spot the one that needs attention at a glance.

No. 08Ports

Ports Dashboard

Every published port across every container in one table, with one-click localhost URLs. No more hunting for what bound 8080.

No. 09Tooling

Terminal & Dev Containers

Embedded shell with the container CLI wired in, merged multi-container log streams, and .devcontainer project support built in.

No. 10License

Open Source

Apache 2.0, free forever. No seat licenses, no feature gates, no telemetry.

No. 11Onboarding

Grows With You

Three experience levels — Getting Started, Comfortable, Full Control — with first-run quick starts (a 5-second demo, a web server) and inline help on every section.

No. 12Design

Plain Language, Labeled Actions

Every toolbar action carries its name, every disabled button explains itself, and status lives next to the thing it describes. You should never have to guess.

No. 13Agent

Cooper, the Built-in Agent

A built-in agent that answers questions and acts on your containers, images, and Compose stacks. It prefers Apple's on-device model — no account, nothing leaves the machine — and when Apple Intelligence is off or unavailable, Cooper runs on any OpenAI-compatible model instead: OpenAI, OpenRouter, Groq, or a fully local Ollama. Your API key never leaves the Mac's Keychain, and destructive actions need your approval in every mode.

No. 14CLI

keg Companion CLI

A terminal client installed straight from the app: ps, images, logs, exec, start/stop, doctor diagnostics — and keg:// deep links that open the app on the right section. No docker CLI required.

02

The grand tour.

Twelve real screens from the shipping app — light and dark mode, nothing mocked. A live three-service Compose stack, a cache container, and real logs.

03

Drop-in replacement.

Same CLI. Same Compose files. Same API. Just faster, lighter, and with real isolation.

Native CLIListing 01
# Run containers $ container run -d --name web -p 8080:80 nginx web # View logs $ container logs web "GET / HTTP/1.1" 200 # Exec into container $ container exec web cat /etc/nginx/nginx.conf worker_processes auto;
Docker CLI via KegListing 02
# Point Docker at Keg $ export DOCKER_HOST=unix://$HOME/.keg/docker.sock $ docker ps CONTAINER ID IMAGE STATUS PORTS a1b2c3d4e5f6 nginx Up 2m 0.0.0.0:8080->80 $ docker info Server: Keg (Apple Containerization)
04

Your compose files. Zero changes.

Dependency ordering, networks, volumes, port mapping, env vars. Keg's orchestrator handles it all.

docker-compose.ymlListing 03
services: web: image: nginx:latest ports: ["8080:80"] depends_on: [api] api: image: node:20-alpine environment: - DATABASE_URL=postgres://db/app depends_on: [db] db: image: postgres:16-alpine volumes: [pgdata:/var/lib/postgresql/data] volumes: pgdata:
LifecycleListing 04
# Or drive it from the Keg UI — Start Services $ docker compose up -d Compose up: shop ==> Service: db ==> Service: api ==> Service: web 3 of 3 services running. $ docker compose ps NAME SERVICE STATE shop-db-1 db running shop-api-1 api running shop-web-1 web running $ docker compose down
05

Local K8s. 90 seconds.

Full cluster inside an Apple Container. kubeadm, CNI, kubeconfig. Ready for kubectl.

01

Create Cluster

One click in Keg. kindest/node boots with kubeadm init.

kubectl get nodes NAME STATUS ROLES keg-k8s Ready control-plane
02

Deploy

Apply manifests. Deployments, services, configmaps, secrets.

kubectl apply -f deploy.yaml kubectl get pods nginx-abc12 1/1 Running
03

Scale & Update

Scale replicas, rolling updates, exec, logs. Full kubectl.

kubectl scale deploy nginx --replicas=3 kubectl set image deploy/nginx ... kubectl logs -f deploy/nginx
06

Numbers don't lie.

Benchmarked against Docker Desktop and OrbStack.

Docker DesktopOrbStackKeg
Runtimecontainerd in Linux VMcontainerd in Linux VMApple VMs
IsolationProcess-levelProcess-levelHardware
Boot time~30s~2s<1s
Idle RAM~2 GB~500 MB69 MB
Docker API✓✓✓
Compose✓✓✓
Kubernetes✓✓✓
Health score——✓
Dev containers✓—✓
On-device agent——✓
Native macOSElectronNative-ishSwiftUI
License$9/seat/moPaidApache 2.0

Built for Apple Silicon.
Open source, free forever.

Requires macOS 26 (Tahoe) and Apple Silicon (M1/M2/M3/M4).