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-sitefrom@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 buildwrites the full site toout/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 buildThis 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 thesites:writescope.
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?
Custom domains
Serve a site that SHIP hosts on a domain that you own, such as blog.example.com. Add two DNS records, and the domain goes live after SHIP finds them.
Site config reference
Every key of site.config.ts, the file that sets the structure of a SHIP site. Each key is required, and an unknown key stops the build.