pyro-mcp/CHANGELOG.md
Thales Maciel 407c805ce2 Clarify workspace-core as the chat-host onramp
Make the recommended MCP profile visible from the first help and docs pass without changing 3.x behavior.

Rework  help, top-level docs, public-contract wording, and shipped MCP/OpenAI examples so  is the recommended first profile while  stays the compatibility default for full-surface hosts.

Bump the package and catalog to 3.8.0, mark the roadmap milestone done, and add regression coverage for the new MCP help and docs alignment. Validation included uv lock, targeted profile/help tests, make check, make dist-check, and a real guest-backed  server smoke.
2026-03-13 11:23:51 -03:00

12 KiB

Changelog

All notable user-visible changes to pyro-mcp are documented here.

3.8.0

  • Repositioned the MCP/chat-host onramp so workspace-core is clearly the recommended first profile across pyro mcp serve --help, the README, install docs, first-run docs, and shipped MCP config examples.
  • Kept workspace-full as the default for 3.x compatibility, but rewrote the public guidance to frame it as the advanced/compatibility surface instead of the default recommendation.
  • Promoted the workspace-core OpenAI example and added a minimal chat-host quickstart near the top-level product docs so new integrators no longer need to read deep integration docs before choosing the right profile.

3.7.0

  • Added CLI handoff shortcuts with pyro workspace create --id-only and pyro workspace shell open --id-only so shell scripts and walkthroughs can capture identifiers without JSON parsing glue.
  • Added file-backed text inputs for pyro workspace file write --text-file and pyro workspace patch apply --patch-file, keeping the existing --text and --patch behavior stable while removing $(cat ...) shell expansion from the canonical flows.
  • Rewrote the top workspace walkthroughs, CLI help examples, and roadmap/docs around the new shortcut flags, and updated the real guest-backed repro/fix smoke to exercise a file-backed patch input through the CLI.

3.6.0

  • Added docs/use-cases/ with five concrete workspace recipes for cold-start validation, repro-plus-fix loops, parallel workspaces, untrusted inspection, and review/eval workflows.
  • Added real guest-backed smoke packs for those stories with make smoke-use-cases plus one make smoke-... target per scenario, all backed by the shared scripts/workspace_use_case_smoke.py runner.
  • Updated the main docs so the stable workspace walkthrough now points directly at the recipe set and the smoke packs as the next step after first-run validation.

3.5.0

  • Added chat-friendly shell reads with --plain and --wait-for-idle-ms across the CLI, Python SDK, and MCP server so PTY sessions can be fed back into a chat model without client-side ANSI cleanup.
  • Kept raw cursor-based shell reads intact for advanced clients while adding manager-side output rendering and idle batching on top of the existing guest/backend shell transport.
  • Updated the stable shell examples and docs to recommend workspace shell read --plain --wait-for-idle-ms 300 for model-facing interactive loops.

3.4.0

  • Added stable MCP/server tool profiles with vm-run, workspace-core, and workspace-full so chat hosts can expose only the right model-facing surface.
  • Added --profile to pyro mcp serve plus matching profile= support on Pyro.create_server() and the package-level create_server() factory.
  • Added canonical workspace-core integration examples for OpenAI Responses and MCP client configuration, and narrowed the workspace-core schemas so secrets, network policy, shells, services, snapshots, and disk tools stay out of the default persistent chat profile.

3.3.0

  • Added first-class workspace naming and discovery across the CLI, Python SDK, and MCP server with pyro workspace create --name/--label, pyro workspace list, pyro workspace update, Pyro.list_workspaces(), Pyro.update_workspace(), and the matching workspace_list / workspace_update MCP tools.
  • Added persisted name, key/value labels, and last_activity_at metadata to workspace create, status, reset, and update payloads, and surfaced compact workspace summaries from workspace list.
  • Tracked last_activity_at on real workspace mutations so humans and chat-driven agents can resume the most recently used workspace without managing opaque IDs out of band.

3.2.0

  • Added model-native live workspace file operations across the CLI, Python SDK, and MCP server with workspace file list|read|write so agents can inspect and edit text files without shell quoting tricks or host-side temp-file glue.
  • Added workspace patch apply for explicit unified text diff application under /workspace, with supported add/modify/delete patch forms and clear recovery guidance via workspace reset.
  • Kept file operations scoped to started workspaces and /workspace, while preserving the existing diff/export/snapshot/service/shell model around the stable workspace product.

3.1.0

  • Added explicit workspace lifecycle stop/start operations across the CLI, Python SDK, and MCP server so a persistent workspace can be paused and resumed without resetting /workspace, snapshots, or command history.
  • Added secondary stopped-workspace disk tools with raw ext4 export plus offline disk list and disk read inspection for guest-backed workspaces.
  • Scrubbed guest runtime-only paths such as /run/pyro-secrets, /run/pyro-shells, and /run/pyro-services before stopped-workspace disk export and offline inspection so those tools stay secondary to the stable workspace product without leaking runtime-only state.

3.0.0

  • Promoted the workspace-first product surface to stable across the CLI, Python SDK, and MCP server, with pyro run retained 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.x public 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, and egress+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 /workspace itself, 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 matching workspace_create MCP inputs.
  • Added per-call secret-to-environment mapping for workspace exec, workspace shell open, and workspace 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 /workspace across 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 matching snapshot_* MCP tools.
  • Added pyro workspace reset and Pyro.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 matching service_* 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 from workspace status without 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 matching workspace_export / workspace_diff MCP tools.
  • Captured an immutable create-time baseline for every new workspace so later workspace diff compares the live /workspace tree 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(), and shell_* 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_* to workspace_* across the CLI, Python SDK, and MCP server in one clean cut with no compatibility aliases.
  • Renamed create-time seeding from source_path to seed_path for workspace creation while keeping later workspace sync push imports on source_path.
  • Switched persisted local records from tasks/*/task.json to workspaces/*/workspace.json and updated the main docs/examples to the workspace-first language.

2.3.0

  • Added task sync push across 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_path for host directories and .tar / .tar.gz / .tgz archives.
  • Seeded task workspaces now persist workspace_seed metadata so later status calls report how /workspace was initialized.
  • Reused the task workspace model from 2.1.0 while 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, and task delete as 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 logs or the matching SDK/MCP methods.

2.0.1

  • Fixed the default pyro env pull path 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 pull and pyro run to make longer guest flows easier to follow from the CLI.
  • Corrected the Python lifecycle example and docs to match the current exec_vm / vm_exec auto-clean semantics.

2.0.0

  • Made guest execution fail closed by default; host compatibility execution now requires explicit opt-in with --allow-host-compat or allow_host_compat=True.
  • Switched the main CLI commands to human-readable output by default and kept --json for structured output.
  • Added default sizing of 1 vCPU / 1024 MiB across the CLI, Python SDK, and MCP tools.
  • Unified environment cache resolution across pyro, Pyro, and pyro 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 pyro CLI, Pyro SDK, 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.