Freeze the current workspace-first surface as the stable 3.0 contract and reposition the landing docs, CLI help, and public contract around the stable workspace path after the one-shot proof. Bump the package and catalog compatibility to 3.0.0, add a dedicated workspace walkthrough tape/GIF, and mark the 3.0.0 roadmap milestone done while keeping runtime capability unchanged in this release. Validation: uv lock; UV_CACHE_DIR=.uv-cache make check; UV_CACHE_DIR=.uv-cache make dist-check; UV_CACHE_DIR=.uv-cache uv build; UV_CACHE_DIR=.uv-cache uvx --from twine twine check dist/*; built-wheel CLI smoke for pyro --help and pyro workspace --help; vhs validate plus rendered workspace-first-run.gif outside the sandbox because vhs crashes when sandboxed.
7.5 KiB
7.5 KiB
Changelog
All notable user-visible changes to pyro-mcp are documented here.
3.0.0
- Promoted the workspace-first product surface to stable across the CLI, Python SDK, and MCP
server, with
pyro runretained as the stable one-shot entrypoint. - Repositioned the main docs, help text, examples, and walkthrough assets around the stable workspace path: create, sync, exec or shell, services, snapshots/reset, diff/export, and delete.
- Froze the
3.xpublic contract around the current workspace surface without introducing new runtime capability in this release.
2.10.0
- Replaced the workspace-level boolean network toggle with explicit workspace network policies:
off,egress, andegress+published-ports. - Added localhost-only published TCP ports for workspace services across the CLI, Python SDK, and MCP server, including returned host/guest port metadata on service start, list, and status.
- Kept published ports attached to services rather than
/workspaceitself, so host probing works without changing workspace diff, export, shell, or reset semantics.
2.9.0
- Added explicit workspace secrets across the CLI, Python SDK, and MCP server with
pyro workspace create --secret/--secret-file,Pyro.create_workspace(..., secrets=...), and the matchingworkspace_createMCP inputs. - Added per-call secret-to-environment mapping for
workspace exec,workspace shell open, andworkspace service start, with secret values redacted from command output, shell reads, service logs, and persisted workspace logs. - Kept secret-backed workspaces guest-only and fail-closed while re-materializing persisted secret
files outside
/workspaceacross workspace creation and reset.
2.8.0
- Added explicit named workspace snapshots across the CLI, Python SDK, and MCP server with
pyro workspace snapshot *,Pyro.create_snapshot()/list_snapshots()/delete_snapshot(), and the matchingsnapshot_*MCP tools. - Added
pyro workspace resetandPyro.reset_workspace()so a workspace can recreate its full sandbox from the immutable baseline or one named snapshot while keeping the same identity. - Made reset a full-sandbox recovery path that clears command history, shells, and services while preserving the workspace spec, named snapshots, and immutable baseline.
2.7.0
- Added first-class workspace services across the CLI, Python SDK, and MCP server with
pyro workspace service *,Pyro.start_service()/list_services()/status_service()/logs_service()/stop_service(), and the matchingservice_*MCP tools. - Added typed readiness probes for workspace services with file, TCP, HTTP, and command checks so long-running processes can be started and inspected without relying on shell-fragile flows.
- Kept service state and logs outside
/workspace, and surfaced aggregate service counts fromworkspace statuswithout polluting workspace diff or export semantics.
2.6.0
- Added explicit host-out workspace operations across the CLI, Python SDK, and MCP server with
pyro workspace export,Pyro.export_workspace(),pyro workspace diff,Pyro.diff_workspace(), and the matchingworkspace_export/workspace_diffMCP tools. - Captured an immutable create-time baseline for every new workspace so later
workspace diffcompares the live/workspacetree against that original seed state. - Kept export and diff separate from command execution and shell state so workspaces can mutate, be inspected, and copy results back to the host without affecting command logs or shell sessions.
2.5.0
- Added persistent PTY shell sessions across the CLI, Python SDK, and MCP server with
pyro workspace shell *,Pyro.open_shell()/read_shell()/write_shell()/signal_shell()/close_shell(), andshell_*MCP tools. - Kept interactive shells separate from
workspace exec, with cursor-based merged output reads and explicit close/signal operations for long-lived workspace sessions. - Updated the bundled guest agent and mock backend so shell sessions persist across separate
calls and are cleaned up automatically by
workspace delete.
2.4.0
- Replaced the public persistent-workspace surface from
task_*toworkspace_*across the CLI, Python SDK, and MCP server in one clean cut with no compatibility aliases. - Renamed create-time seeding from
source_pathtoseed_pathfor workspace creation while keeping laterworkspace sync pushimports onsource_path. - Switched persisted local records from
tasks/*/task.jsontoworkspaces/*/workspace.jsonand updated the main docs/examples to the workspace-first language.
2.3.0
- Added
task sync pushacross the CLI, Python SDK, and MCP server so started task workspaces can import later host-side directory or archive content without being recreated. - Reused the existing safe archive import path with an explicit destination under
/workspace, including host-side and guest-backed task support. - Documented sync as a non-atomic update path in
2.3.0, with delete-and-recreate as the recovery path if a sync fails partway through.
2.2.0
- Added seeded task creation across the CLI, Python SDK, and MCP server with an optional
source_pathfor host directories and.tar/.tar.gz/.tgzarchives. - Seeded task workspaces now persist
workspace_seedmetadata so later status calls report how/workspacewas initialized. - Reused the task workspace model from
2.1.0while adding the first explicit host-to-task content import path for repeated command workflows.
2.1.0
- Added the first persistent task workspace alpha across the CLI, Python SDK, and MCP server.
- Shipped
task create,task exec,task status,task logs, andtask deleteas an additive surface alongside the existing one-shot VM contract. - Made task workspaces persistent across separate CLI/SDK/MCP processes by storing task records on disk under the runtime base directory.
- Added per-task command journaling so repeated workspace commands can be inspected through
pyro task logsor the matching SDK/MCP methods.
2.0.1
- Fixed the default
pyro env pullpath so empty local profile directories no longer produce broken cached installs or contradictory "Pulled" / "not installed" states. - Hardened cache inspection and repair so broken environment symlinks are treated as uninstalled and repaired on the next pull.
- Added human-mode phase markers for
pyro env pullandpyro runto make longer guest flows easier to follow from the CLI. - Corrected the Python lifecycle example and docs to match the current
exec_vm/vm_execauto-clean semantics.
2.0.0
- Made guest execution fail closed by default; host compatibility execution now requires
explicit opt-in with
--allow-host-compatorallow_host_compat=True. - Switched the main CLI commands to human-readable output by default and kept
--jsonfor structured output. - Added default sizing of
1 vCPU / 1024 MiBacross the CLI, Python SDK, and MCP tools. - Unified environment cache resolution across
pyro,Pyro, andpyro doctor. - Kept the stable environment-first contract centered on
vm_run,pyro run, and curated OCI-published environments.
1.0.0
- Shipped the first stable public
pyroCLI,PyroSDK, and MCP server contract. - Replaced the old bundled-profile model with curated named environments.
- Switched distribution to a thin Python package plus official OCI environment artifacts.
- Published the initial official environment catalog on public Docker Hub.
- Added first-party environment pull, inspect, prune, and one-shot run flows.