A native, lightweight macOS app for running Docker and Linux containers on Apple silicon — a
free, open-source alternative to OrbStack and Docker Desktop. Built in pure Swift/SwiftUI on top
of Apple's container / containerization stack, with full
Docker Engine API compatibility.
⭐ If Dory saves you memory (or money), please star the repo — it genuinely helps others find it.
- Standalone and lean. The default Shared VM backend runs one persistent Linux micro-VM for all your containers (OrbStack-style), instead of one VM per container — measured ~4.7× less memory than per-container VMs (2 containers: ~122 MB vs ~574 MB), with the gap widening as you add containers.
- Drop-in Docker API. Dory hosts a Docker-compatible socket at
~/.dory/dory.sock, so the realdockeranddocker composeCLIs drive it unchanged. - Native, not Electron. A single SwiftUI app — menu bar + main window, light and dark.
- Free and open source under the GPL-3.0.
- Containers — list with live Overview / Stats / Logs / Terminal / Env; create (image, ports, volumes, env); start / stop / restart / delete; exec into a shell.
- Images — pull, build (from a context folder), run, delete, prune, registry sign-in, and inspect (layers, entrypoint, exposed ports, env, labels).
- Volumes & Networks — create / delete / prune, browse volume contents, inspect networks (subnet, gateway, connected containers).
- Compose — open a
compose.yamlandup/down: variable interpolation +.env,depends_onordering, andservice_healthywaiting via exec health probes. - Kubernetes — one-click k3s in the shared VM,
kubectl apply, live pod list and health. - Linux machines — create / start / stop / delete Ubuntu, Debian, Fedora, or Alpine VMs.
- Networking —
localhostpublished ports, automatic*.dory.localdomains with local HTTPS (issued by a local CA), all consent-gated for system-wide install. - Migration — import images and containers from Docker Desktop / OrbStack.
See COMPATIBILITY.md for the honest, per-feature status matrix.
Dory selects a backend with the DORY_RUNTIME environment variable; all share one
ContainerRuntime protocol.
DORY_RUNTIME |
Backend | Model |
|---|---|---|
shared (default) |
Shared VM | One persistent dockerd-in-VM for all containers (OrbStack-style). Standalone — no Docker required. |
apple |
Apple container |
One lightweight micro-VM per container. |
docker |
Docker Engine API | Transparent proxy to an existing /var/run/docker.sock (Docker Desktop, OrbStack). A companion GUI, not a replacement. |
mock |
Mock | In-memory sample data for UI development. |
- macOS 26 (Tahoe) or later, on Apple silicon
- Xcode 27 or later (to build)
scripts/build.sh # compile-check
scripts/test.sh # full test suite
scripts/shot.sh # build, launch, and screenshot the windowOr open Dory.xcodeproj in Xcode and Run.
These need a one-time admin grant (the same one OrbStack asks for) and are run by you, never silently:
scripts/enable-networking.sh # *.dory.local domains + trust the local CA
scripts/enable-kubernetes.sh # bootstrap k3s in the shared VMbrew install --cask Augani/dory/dory…or download the latest notarized .app from Releases.
Dory.app (SwiftUI)
│
▼
ContainerRuntime protocol ──► { Shared VM · Apple container · Docker API · Mock }
│
├─ doryd shim Docker REST API over ~/.dory/dory.sock
├─ Compose engine YAML → dependency DAG → reconcile
├─ engine services health state machine · event synthesis · anon-volumes
└─ Net LocalCA (TLS) · DomainRouter (*.dory.local) · port forwarding
Everything is dependency-free — the HTTP / unix-socket transport, YAML parser, and Docker-API
client and server are all hand-rolled, so the build stays small and deterministic. The
Packages/ContainerizationEngine package links Apple's containerization framework to boot the
Linux VM in-process.
Contributions are welcome — see CONTRIBUTING.md.
GPL-3.0 © 2026 Dory contributors.
