Guides

Moving an app from a traditional PaaS

What changes, what stays the same, and how to move a database without a maintenance window.

Migration9 min readUpdated September 2026

What stays the same

Your code. ShipSanely reads the same repository; you do not add an SDK or rewrite configuration. If your app ran on a PaaS it almost certainly runs here.

What you can delete

Platform-specific config files, buildpack hints and most of the deploy script. Keep any migration tooling — the agent uses it.

Step 1 — connect and plan

Connect the repository and review the plan. Confirm the services and datastores match what you run today.

Step 2 — move the data

Provision the new private PostgreSQL, then use shipsanely db tunnel with pg_dump/pg_restore for the bulk copy. For near-zero downtime, run a logical-replication catch-up and cut over at a quiet minute.

Step 3 — deploy and verify

Deploy to the hosted endpoint while your old platform still serves traffic. Test against the real domain using a hosts-file override.

Step 4 — switch DNS

Point your domain's CNAME at the hosted endpoint. TLS is issued automatically. Keep the old platform alive for a day, then decommission.

What you gain

Verification before every promotion, private datastores, an agent on call, and a bill split into two meters you can explain.

Early access. Behaviour described here reflects the current agent and may improve between releases. See the changelog.

Ready to connect a repository?

Early access is open for a limited number of teams. Tell us about your stack and we will reply with next steps.

Request early access