Skip to content

Releases

v0.4.0 — one-click: brew install, no repo, no manual image build

Choose a tag to compare

@everettjf everettjf released this 11 Jun 12:36

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.local resolve to ClusterIPs (routed via the net helper; rerun oort net install once 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

Choose a tag to compare

@everettjf everettjf released this 11 Jun 01:33

The "lives on your Mac" release — the boundary between the Linux VM and macOS mostly disappears. See CHANGELOG.md for details.

  • ~/Oort in 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.
  • mac command — 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 stable localhost:2222; oort ssh setup then 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

Choose a tag to compare

@everettjf everettjf released this 10 Jun 06:50

The "daily-driver" release. Highlights (see CHANGELOG.md for the full list):

  • Instant resume — oort suspend freezes the whole VM; the next oort start resumes 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.local domains — curl http://web.oort.local reaches 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.local just works.
  • Zero-config docker CLI — oort start registers and selects a oort docker context (never stealing a live engine); no more export 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 hi used 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_transport no 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

Choose a tag to compare

@everettjf everettjf released this 30 May 23:29

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

  • oort CLI — 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 via OORT_* env vars