Skip to content

v3 - #50

Merged
eshlox merged 8 commits into
mainfrom
v3
Jun 14, 2026
Merged

v3#50
eshlox merged 8 commits into
mainfrom
v3

Conversation

@eshlox

@eshlox eshlox commented Jun 14, 2026

Copy link
Copy Markdown
Owner

No description provided.

eshlox added 8 commits June 8, 2026 09:42
Add `dvm base`, a base-image workflow that bakes shared tooling once so
`dvm sync` boots a ready VM instead of re-provisioning Fedora every time:
`base init` scaffolds a Containerfile, `base build` builds a qcow2 in a
throwaway Lima builder VM via Podman and bootc-image-builder, and `base
status`/`base rm` manage the result. `sync` boots from the image when present
and falls back to `template:fedora` otherwise.

Harden the privileged builder path: normalize the host arch to Lima's
canonical form, reserve the `base`/builder instance names, pin the upstream
`DVM_BOOTC_BASE` and `DVM_BISC_IMAGE` images by digest, and add a weekly
`update-pins` workflow that opens a PR when a tracked digest changes. Remove
the global setup script in favor of the base Containerfile, add the
`DVM_VM_TYPE` passthrough knob, bump the version to 3.0.0-dev, and reframe the
docs examples around base-image layers vs per-VM setup.
On Apple Silicon macOS, default the Lima VM type to `vz` (Apple's
Virtualization framework) instead of leaving it empty and falling back to
QEMU. `vz` has lighter overhead and, more importantly, returns freed guest
memory to the host far better when many VMs run at once, which is the main
pain when reserved-memory VMs pile up on a laptop. The default is empty
elsewhere, and `DVM_VM_TYPE` in config still overrides (including `=qemu`).

Document the new default in the config and Lima references, and add a "Why
Lima, not Tart or Apple container" note: the isolation comes from per-project
VMs plus `--mount-none`, not the engine, and `vz` already rides the same
native hypervisor those tools use.
Add a container-per-project layer so one VM hosts many projects as rootless-podman containers instead of one VM per project, cutting RAM at high agent concurrency.

- dvm add <vm>/<project>: scaffold a project container under a VM
- dvm sync <vm> [/<project>]: build the dev-base and bring up project containers
- dvm sh <vm>/<project>: shell into a project container
- dvm base dev-init: dev-base Containerfile (tools baked once, shared by all)
- opt-in nesting (NESTED=1) for projects that run podman/compose

Increment 1+3 of design/container-projects-and-reset.md; ports/reset/rm next.
- dvm reset <vm>/<project> --yes [--keep-data]: recreate one container, siblings untouched
- dvm rm <vm>/<project> --yes [--keep-data] [--config]: remove a project container/volume
- PROJ_PORTS: publish to the VM loopback so Lima forwards the dev server to the Mac

Increment 2 of design/container-projects-and-reset.md.
Round out the container-per-project layer:

- ssh/cp/ls/stop/logs for <vm>/<project>; whole-VM 'reset <vm>'
- containers start on access and survive VM reboot (--restart + podman-restart)
- dev-base auto-rebuilds on change; shared packages.txt feeds VM + dev-base
- smoke.sh: stateful podman mock + full project-command coverage
- design doc refreshed to the shipped surface
Document and finalize the v3 surface: trust-tier pool VMs hosting
rootless-podman project containers (<vm>/<project>), dvm add, dvm reset,
dvm logs, the dev-base workflow, and the project forms of sync/sh/ssh/
cp/ls/stop/rm.

- New docs page: Trust tiers & project containers; wired into the sidebar.
- commands.md rewritten for the full v3 surface; config/base/security/
  index/quickstart updated for project.sh, dev-base, and the container
  boundary; README and landing page refreshed.
- Bump DVM_VERSION to 3.0.0; pin DVM_BOOTC_BASE/DVM_BISC_IMAGE digests.
- Fix cmd_add project.sh scaffold (ports are implemented; drop stray
  backtick command-substitution in the unquoted heredoc).
- smoke.sh asserts a semver instead of a -dev suffix.
@eshlox
eshlox merged commit be96038 into main Jun 14, 2026
2 checks passed
@eshlox
eshlox deleted the v3 branch June 14, 2026 14:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant