Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.