Move a site between Ploy workspaces
Use your coding agent and Ploy CLI 0.12.0 or newer to copy a site and its dependencies into another workspace.
Verify the copy, move traffic when ready, and delete the original only after confirmation.
The Ploy agent inside a workspace cannot perform this transfer because it has access to one workspace. Run the procedure from your own coding agent with browser-backed CLI login.
Before you start
- Both workspaces must belong to the same organization. Your account needs admin or owner access to both.
- Run
ploy update, checkploy --version, and sign in withploy login. Workspace API tokens cannot perform cross-workspace operations. Organizations requiring SSO are currently unsupported. - Identify both workspace IDs and the source site ID. Keep the original until the destination is verified.
- If the site writes to a database, arrange a write freeze for all consumers while copying and until cutover, or use a separately verified reconciliation plan. Database copies do not synchronize later writes.
Use the Ploy site skill
Install the public Ploy site skill (ploy-site) in the project where you run your coding agent:
npx skills add Ploy-AI/ploy-toolsThen ask your agent:
Use the ploy-site skill and its workspace transfer procedure to copy site <site-id> from workspace <source-id> to workspace <destination-id>. Inventory the code, unpublished work, databases, assets, environment, forms and documents. Show preservation gaps before writing. Validate the destination yourself, then let me verify before moving traffic or deleting the original.
The skill's workspace transfer procedure is the step-by-step reference for your agent, including dependency checks, CLI commands, and recovery steps. You can also give that link directly to your agent. Install the Ploy CLI separately. CLI 0.12.0's ploy skills init installs a different, site-specific skill bundle.
What the procedure covers
| Resource | Transfer behavior |
|---|---|
| Site code | Import committed source into a new site and preserve unpublished edits separately. Original Git and deployment histories are not moved. |
| Databases | Copy schema and records into an independent database. Create a new access key and update destination references. FILE columns are unsupported. |
| Assets | Copy the public-library assets used by the site, preserve shared source assets, and update destination URLs. Tracked public files travel with code. |
| Variables and secrets | Copy each deployment environment. Replace source database credentials before publishing. |
| Forms | Copy captured submissions and, optionally, notification settings without sending email. Verify new submissions at the destination. |
| Documents | Copy relevant Markdown and repair resource links. Comments, history, attachments, and connected integrations need separate handling. |
| Custom domains | Move the selected domain and its apex or WWW companion only after the destination passes verification. Verify routing and TLS. |
Validate before cleanup
Test routes, mobile layout, images, database reads and writes, integrations, and form persistence on the published destination. New database access keys are created under Database options → Access keys → Create access key and bound with ploy secret set through stdin or its masked prompt.
The procedure uses separate copy and delete commands. There is no single atomic transfer. Deleting a site preserves workspace-library assets and databases. Delete a source database only when no remaining consumer uses it. Keep required backups and history before approving cleanup.
If you need unchanged site identity, deployment history, private database files, a transfer between organizations, or help resolving a failed operation, contact Ploy support before removing the source.
Recovery
If a new workspace's default site remains unprovisioned and Git clone fails, inspect its state. Import into one new site with site init --from and record the unused empty default for approved cleanup.
For HTTP 429, honor Retry-After. If it is absent, pause requests on that token for 60 seconds, then resume existing operation IDs and keys. Always check exit status and response content before comparing output files.
Keep going
- Check the complete CLI contract for global options, environment variables, saved state, and exit codes.
- Bring an existing Astro repository into Ploy using the supported toolchain and publish contract.
- Manage workspaces and sites, including domains, routing, publishing, and Code Sync.
- Move a site between workspaces with dependency checks, destination validation, traffic cutover, and separate cleanup.
- Equip local agents with Ploy skills and inspect a site's design-system context.
- Run the CLI from remote agents and CI with API tokens and non-interactive commands.
