Bring a repo. Leave with everything.
Any folder that follows the structure can be imported as a zip or a public GitHub URL. Imports never dead-end, deploys stop auto-shipping once you have a public audience, and your source and data are exportable at all times.
Import
From the console, open Import and bring either:
- A zip of the project folder, up to 50 MB. Files at the zip root or under a single top-level folder both work; GitHub's "Download ZIP" output imports as-is.
- A public GitHub repository URL, like
https://github.com/you/your-app. The platform fetches the default branch directly. - Optionally, a
.sqldata file to restore into the project database after the first deploy. Pair it with a source zip to move a whole running app.
An import never dead-ends. A clean repo deploys immediately. A repo with problems still becomes a project: the validator's blocker list is attached and the console walks you through fixing each one before the first deploy. Either way the project starts private; nothing is on the open web until you publish it.
Deploy
A deploy is atomic and ordered: the validators run first, then migrations apply in lexical order, then routes register and static files publish. If a validator fails, nothing ships.
Draft behavior follows your audience:
- Before you publish, every deploy goes straight to your URL. You are the only audience; iterate at full speed.
- After you publish, deploys land at
slug-draft.hatchable.site, visible only to collaborators, and the live site does not change until someone clicks Promote in the console. Breaking the URL your users are on now requires a human decision, whether the deploy came from you or from an agent.
The toggle lives in the console if you want different behavior, and dry_run_deploy checks a build against every validator without shipping anything.
Export
Both halves of your app are downloadable at any time, on every plan:
- Source: the Code tab downloads a zip of the working tree, exactly the folder you would re-import.
- Data: the Database tab downloads a standard SQL dump, restorable anywhere standard SQL runs.
Together they close the loop in the diagram: what you export is what you can import. The one exception is apps installed under a managed license from the marketplace, where the seller's source is not exportable by the buyer.
create_project, write_files, dry_run_deploy, deploy. Export stays in the console, in human hands. See the MCP reference.