From 6184226b32afbb56052b84b0d6290580f0de674b Mon Sep 17 00:00:00 2001 From: Sophia Witt Date: Tue, 4 Aug 2026 16:07:39 -0400 Subject: [PATCH 1/2] docs: redirect /sandboxes/quickstart to /sandboxes/getting-started Coding agents pointed at Porter sandboxes guess /sandboxes/quickstart (and /sandbox/quickstart) and 404. Redirect both to the actual intro page at /sandboxes/getting-started. Co-Authored-By: Claude Opus 4.8 --- mint.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/mint.json b/mint.json index ab1ffe06..11331daf 100644 --- a/mint.json +++ b/mint.json @@ -273,7 +273,9 @@ { "source": "/provision/changing-instance-types", "destination": "/cloud-accounts/node-groups" }, { "source": "/cli/v1-and-v2", "destination": "/cli/basic-usage" }, { "source": "/guides/fastapi/deploy-fastapi", "destination": "/applications/deploy/deploy-from-github-repo" }, - { "source": "/docs/advanced-nginx-settings", "destination": "/applications/configure/advanced-networking" } + { "source": "/docs/advanced-nginx-settings", "destination": "/applications/configure/advanced-networking" }, + { "source": "/sandboxes/quickstart", "destination": "/sandboxes/getting-started" }, + { "source": "/sandbox/quickstart", "destination": "/sandboxes/getting-started" } ], "footerSocials": { "twitter": "https://twitter.com/porterdotrun" From e56401624bb691cedd749b09c5b6d46f2d9d40c6 Mon Sep 17 00:00:00 2001 From: Sophia Witt Date: Tue, 4 Aug 2026 16:10:19 -0400 Subject: [PATCH 2/2] docs: consolidate all sandbox docs under /sandboxes prefix The sandbox guides lived under /sandboxes while the SDK subtree lived under singular /sandbox/sdk. That split is the lone singular prefix in the docs (every other section - applications, cloud-accounts, addons, integrations, preview-environments - is plural) and makes URLs hard to guess, especially for agents that learn one prefix and 404 on the other. Move sandbox/sdk/* to sandboxes/sdk/*, update all internal links and nav, and add redirects from every old /sandbox/* path to its /sandboxes/* equivalent so existing links keep working. Co-Authored-By: Claude Opus 4.8 --- mint.json | 31 +++++++++++++------ sandboxes/cli.mdx | 4 +-- sandboxes/getting-started.mdx | 4 +-- sandboxes/networking.mdx | 4 +-- sandboxes/overview.mdx | 12 +++---- {sandbox => sandboxes}/sdk/python/errors.mdx | 0 .../sdk/python/quickstart.mdx | 6 ++-- .../sdk/python/reference.mdx | 4 +-- {sandbox => sandboxes}/sdk/python/volumes.mdx | 6 ++-- .../sdk/typescript/errors.mdx | 0 .../sdk/typescript/quickstart.mdx | 6 ++-- .../sdk/typescript/reference.mdx | 4 +-- .../sdk/typescript/volumes.mdx | 6 ++-- 13 files changed, 50 insertions(+), 37 deletions(-) rename {sandbox => sandboxes}/sdk/python/errors.mdx (100%) rename {sandbox => sandboxes}/sdk/python/quickstart.mdx (95%) rename {sandbox => sandboxes}/sdk/python/reference.mdx (98%) rename {sandbox => sandboxes}/sdk/python/volumes.mdx (96%) rename {sandbox => sandboxes}/sdk/typescript/errors.mdx (100%) rename {sandbox => sandboxes}/sdk/typescript/quickstart.mdx (94%) rename {sandbox => sandboxes}/sdk/typescript/reference.mdx (98%) rename {sandbox => sandboxes}/sdk/typescript/volumes.mdx (96%) diff --git a/mint.json b/mint.json index 11331daf..75ac3581 100644 --- a/mint.json +++ b/mint.json @@ -138,19 +138,19 @@ { "group": "Python", "pages": [ - "sandbox/sdk/python/quickstart", - "sandbox/sdk/python/volumes", - "sandbox/sdk/python/reference", - "sandbox/sdk/python/errors" + "sandboxes/sdk/python/quickstart", + "sandboxes/sdk/python/volumes", + "sandboxes/sdk/python/reference", + "sandboxes/sdk/python/errors" ] }, { "group": "TypeScript", "pages": [ - "sandbox/sdk/typescript/quickstart", - "sandbox/sdk/typescript/volumes", - "sandbox/sdk/typescript/reference", - "sandbox/sdk/typescript/errors" + "sandboxes/sdk/typescript/quickstart", + "sandboxes/sdk/typescript/volumes", + "sandboxes/sdk/typescript/reference", + "sandboxes/sdk/typescript/errors" ] } ] @@ -275,7 +275,20 @@ { "source": "/guides/fastapi/deploy-fastapi", "destination": "/applications/deploy/deploy-from-github-repo" }, { "source": "/docs/advanced-nginx-settings", "destination": "/applications/configure/advanced-networking" }, { "source": "/sandboxes/quickstart", "destination": "/sandboxes/getting-started" }, - { "source": "/sandbox/quickstart", "destination": "/sandboxes/getting-started" } + { "source": "/sandbox/quickstart", "destination": "/sandboxes/getting-started" }, + { "source": "/sandbox/overview", "destination": "/sandboxes/overview" }, + { "source": "/sandbox/getting-started", "destination": "/sandboxes/getting-started" }, + { "source": "/sandbox/networking", "destination": "/sandboxes/networking" }, + { "source": "/sandbox/capacity", "destination": "/sandboxes/capacity" }, + { "source": "/sandbox/cli", "destination": "/sandboxes/cli" }, + { "source": "/sandbox/sdk/python/quickstart", "destination": "/sandboxes/sdk/python/quickstart" }, + { "source": "/sandbox/sdk/python/volumes", "destination": "/sandboxes/sdk/python/volumes" }, + { "source": "/sandbox/sdk/python/reference", "destination": "/sandboxes/sdk/python/reference" }, + { "source": "/sandbox/sdk/python/errors", "destination": "/sandboxes/sdk/python/errors" }, + { "source": "/sandbox/sdk/typescript/quickstart", "destination": "/sandboxes/sdk/typescript/quickstart" }, + { "source": "/sandbox/sdk/typescript/volumes", "destination": "/sandboxes/sdk/typescript/volumes" }, + { "source": "/sandbox/sdk/typescript/reference", "destination": "/sandboxes/sdk/typescript/reference" }, + { "source": "/sandbox/sdk/typescript/errors", "destination": "/sandboxes/sdk/typescript/errors" } ], "footerSocials": { "twitter": "https://twitter.com/porterdotrun" diff --git a/sandboxes/cli.mdx b/sandboxes/cli.mdx index 7da27887..b0e81ccf 100644 --- a/sandboxes/cli.mdx +++ b/sandboxes/cli.mdx @@ -466,5 +466,5 @@ porter sandbox volume delete my-data - [Sandboxes Overview](/sandboxes/overview) - [Sandboxes Getting Started](/sandboxes/getting-started) -- [Python Sandbox SDK quickstart](/sandbox/sdk/python/quickstart) -- [TypeScript Sandbox SDK quickstart](/sandbox/sdk/typescript/quickstart) +- [Python Sandbox SDK quickstart](/sandboxes/sdk/python/quickstart) +- [TypeScript Sandbox SDK quickstart](/sandboxes/sdk/typescript/quickstart) diff --git a/sandboxes/getting-started.mdx b/sandboxes/getting-started.mdx index b32d52d5..f47b4f3c 100644 --- a/sandboxes/getting-started.mdx +++ b/sandboxes/getting-started.mdx @@ -321,5 +321,5 @@ sandbox = porter.sandboxes.create( - Use [Sandbox Networking](/sandboxes/networking) to serve sandboxes over HTTPS on your own domains. - Use [the sandbox CLI guide](/sandboxes/cli) to list, inspect logs, exec into, and terminate sandboxes. -- Use the [Python Sandbox SDK quickstart](/sandbox/sdk/python/quickstart) for Python services. -- Use the [TypeScript Sandbox SDK quickstart](/sandbox/sdk/typescript/quickstart) for Node.js and TypeScript services. +- Use the [Python Sandbox SDK quickstart](/sandboxes/sdk/python/quickstart) for Python services. +- Use the [TypeScript Sandbox SDK quickstart](/sandboxes/sdk/typescript/quickstart) for Node.js and TypeScript services. diff --git a/sandboxes/networking.mdx b/sandboxes/networking.mdx index bc30a172..3fb39589 100644 --- a/sandboxes/networking.mdx +++ b/sandboxes/networking.mdx @@ -191,5 +191,5 @@ console.log(`https://${status.host}`); ## Next steps - [Sandboxes Getting Started](/sandboxes/getting-started) -- [Python Sandbox SDK reference](/sandbox/sdk/python/reference) -- [TypeScript Sandbox SDK reference](/sandbox/sdk/typescript/reference) +- [Python Sandbox SDK reference](/sandboxes/sdk/python/reference) +- [TypeScript Sandbox SDK reference](/sandboxes/sdk/typescript/reference) diff --git a/sandboxes/overview.mdx b/sandboxes/overview.mdx index 5956ceda..c5d4f1c6 100644 --- a/sandboxes/overview.mdx +++ b/sandboxes/overview.mdx @@ -64,8 +64,8 @@ Names are the canonical way to refer to sandboxes and volumes in the SDK and CLI Your application creates and manages sandboxes with a Sandbox SDK. For now, we recommend deploying that application as a Porter Application in the same AWS cluster where you want to run sandboxes. -- [Python Sandbox SDK quickstart](/sandbox/sdk/python/quickstart) -- [TypeScript Sandbox SDK quickstart](/sandbox/sdk/typescript/quickstart) +- [Python Sandbox SDK quickstart](/sandboxes/sdk/python/quickstart) +- [TypeScript Sandbox SDK quickstart](/sandboxes/sdk/typescript/quickstart) ## Use the CLI for operations @@ -88,13 +88,13 @@ A sandbox that opens a port can be served over HTTPS on a hostname under your ow Volumes provide persistent storage that can be mounted into sandboxes at launch. Create a volume first, then pass `volume_mounts` when creating a sandbox. -- [Python Sandbox SDK volumes](/sandbox/sdk/python/volumes) -- [TypeScript Sandbox SDK volumes](/sandbox/sdk/typescript/volumes) +- [Python Sandbox SDK volumes](/sandboxes/sdk/python/volumes) +- [TypeScript Sandbox SDK volumes](/sandboxes/sdk/typescript/volumes) - [Sandbox CLI volume commands](/sandboxes/cli#porter-sandbox-volume) ## Next steps - [Sandboxes Getting Started](/sandboxes/getting-started) - [Sandbox Networking](/sandboxes/networking) -- [Python Sandbox SDK quickstart](/sandbox/sdk/python/quickstart) -- [TypeScript Sandbox SDK quickstart](/sandbox/sdk/typescript/quickstart) +- [Python Sandbox SDK quickstart](/sandboxes/sdk/python/quickstart) +- [TypeScript Sandbox SDK quickstart](/sandboxes/sdk/typescript/quickstart) diff --git a/sandbox/sdk/python/errors.mdx b/sandboxes/sdk/python/errors.mdx similarity index 100% rename from sandbox/sdk/python/errors.mdx rename to sandboxes/sdk/python/errors.mdx diff --git a/sandbox/sdk/python/quickstart.mdx b/sandboxes/sdk/python/quickstart.mdx similarity index 95% rename from sandbox/sdk/python/quickstart.mdx rename to sandboxes/sdk/python/quickstart.mdx index c4a4b0b2..7e3b9891 100644 --- a/sandbox/sdk/python/quickstart.mdx +++ b/sandboxes/sdk/python/quickstart.mdx @@ -137,7 +137,7 @@ async with AsyncPorter() as porter: ## Next steps -- [Python Sandbox SDK reference](/sandbox/sdk/python/reference) -- [Python Sandbox SDK volumes](/sandbox/sdk/python/volumes) -- [Python Sandbox SDK errors](/sandbox/sdk/python/errors) +- [Python Sandbox SDK reference](/sandboxes/sdk/python/reference) +- [Python Sandbox SDK volumes](/sandboxes/sdk/python/volumes) +- [Python Sandbox SDK errors](/sandboxes/sdk/python/errors) - [Sandboxes getting started](/sandboxes/getting-started) diff --git a/sandbox/sdk/python/reference.mdx b/sandboxes/sdk/python/reference.mdx similarity index 98% rename from sandbox/sdk/python/reference.mdx rename to sandboxes/sdk/python/reference.mdx index 33bd56f0..dcabf3f6 100644 --- a/sandbox/sdk/python/reference.mdx +++ b/sandboxes/sdk/python/reference.mdx @@ -192,5 +192,5 @@ Use these only when you need an endpoint that is not wrapped by the ergonomic SD ## Next steps -- [Python Sandbox SDK volumes](/sandbox/sdk/python/volumes) -- [Python Sandbox SDK errors](/sandbox/sdk/python/errors) +- [Python Sandbox SDK volumes](/sandboxes/sdk/python/volumes) +- [Python Sandbox SDK errors](/sandboxes/sdk/python/errors) diff --git a/sandbox/sdk/python/volumes.mdx b/sandboxes/sdk/python/volumes.mdx similarity index 96% rename from sandbox/sdk/python/volumes.mdx rename to sandboxes/sdk/python/volumes.mdx index 20f54a6a..41fe6afd 100644 --- a/sandbox/sdk/python/volumes.mdx +++ b/sandboxes/sdk/python/volumes.mdx @@ -176,6 +176,6 @@ async with AsyncPorter() as porter: ## Next steps -- [Python Sandbox SDK quickstart](/sandbox/sdk/python/quickstart) -- [Python Sandbox SDK reference](/sandbox/sdk/python/reference) -- [Python Sandbox SDK errors](/sandbox/sdk/python/errors) +- [Python Sandbox SDK quickstart](/sandboxes/sdk/python/quickstart) +- [Python Sandbox SDK reference](/sandboxes/sdk/python/reference) +- [Python Sandbox SDK errors](/sandboxes/sdk/python/errors) diff --git a/sandbox/sdk/typescript/errors.mdx b/sandboxes/sdk/typescript/errors.mdx similarity index 100% rename from sandbox/sdk/typescript/errors.mdx rename to sandboxes/sdk/typescript/errors.mdx diff --git a/sandbox/sdk/typescript/quickstart.mdx b/sandboxes/sdk/typescript/quickstart.mdx similarity index 94% rename from sandbox/sdk/typescript/quickstart.mdx rename to sandboxes/sdk/typescript/quickstart.mdx index 85005c57..ca43b679 100644 --- a/sandbox/sdk/typescript/quickstart.mdx +++ b/sandboxes/sdk/typescript/quickstart.mdx @@ -123,7 +123,7 @@ const sandboxes = await Promise.all( ## Next steps -- [TypeScript Sandbox SDK reference](/sandbox/sdk/typescript/reference) -- [TypeScript Sandbox SDK volumes](/sandbox/sdk/typescript/volumes) -- [TypeScript Sandbox SDK errors](/sandbox/sdk/typescript/errors) +- [TypeScript Sandbox SDK reference](/sandboxes/sdk/typescript/reference) +- [TypeScript Sandbox SDK volumes](/sandboxes/sdk/typescript/volumes) +- [TypeScript Sandbox SDK errors](/sandboxes/sdk/typescript/errors) - [Sandboxes getting started](/sandboxes/getting-started) diff --git a/sandbox/sdk/typescript/reference.mdx b/sandboxes/sdk/typescript/reference.mdx similarity index 98% rename from sandbox/sdk/typescript/reference.mdx rename to sandboxes/sdk/typescript/reference.mdx index 46c8d6e8..3dcdb6b3 100644 --- a/sandbox/sdk/typescript/reference.mdx +++ b/sandboxes/sdk/typescript/reference.mdx @@ -186,5 +186,5 @@ Use these only when you need an endpoint that is not wrapped by the ergonomic SD ## Next steps -- [TypeScript Sandbox SDK volumes](/sandbox/sdk/typescript/volumes) -- [TypeScript Sandbox SDK errors](/sandbox/sdk/typescript/errors) +- [TypeScript Sandbox SDK volumes](/sandboxes/sdk/typescript/volumes) +- [TypeScript Sandbox SDK errors](/sandboxes/sdk/typescript/errors) diff --git a/sandbox/sdk/typescript/volumes.mdx b/sandboxes/sdk/typescript/volumes.mdx similarity index 96% rename from sandbox/sdk/typescript/volumes.mdx rename to sandboxes/sdk/typescript/volumes.mdx index e6d5a8ec..1f1e17d2 100644 --- a/sandbox/sdk/typescript/volumes.mdx +++ b/sandboxes/sdk/typescript/volumes.mdx @@ -184,6 +184,6 @@ Deleting a volume fails while it is attached to a sandbox. Terminate any attache ## Next steps -- [TypeScript Sandbox SDK quickstart](/sandbox/sdk/typescript/quickstart) -- [TypeScript Sandbox SDK reference](/sandbox/sdk/typescript/reference) -- [TypeScript Sandbox SDK errors](/sandbox/sdk/typescript/errors) +- [TypeScript Sandbox SDK quickstart](/sandboxes/sdk/typescript/quickstart) +- [TypeScript Sandbox SDK reference](/sandboxes/sdk/typescript/reference) +- [TypeScript Sandbox SDK errors](/sandboxes/sdk/typescript/errors)