Building an app is one thing. Getting it in front of people is another. Until your app is published and shared, it only exists for you. Publishing is the moment it becomes real — accessible at a permanent URL, ready for real users, with data that persists. It is also the point where your decisions start to have consequences: changes that reach live users immediately, rather than sitting safely in a private draft.
Every Caffeine app has two versions: a draft and a live version. You build and test in draft, then publish to live when your changes are ready. Your live app gets its own URL that you can share with anyone.
Draft and live mode
Draft is your working environment. Every change the AI makes goes here first. The draft runs at a separate URL from your live app, so you can test new features without affecting your real users. Draft data is temporary — it may be reclaimed if the draft has been idle for a while, and drafts that expire can be restored with a single click.
Live is your production app — the permanent version your users access. Live data persists as long as your subscription is active. Only you can see the draft; your users only ever see the live version.
Going live
When you are happy with your draft, click the Go live button in the chat panel. Caffeine handles the deployment automatically, including any necessary data migration. The process takes a moment, then your live app is updated. The button shows "Going live…" while the deployment is in progress.
Always review your draft thoroughly before going live. Your real users see changes immediately once they are published.
The Live button and dropdown
Once your app has a live version, the button in the chat header changes from Go live to Live. Clicking it opens a dropdown menu with quick actions:
- Open live app — opens your live app in a new browser tab. The current live version number is shown alongside the option.
- Copy app link — copies your live app's URL to the clipboard so you can paste and share it anywhere.
- Push version update — appears when you have built new changes in draft that have not yet been published to live. Click it to deploy those changes directly from the header without opening project settings. The pending version number is shown alongside the option. While a deployment is in progress this item is replaced by Pushing version update and cannot be clicked.
Sharing your app
Your live app has a permanent URL that you can share with anyone. The quickest way to copy it is to open the Live dropdown in the chat header and choose Copy app link. You can also open project settings (gear icon) → More → Copy share link. No login is required to view a live app unless your app enforces authentication.
Draft apps also have URLs, but these are not intended for sharing with end users — draft performance and availability is not guaranteed.
What's happening behind the scenes
Every Caffeine app runs inside canisters on the Internet Computer — one for the frontend and one for the backend. Draft and live each have their own canisters, and they behave differently:
- Draft canisters are temporary. They are assigned to your project from a shared pool while you are actively editing and testing. As long as you keep sending messages, the draft canister stays assigned to your project. After about two hours of inactivity, the canister expires and returns to the pool — you will see a message in chat offering to rebuild it. If a draft canister runs out of resources, it is simply replaced on your next build.
- Live canisters are permanent. They are created when you first publish your app and persist for as long as your app is live. They hold your production data and serve your real users. Live canisters have automatic resource monitoring that keeps them running without intervention.
You do not need to manage canisters directly — this is handled entirely by Caffeine. This section is here to help you understand why drafts can expire and why live apps behave differently.
Frequently asked questions
What happens if my draft expires?
Drafts that have been inactive for a while may be reclaimed by the platform. If your draft is no longer running, you will see a message in the draft preview panel with a button to restore it. The restore brings back the last saved state of your draft — no code is lost.
Can I roll back a live update?
There is no rollback for live deployments. If you push to live and something goes wrong, fix it in draft first — revert to an earlier draft version using the Revert to version N button on any past build in your chat history, or ask the AI to reverse the specific change — then go live again with the corrected version.
How do I prevent mistakes from reaching production?
Test everything in draft before going live. The draft URL lets you use your app exactly as a real user would. Only push to live when you are confident the changes are correct. You can also set the AI clarification mode to Thinking or Pro to reduce the chance of the AI building the wrong thing.
Does going live affect my users' data?
Caffeine handles data migration automatically when you publish. The Motoko framework checks whether the update is safe before applying it — if the change could cause data loss, it is rejected and the AI rewrites it. Your users' data is protected.
Can I have a custom domain instead of the default URL?
Yes, on Plus and Pro plans. See the Custom Domains section for how to purchase and connect a domain.
How do I share just the draft with a collaborator for review?
Copy the draft URL from your browser and share it directly. Anyone with the link can view the draft, but the URL is not publicly indexed or discoverable.
My app won't deploy — what's causing it and what should I do?
The most common cause of a failed deployment is a backend migration conflict. Caffeine apps store data on the Internet Computer, and every time you deploy a new version, the system checks whether the new backend is compatible with the data structure of the previous version. If recent changes introduced a breaking incompatibility — a field removed, a type changed, a data structure restructured in a way the migrator cannot reconcile — the deployment is rejected to protect your existing data.
When this happens, the most reliable fix is to revert your draft to the last version that deployed successfully and continue building from there, rather than trying to push forward. Use the Revert to version N button on a past build in your chat history to restore a working state. Attempting to patch your way out of a migration conflict through further AI prompting can compound the problem — go back to a working baseline, then approach the change you wanted more incrementally.
What is a clean install and when should I use it?
A clean install deploys your live app and permanently erases all data stored in it. Your app starts from a completely fresh state — any data your users have created will be gone and cannot be recovered. Use this only when you deliberately want to reset the app from scratch, for example if you have changed the data structure in a way that is fundamentally incompatible with your existing live data and starting over is the right choice. To perform a clean install, open project settings, select More, and choose Clean install (wipe app data). A confirmation dialog explains what will be deleted before you proceed.