Self-hosting
Export your code and database and run your Floot app on your own infrastructure.
You own your Floot app's code and data. If you want to host it yourself, you can export the code and the database and deploy them wherever you like.
Code download is checked against your own plan
Choosing Get Code on a free account opens the upgrade dialog instead of the zip. The check is against the account you are signed in as, not the project owner's — so on a project someone shared with you, you need a paid plan of your own even when the owner has one.
Exporting happens in your browser
The zip is built in the browser, so there is no export tool over MCP — you cannot ask your AI assistant to produce it. Open the project on floot.com and use the project name dropdown in the top-left. From an MCP client the closest equivalents are read_files for source and pull_database_schema / query_database for the database.
When to self-host
- You need to meet specific compliance or data residency requirements
- You want full control over your infrastructure
- You are migrating away from Floot
- You need to run the app in an air-gapped environment
What you can export
| Asset | How to export |
|---|---|
| Code | Project name dropdown → Get Code (paid plan required) |
| Database | Services tab → Data → Floot database → cog icon → Export → Download Database (pg_dump, any plan) |
That is the whole export. The code zip is your source, not a complete copy of the running app, so plan for four things that do not travel with it:
- Your API keys.
env.jsonlists the variables your app expects but leaves each secret as... fill this up ...— you supply the values. - Images and files in Floot's storage. Anything from
generate_imageorupload_assetlives in the project's hosted storage and is served from the app's own domain, so the exported code still points at URLs you no longer host. Re-upload those files to your own storage and update the paths. - **The built-in
@floot/*services.** See the table below — these are a hard build break, not a missing extra. - Example documents. The
.example.tsxand.__example.tsxfiles (and their stylesheets) that sit beside components and pages are development-only and are skipped by the zip. Nothing that ships depends on them.
How to self-host
- 1
Export your code
Open your project on floot.com, click the project name dropdown, choose Get Code, and download the zip. The zip is built in your browser, so give it a moment on a large project.
- 2
Export your database
Open the Services tab, click Data, select Floot database and open a table, then click the cog icon in the table header and choose Export → Download Database to get the
pg_dumpfile. - 3
Set up your own database
Restore the
pg_dumpinto a PostgreSQL database you control, then note its connection string. Managed options like Supabase, Neon, AWS RDS, or Railway all work. - 4
Configure environment variables
The exported code includes an
env.jsonfile. For security it is not pre-populated — you supply the values.JWT secrets — generate one with:
node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"Database connection — fill in your own PostgreSQL connection string. Floot's database is not reachable from self-hosted environments.
External services — paste in the API keys for any third-party services your app uses.
- 5
Build and run
The export is a Node.js application:
npm install -g pnpm pnpm install pnpm vite build pnpm tsx server.tsAdjust freely to fit your own framework or deployment target.
Floot-managed services
Some built-in services are injected by Floot's build and are not included in the export. Any @floot/* import left in your code will fail to resolve, so the exported project does not build until you replace them — this is a hard build break, not a degraded feature. Migrate off these before you export: ask your AI assistant to do it while the project is still on Floot, then export.
| Service | What to do instead |
|---|---|
| Floot OAuth | Configure your own auth provider |
| Floot Storage | Migrate to an object storage provider like Cloudflare R2, S3, or Cloudinary |
| Floot AI | Use your own API key with the AI provider of your choice |
| Floot Realtime | Use a pub/sub service (Pusher, Ably, Redis pub/sub) or drop the feature |
| Floot Email | Point the app at your own provider — Resend, SendGrid, Postmark, SES |
| Scheduled & background jobs | Run them with your platform's scheduler (cron, EventBridge, a queue worker) |
| Floot Push | Generate your own VAPID keypair and send notifications with a web-push library — Floot mints the keypair for you and it does not travel with the export |
| Floot runCode | Run the code in your own sandbox or worker process |
| Google and Microsoft integrations | Register your own OAuth app with each provider and manage the tokens yourself |
| Microsoft login | Configure your own Entra ID app registration |
Things to consider
- API keys
- You will need to set up your own keys for every third-party service.
- Updates
- Self-hosted apps do not receive updates from Floot. Maintaining the code is on you.
- Support
- Floot support covers the Floot platform, not self-hosted deployments.