Repository navigation
Releases
v0.4.0 — one-click: brew install, no repo, no manual image build
The "one-click" release. brew install --cask everettjf/tap/oort now delivers a fully self-contained app — first oort start downloads the Ubuntu cloud image and builds the golden disk under ~/.oort automatically. The only external tool is qemu-img (brew install qemu).
- Self-contained
oort.app— CLI, prebuilt engine + guest agent, cloud-init, net helper and MCP server all ship in the bundle; mutable data lives in~/.oort; repo checkouts keep working unchanged. Verified end-to-end from a pristine$HOME. - k8s service domains —
ksvc.k8s.oort.local/svc.ns.k8s.oort.localresolve to ClusterIPs (routed via the net helper; rerunoort net installonce to pick up the new route). - MCP
suspend_vm/resume_vm— AI agents can freeze the whole sandbox substrate (~1-2s) and resume it (~1s) with every process intact. - Suite: 33/33 end-to-end tests green on real hardware.
Note: the dmg is the slim build (provisioning downloads the Docker engine inside the guest on first run). For fully offline-deterministic provisioning, pre-stage share/docker-27.3.1.tgz — see docs/packaging.md.
🤖 Generated with Claude Code
v0.3.0 — oort lives on your Mac: Finder, mac command, ssh, disk reclaim
The "lives on your Mac" release — the boundary between the Linux VM and macOS mostly disappears. See CHANGELOG.md for details.
~/Oortin Finder —oort fs open: the guest's and every machine's live filesystem, browsable and read-write from macOS. In-agent NFS export, mounted with no sudo; auto-remounts across restarts/resume.maccommand — run Mac commands from any guest shell:mac open https://…,mac pbpaste,mac say done. Output and exit codes round-trip.oort ssh+ VS Code Remote-SSH — guest sshd on a stablelocalhost:2222;oort ssh setupthen pick host "oort" in VS Code.oort ssh <machine>shells into machines.- Disk space returns to macOS —
oort disk reclaim [--prune]+ a daily in-guest TRIM timer (VZ passes discards through as APFS hole-punches; 800M churn returns exactly 800M). - Fix: the "empty exec" agent starvation — suspend/resume stranded vsock connections in the guest (no RST ever comes); enough cycles starved the agent of fds while the heartbeat kept the watchdog happy. The engine now resets stale bridged connections on every start.
- Fix: golden images could bake a kernel that can't load its own modules — apt could upgrade kernel+modules to a newer rebuild of the same version mid-staging ("Unknown symbol", dockerd crash-loop). Staging now waits for dpkg to go quiet.
- Robustness sweep: stale disk-lock cleanup (orphaned VZ XPC), suspend agent-health gate, https helper hardening, deterministic provisioning with a pre-staged docker tarball.
Install: brew install --cask everettjf/tap/oort — note the app drives a local clone of this repo (oort build-image required), see docs/packaging.md.
🤖 Generated with Claude Code
v0.2.0 — instant resume, *.oort.local + HTTPS, zero-config docker CLI
The "daily-driver" release. Highlights (see CHANGELOG.md for the full list):
- Instant resume —
oort suspendfreezes the whole VM; the nextoort startresumes in ~1.2s with containers still running (cold boot ~4.4s; OrbStack cold-boots at ~1–2s). Note: resuming needs an unlocked session — macOS withholds the state decryption key while the screen is locked. *.oort.localdomains —curl http://web.oort.localreaches container "web" by name, any port, no-p. Containers, machines, compose services.- Trusted HTTPS —
oort https enable: local CA trusted once, per-name certs minted in-guest,https://web.oort.localjust works. - Zero-config docker CLI —
oort startregisters and selects aoortdocker context (never stealing a live engine); no moreexport DOCKER_HOST. - Sudo-free networking —
oort net install(one sudo, ever): a tiny validated root helper keeps the container route + resolver fresh automatically. oort debug <container>— toolbox shell into ANY container, even distroless (busybox joins its pid+net namespaces; target rootfs at/proc/1/root).- Fix: attach streams —
docker run --rm … echo hiused to print nothing through the projected socket; half-close propagation fixed it. - Fix: one stalled docker client could freeze ALL VM I/O — VZ's vsock device is one serial queue with a blocking writev; the relay now always drains it (bounded 32MiB buffer, kills only the offending connection).
- Fix: vsock dead on current noble cloud images —
vmw_vsock_virtio_transportno longer autoloads reliably (6.8.0-117); provisioning pins it.
Install: brew install --cask everettjf/tap/oort (dmg attached once notarization completes) — note the app drives a local clone of this repo (oort build-image required), see docs/packaging.md.
🤖 Generated with Claude Code
Oort v0.1.0
First public release.
Oort runs fast, lightweight Linux machines and sandboxes on macOS — many on one shared kernel. It pairs a Docker-ready VM with machine time-travel, AI-agent sandboxes, and env-as-code (oort.yaml).
Highlights
oortCLI —start,machine,snapshot,fastvol,doctor,gui, and more- Native SwiftUI app (
oort.app/.dmg) - Fast direct-kernel boot with a self-compiled, stripped kernel
- Opt-in user-space network stack (gvproxy)
- Fast bind-mounted projects via
oort fastvol - State under
~/.oort, configured viaOORT_*env vars