> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vybe.build/llms.txt
> Use this file to discover all available pages before exploring further.

# Publishing

> Put your app live at its URL, publish new changes, and fix failed publishes

Publishing builds your app's current code and puts it live at the app's own URL, where people in your organization can open it. Until you publish, your changes only exist in the editor's **Preview**, which only people who can edit the app see.

## Publish your app

**1. Check the preview**

Try the main flows in the **Preview** tab first.

**2. Click Publish**

The **Publish** button sits at the top right of the preview, next to **Access**. On a phone, open the preview to find it.

**3. Wait for the build**

The button shows **Publishing...** while Vybe builds the app. This can take a while.

**4. Open the live app**

When it's done, a notice says "*App name* published". Click **View app** to open it.

Only people who can edit the app can publish it. See [Access and sharing](https://docs.vybe.build/apps/access-and-sharing.md).

## Publish button states

| Button | Indicator | What it means |
| - | - | - |
| **Publish** | None | The app has never been published. One click publishes it. |
| **Publishing...** | Spinner | A publish is in progress. |
| **Published** | Green dot | The live app matches your latest code. |
| **Publish** | Amber dot | You have unpublished changes. |
| **Publish** | Red dot | The latest publish attempt failed. |

Hover over the button to see the same status as a tooltip, for example "This app has changes not published yet". Any change to the app's code since the last successful publish counts as an unpublished change, whether the AI made it or you saved it in the **Code** tab.

## Publish new changes

After the first publish, the button opens a menu with:

* when the app was last published, for example "Published today at 3:04 PM"
* the live URL, with a **Copy link** button
* **Publish latest changes**, which publishes your current code. When nothing has changed, it reads **Up to date** and is disabled.

Each publish replaces the previous version at the same URL. There's no limit on how often you publish.

## Publish from chat

You can ask the AI to publish instead of clicking the button:

> Publish the app.

> Is the live app up to date?

The AI publishes once it has saved its code changes, and the chat shows **Started deployment**. If a publish is already running and started before your latest changes, the AI tells you those changes won't be included.

AI coworkers can publish the apps linked to them in their **Access to Apps** section, including apps they created. When a coworker publishes an app from a Slack conversation, it posts a card that opens the app when the publish succeeds. See [Slack](https://docs.vybe.build/channels/slack.md).

## When a publish fails

If the build fails:

* A notice says "*App name* publish failed" with "Please check the errors in the logs."
* The **Publish** button gets a red dot, and its menu shows "Publishing failed" with a **See errors** button. **See errors** opens **Publishing logs** with the build output.
* Vybe sends the build logs to the app's AI chat automatically, so the AI starts fixing the problem. When it's done, click **Publish latest changes** again.

To catch problems before you publish, choose **Build app** from the editor's **…** menu. It builds the app and runs its tests in the preview. See [Troubleshooting](https://docs.vybe.build/apps/troubleshooting.md) for common errors.

> [!NOTE]
>
> The **Logs** tab shows the preview's logs, not the live app's. Vybe doesn't show logs from the published app.

## Undo a publish

There's no deployment history or one-click rollback. The Publish menu only shows the latest publish. To go back to an earlier version:

1. In the app chat, find the checkpoint ("Your progress has been saved.") from before the change you want to undo, and click **Restore**.
2. Confirm. This reverts the code and deletes the chat messages that came after that checkpoint in the conversation.
3. Click **Publish latest changes**.

Restoring a checkpoint doesn't change your database. See [Version history](https://docs.vybe.build/apps/version-history.md) and [App data](https://docs.vybe.build/apps/data.md).

## Your app's URL

Every app lives at:

```
https://<app-slug>-<org-slug>.vybe.build
```

For example, an app with the slug `sales-dashboard` in an organization with the slug `acme` is at `https://sales-dashboard-acme.vybe.build`.

* **You choose the app slug when you create the app**, in the **App URL** field. It defaults to a version of the app's name. It must be at least 3 characters, and the whole `<app-slug>-<org-slug>` part can be at most 51 characters, so a longer organization slug leaves less room for the app slug. See [Creating apps](https://docs.vybe.build/apps/creating-apps.md).
* **The URL never changes.** Renaming the app doesn't change its slug, and you can't edit the slug later.
* **No custom domains.** Apps are only available on their `vybe.build` URL.
* **No public apps.** Everyone who opens the URL must sign in to Vybe and have access to the app.

You can find the URL in the Publish menu, on the app's card on the **Apps** page, and as the **Base URL** in the **APIs** tab.

### What visitors see

| Visitor | What happens |
| - | - |
| Not signed in to Vybe | Sent to the Vybe login page, then back to the app after signing in. |
| Signed in, with access | The app opens. |
| Signed in, without access | A not-found page. |
| Has access through a different organization than the one they're signed in to | "Wrong Organization", with a **Switch Organization** button. |

## Take an app offline

There's no unpublish button. To take an app offline, archive it:

1. On the **Apps** page, open the app card's **…** menu and choose **Archive app**.
2. Confirm. If the app is published, the dialog warns "This app is currently published. Archiving will un-publish it."

The app's URL stops working, and the app moves to your archived apps. To find it again, filter the **Apps** page by **Archived**. Choose **Restore** on an archived app to bring it back. **Delete permanently**, available only on archived apps, deletes the app and all its data, and can't be undone.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.