Migrate an app onto openpouch hosting
First, an honest distinction
openpouch has two lanes. The governed lane connects to a deployment you already have on another provider and adds agent-safe controls there — that is governance, not a migration. A migration means the app runs on openpouch hosting and has an openpouch URL. This page is about the second thing, and the CLI itself keeps the two apart: on a project that maps another provider, openpouch deploy refuses ambiguity and names the explicit migration move.
The migration, in three commands
-
Deploy onto openpouch with a named app.
The first deploy mints your stable URL (openpouch deploy . --app my-app --volume --env-file .env--volumegives the app a persistent/datadisk;--var/--env-fileset its env — values never appear in logs or output). Every futuredeploy --app my-appupdates the app behind the same URL: the new version is built and health-checked on a shadow first, so a failed update can never take down what's live — static content swaps with zero downtime, and a dynamic start failure rolls back automatically. -
Bring the data.
Export from your current host with its own means — its shell, a dashboard download, or a temporary export route you add to the app (you own the code).openpouch data push my-app ./exported-datadata pushthen replaces the app's/datadeterministically: the container is stopped for the write and restarted health-gated, so a SQLite file is never swapped under a running process.data lsverifies what's there;data pullis your tar backup — no lock-in, ever. -
Verify, then hand over — and keep the exit open.
Share the new URL once verify is green. Your old service keeps running untouched as the rollback anchor until you've confirmed the cutover in real use. Retiring it is deliberately a human decision — no tool or agent should make it for you.openpouch verify
What fits (and what doesn't, yet)
- Fits: Node.js servers (Express, Fastify, full-stack apps — build-on-deploy included) and static sites; on-disk data like SQLite or uploads via the
/datavolume. - Honest limits: Node/static only (no other runtimes) · no managed databases — an external DB keeps working, it simply stays where it is · custom domains are on the way, your app lives at
https://<name>.openpouch.shfor now. - Plans: persistent
/datavolumes and always-on are part of paid plans (from $15/month, pricing); stable-URL apps need a free account — the migration itself is just these commands, not a sales call.
Why agents can run this
Every step above is a command with a machine-readable result and errors that say how to fix themselves — which is why a coding agent given "migrate this app; keep the data" can genuinely do it: deploy, set env, push data, verify, and report back with the new URL and the rollback plan. The repo's AGENTS.md (written by openpouch init) carries this exact workflow, so any harness finds it. Two things intentionally stay human: paying, and retiring the old host.