Guides
Host an app made with ChatGPT, with a database and login.
Put the app ChatGPT wrote online at its own address, with a database that keeps its data and Google sign-in for the people who use it. Tofu sets up all three from one account.
Updated
The short answer
Add Tofu to ChatGPT, then ask ChatGPT to put the app online on Tofu with a database. Tofu checks the files, puts the app online at its own address and gives the account its own database as the app goes live, and ChatGPT asks you before it creates one. Then ask for Google sign-in: Tofu turns it on without a Google Cloud project or a key of yours.
The app's own code has to save its data in that database and send people to Google from its sign-in button, so ask ChatGPT for both first (step 1).
What you need
- A Tofu account. The Free plan and the paid plans are open to everyone.
- ChatGPT, with Developer mode on. It is a setting of your ChatGPT account that lets ChatGPT add Tofu by its address, and not every ChatGPT plan offers it. If ChatGPT lists Tofu in its own directory, adding it from there needs no Developer mode.
- The app's code, in the chat where ChatGPT wrote it.
Step by step
Ask ChatGPT for an app that saves its data and signs people in
Keep working in the conversation where ChatGPT wrote the app. Ask for data saved in a shared database, rather than only in the browser, and for people to sign in with Google. Each person should be able to read and change only the records they are allowed to access.
For this guide, the app is built with React and Vite and uses Supabase's JavaScript client. ChatGPT prepares the table files in
supabase/migrationsand reads the connection fromVITE_SUPABASE_URLandVITE_SUPABASE_ANON_KEY. Tofu supplies those settings; you do not copy their values. The sign-in docs show the code the app's Google button needs.Add Tofu to ChatGPT
In ChatGPT on the web, turn on Developer mode in Settings, then add Tofu on ChatGPT's plugins page by its address,
https://app.trytofu.ai/mcp, with OAuth. Tofu's own page opens: sign in to Tofu there and approve the connection. No key or token is pasted anywhere. Each click is on Use Tofu in Claude or ChatGPT.Ask ChatGPT to put the app online with a database
ChatGPT sends the files it wrote, up to 500 files and 1536 KB in all, or one ZIP of the app that you attach, up to 10 MB. Tofu's safety check runs first and stops only code that would harm other people or Tofu, such as a live secret key in a file. Tofu then puts the app online at its own address and gives the account its own database as the app goes live, connected to the app. ChatGPT asks you before it creates the database.
A deploy answers within about a minute. If the build is still running, the answer says so: ask whether the app is live yet rather than putting it online again.
Ask for Google sign-in
Ask ChatGPT to turn on Google sign-in for the app. Tofu writes its own Google client into the app's sign-in service, which lives in the app's database, so you set up nothing in Google Cloud. People who sign in become accounts in the app's own database, and the emails the app sends them, such as sign-in codes, go out under the app's name.
Check that it is live
Ask whether the app is live. The answer comes from the check Tofu made from outside, the way a visitor reaches the app, and gives its address. Open it, sign in and save something. Return to check that it is still there. Use a second account to check that private records stay private. A domain of your own can come next (Domains).
What the app gets
What Tofu sets up, next to what the same thing takes when you set it up yourself.
| The app needs | With Tofu | On your own |
|---|---|---|
| A web address | Its own address, with HTTPS, once the safety check has passed | An account with a host, such as Vercel or Netlify, and its build settings |
| A database | Its own Postgres database: a Supabase project Tofu creates, connects and pays for | An account with a database service, such as Supabase or Firebase, and its keys copied into the host |
| Google sign-in | Turned on in the app’s own sign-in service, with Tofu’s Google client | A Google OAuth client in Google Cloud, and the addresses sign-in may return to |
| Emails to its users | Sign-in codes and confirmations, sent under the app’s name | An email sender’s account, and its SPF, DKIM and DMARC records at your domain |
| Undo a code update | Earlier builds stay available to restore. This does not undo database changes. | Use the hosting provider’s deployment history; database restores are a separate step. |
To compare that setup with managing Vercel and Supabase yourself, see Tofu vs. setting it up yourself.
Other ways to send the app
- A coding agent on your computer. For an app too big for the chat, or one that grew on your computer: save the files into a folder, connect the agent from the agent setup page, and ask it to put the folder online with a database.
- GitHub. If the code is in a GitHub repository, import it in the Tofu dashboard. With automatic updates on, every push to its branch goes live (Automatic updates from GitHub).
- The Tofu builder. Describe the app to Tofu's builder instead: its cloud coding agent writes the app in a private workspace and puts it online when you say so.
What Tofu does not do
Run work in the background. Tofu hosts web apps that answer requests. A background worker, an always-on scheduler or a service that is not a website has no place on Tofu.
Keep part of an update. Each update replaces the app’s code with the files sent, so a file left out is not in the new version. Earlier versions stay, and one can be put back.
Sign people in another way. Tofu turns on Google and the app’s own email sign-in, and no other provider. Google’s screen shows Tofu’s name rather than your app’s, because the Google client is Tofu’s.
Set up sign-in that lives elsewhere. Sign-in lives in the database Tofu creates for the app. Tofu writes nothing into your own Supabase project, Clerk or Auth0.
Questions
Does this work on the Free plan?
The Free plan and the paid plans are open to everyone. An app on the Free plan can have its own database and Google sign-in too. What each plan includes is on the pricing page.
Where do the app’s tables come from?
From the app's own migration files, in its supabase/migrations folder: where the app's Database page says so, Tofu applies them before each update; otherwise a migration step in the app's build, or your own machine with the database key, applies them. Until something does, the database stays empty. More on Database.
How big can the app be?
From the chat, up to 500 files and 1536 KB in all, or one ZIP you attach in ChatGPT, up to 10 MB. A bigger app goes up through a coding agent on your computer or a GitHub import.
What happens when the app changes?
Ask ChatGPT to send the new version. It replaces the whole app, so send it from a chat that holds the app's complete code. Earlier versions stay, and ChatGPT can put one back.
Does this work in Claude too?
Yes. Claude connects to Tofu at the same address and the steps are the same, except that Claude sends only the files it writes: a file you attach in Claude cannot be sent to Tofu.
Can the app use its own domain?
Yes, on a plan that includes one: the pricing page says which do. Buy the name from any registrar, ask ChatGPT to connect it, and add the records Tofu gives you. On a domain Cloudflare serves, one approval lets Tofu add them itself. HTTPS comes with it.
Describe an app, or bring one from your agent. Tofu puts it online.
Works with any coding agent
© 2026 Tofu
trytofu.ai