Finish the 3.1.0 secondary disk-tools milestone so stable workspaces can be stopped, inspected offline, exported as raw ext4 images, and started again without changing the primary workspace-first interaction model. Add workspace stop/start plus workspace disk export/list/read across the CLI, SDK, and MCP, backed by a new offline debugfs inspection helper and guest-only validation. Scrub runtime-only guest state before disk inspection/export, and fix the real guest reliability gaps by flushing the filesystem on stop and removing stale Firecracker socket files before restart. Update the docs, examples, changelog, and roadmap to mark 3.1.0 done, and cover the new lifecycle/disk paths with API, CLI, manager, contract, and package-surface tests. Validation: uv lock; UV_CACHE_DIR=.uv-cache make check; UV_CACHE_DIR=.uv-cache make dist-check; real guest-backed smoke for create, shell/service activity, stop, workspace disk list/read/export, start, exec, and delete.
2 KiB
2 KiB
3.1.0 Secondary Disk Tools
Status: Done
Goal
Add stopped-workspace disk tools the vision explicitly places last, while keeping them secondary to the stable workspace identity.
Public API Changes
Shipped additions:
pyro workspace stop WORKSPACE_IDpyro workspace start WORKSPACE_IDpyro workspace disk export WORKSPACE_ID --output HOST_PATHpyro workspace disk list WORKSPACE_ID [PATH] [--recursive]pyro workspace disk read WORKSPACE_ID PATH [--max-bytes N]- matching Python SDK methods:
stop_workspacestart_workspaceexport_workspace_disklist_workspace_diskread_workspace_disk
- matching MCP tools:
workspace_stopworkspace_startworkspace_disk_exportworkspace_disk_listworkspace_disk_read
Implementation Boundaries
- keep these tools scoped to stopped-workspace inspection, export, and offline workflows
- do not replace shell, exec, services, diff, export, or reset as the main interaction model
- prefer explicit stopped-workspace or offline semantics
- require guest-backed workspaces for
workspace disk * - keep disk export raw ext4 only in this milestone
- scrub runtime-only guest paths such as
/run/pyro-secrets,/run/pyro-shells, and/run/pyro-servicesbefore offline inspection or export
Non-Goals
- no drift into generic image tooling identity
- no replacement of workspace-level host crossing
- no disk import
- no disk mutation
- no create-from-disk workflow
Acceptance Scenarios
- inspect or export a stopped workspace disk for offline analysis
- stop a workspace, inspect
/workspaceoffline, export raw ext4, then start the same workspace again without resetting/workspace - verify secret-backed workspaces scrub runtime-only guest paths before stopped-disk inspection
Required Repo Updates
- docs that clearly mark disk tools as secondary
- examples that show when disk tools are faster than a full boot
- real smoke coverage for at least one offline inspection flow