feat: add Multipass provider#197
Conversation
|
Codex review: needs changes before merge. Reviewed June 2, 2026, 8:28 AM ET / 12:28 UTC. Summary Reproducibility: yes. From source, a stopped unclaimed Multipass instance reaches Review metrics: 2 noteworthy metrics.
Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Copy recommended automerge instructionNext step before merge
Security Review findings
Review detailsBest possible solution: Land the Multipass provider only after cleanup deletes only claimed or explicitly Crabbox-owned instances and regression tests cover unrelated local VMs. Do we have a high-confidence way to reproduce the issue? Yes. From source, a stopped unclaimed Multipass instance reaches Is this the best way to solve the issue? No. The provider direction is viable, but cleanup needs a narrow ownership guard and regression coverage before the implementation is safe to merge. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model gpt-5.5, reasoning high; reviewed against 1c7342d1c002. Label changesLabel justifications:
Evidence reviewedAcceptance criteria:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
From https://x.com/_lopopolo/status/2061613371883954430 adding multipass as a provider for crabbox.
Summary
Adds
provider=multipassas a local Ubuntu VM SSH-lease provider backed by Canonical Multipass.multipass launchand Crabbox cloud-initwarmup,run,ssh,status,stop,cleanup, portable--osimage defaults, and cache volumes--actions-runnerVerification
go test ./internal/providers/...go test ./internal/cli -run 'TestValidateActionsRunnerCapability|TestMultipass|TestConfigShow|TestPortableOS|TestExplicitProviderImagesSurvivePortableOSDefaults|TestAppleContainerImageFollowsOSImageDefault|TestAppleContainerExplicitImageSurvivesOSDefault|TestProviderFlag'go test ./internal/cli -run '^$'go build -trimpath -o bin/crabbox ./cmd/crabboxbin/crabbox providers --json | jq -r '.[] | select(.provider=="multipass")'bin/crabbox doctor --provider multipassbin/crabbox warmup --provider multipass --slug multipass-smokebin/crabbox run --provider multipass --id multipass-smoke -- sh -lc 'pwd && uname -a && test -d /work/crabbox && test -f go.mod && git --version && rsync --version >/dev/null && jq --version'bin/crabbox run --provider multipass --slug multipass-cache-smoke --multipass-cpus 2 --multipass-memory 2G --multipass-disk 10G --cache-volume mp-e2e-cache:/var/cache/crabbox/e2e -- sh -lc 'printf cache-ok > /var/cache/crabbox/e2e/probe && test "$(cat /var/cache/crabbox/e2e/probe)" = cache-ok'bin/crabbox warmup --provider multipass --actions-runner --ttl 1s --slug should-not-startexits before provisioning with the expected unsupported-provider errorbin/crabbox status --provider multipass --id multipass-smokebin/crabbox ssh --provider multipass --id multipass-smokebin/crabbox stop --provider multipass multipass-smokebin/crabbox cleanup --provider multipass --dry-runmultipass list --format jsongit diff --checkLive E2E Evidence
Multipass version:
Warmup provisioned:
Run/sync executed on the VM:
Cache-volume smoke passed: the provider launched
crabbox-multipass-cache-smoke-e0fd1aef, mounted the host cache directory, synced the checkout, wrote/read the mounted probe file, and released the ephemeral VM automatically.Unsupported actions-runner path fails before provisioning:
Final cleanup state:
{"list":[]}Notes
This is a headless provider, so there is no useful screenshot. The relevant proof is the terminal transcript above showing create, SSH readiness, sync, remote command execution, cache mount, unsupported runner rejection, stop, and empty final inventory.