Repository navigation
feat(runtime-vm): per-agent runtime and a smolvm VM runtime (ZOD109 cycle 1) - #127
Merged
Merged
Conversation
This was referenced Oct 9, 2026
…ycle 1) Agents may set their own `runtime:` (local | docker | podman | vm), inheriting the workforce value otherwise. `runtime: vm` runs the agent's ACP process in its own smolvm microVM, booted from an OCI image, with the workdir as its only host mount (read-only at /workspace) and no network. The daemon creates/starts each vm agent's machine at startup, recreates it when its vm: settings change, refuses a workdir holding secret files, and stops (not deletes) it on shutdown. vm agents get no context tools yet. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
orivibes
force-pushed
the
feat/zod109-vm-runtime
branch
from
October 13, 2026 21:33
455bf5b to
b290fb6
Compare
orivibes
added this pull request to stack #139
October 13, 2026 21:34
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.
Part of #109 (cycle 1 of 2; cycle 2, the unattended smoke tester, completes it).
What
runtime:. Each agent can setruntime: local | docker | podman | vm, and inherits the workforce value when it doesn't.--runtimenow sets only the workforce default. Container rules now follow each agent's resolved runtime: acontainer:block on a vm agent is rejected, a workforcecontainer:block is allowed only when some agent runs in a container, and one workforce can use docker or podman but not both.@zooid/runtime-vm. A new package that runs aruntime: vmagent's ACP process in its own smolvm microVM, oversmolvm machine exec -i:vm.image, or the preset's image if that isn't set./workspace, and it is the only host mount.--net, so the guest has no network.vm:takesimage,cpus,memory,disk.provisionVms). It recreates a machine when itsvm:settings hash changes, refuses to start if a vm workdir holds.env*,.dev.vars*or.claude/settings.local.json, and stops the machine (without deleting it) on shutdown. Image prepull now covers only container agents.socket=(unavailable: runtime vm has no host socket…).Spike (Phase 0, smolvm 1.25.2)
SIGTERM: kills the guest process.:romount: stays read-only even after a successfulremount,rwas root, because smolvm enforces it host-side.docker runhung.The full table is in the PLAN.
The spike also turned up two things the plan didn't anticipate:
machine deleteneeds--force./workspace. Our mount shadows it.Done criterion (manual, laptop)
Workforce:
lead(local, Claude) andvm-echo(vm,node:22-alpine), run withzooid dev.@vm-echo hellogot the in-thread replyecho: … (cwd /workspace, workdir read-only), and@leadanswered in the same room..envrefusal, recreate onmemorychange, and stop-not-delete.Note for review:
test:vm, nottest:infraThe integration tier script is named
test:vm. CI's requiredtest-infrajob runspnpm -r test:infraon Linux runners, which have no smolvm. The suite would skip there, and the tier guard fails a skipped suite. To run it locally:pnpm -C packages/runtime-vm test:vm.Tests
pnpm test,pnpm typecheck,pnpm build: all green.pnpm -C packages/runtime-vm test:vm: 5/5 against a real smolvm machine.🤖 Generated with Claude Code