SHIP Sites

Leave SHIP Sites hosting

Your repository and your build belong to you. Serve the same build from another static host, then unpublish the site that SHIP hosts.

A site that SHIP hosts needs SHIP only for the hosting. You can move it to another host at any time, and the build does not change.

What you keep

  • The repository is yours, in your own GitHub account. It holds the content, the brand DNA and the site config.
  • The site builds with ship-site from @lets-ship/site, and the brand compiles with @lets-ship/brand-dna. Both are MIT licensed npm packages, and the build needs no SHIP account.
  • pnpm build writes the full site to out/ as static files. The site needs no server code.

SHIP can still work on the repository after you move. Missions, reviews and tests do not need SHIP hosting.

Move the site to another host

Set the new address

Set origin in site.config.ts to the address of the new host. Canonical links, feeds and the sitemap use it.

Build the site

pnpm install
pnpm build

This is the same build command that SHIP runs, with the same checks. Off SHIP hosting, the badge rules of your plan do not apply. To remove the badge, set footer.badge to false in site.config.ts.

Upload the build

Upload the contents of out/ to a static host. The file out/_headers holds the cache and security headers for each path. If your host does not read a _headers file, set the same headers in the configuration of your host. The not-found page is out/404.html.

Stop the builds on SHIP

In ship.yml, the two ship-hosted entries under deployments tell SHIP to build a preview of each pull request and to publish the site. Remove them, and keep the key as deployments: {}. The key is required.

After this change, a push to the default branch publishes nothing on SHIP. QA tests each mission on a local build of the site, as the qaSurface block sets. To get a preview of each pull request on your own host, add a preview entry for your own pipeline, as Deployments describes.

Unpublish the site on SHIP

The last build that SHIP published stays live until you unpublish it. When the new host serves the site, an admin or an owner unpublishes the site on SHIP in one of these ways:

  • In the console, open the site on the Sites page and select Unpublish.
  • From a terminal, run ship sites delete <SITE_ID>.
  • From an agent, call the MCP tool delete_site.
  • Through the API, send DELETE /v1/sites/{siteId} with a token that has the sites:write scope.
caution

You cannot undo an unpublish. A moment after it, the site serves no more pages on its SHIP address.

The address stays held, so nobody else can take it. A later push to the default branch does not publish the site again.

How is this page?

On this page