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

# Publishing

> How Zite apps go live: publishing, versions and rollback, custom domains, and audit logs.

Publishing takes an app's latest successful build live. Every commit produces a versioned build and
snapshot, so shipping is safe and reversible.

## From commit to live

<Steps>
  <Step title="Commit">
    A `commit` type-checks, pushes to the workspace repo, and builds a **snapshot** in the background. Each
    commit is a version.
  </Step>

  <Step title="Publish">
    `publish_app` pins the latest **successful** build as the published version. If the build is still
    running or failed, publishing is blocked until it's green.
  </Step>

  <Step title="Serve">
    External apps deploy to an edge worker at a public URL; internal apps become available to your
    organization.
  </Step>
</Steps>

You publish by asking an agent (`publish_app`) or from the editor.

## Internal vs external

<CardGroup cols={2}>
  <Card title="Internal apps" icon="building">
    Served to members of your Zite organization only. No public URL.
  </Card>

  <Card title="External apps" icon="globe">
    Deployed to a public edge worker at `https://<subdomain>.zite.so` (or your custom domain), with the
    app's sign-in for its users.
  </Card>
</CardGroup>

Changing an app's [access mode](/concepts/authentication) between internal and external is a confirmed
action.

## Versions & rollback

Every version is backed by a commit and its snapshot. From the app's **History** you can:

* Browse previous versions and preview them.
* **Restore** an earlier version to roll back.

Because each build carries its commit, you always know exactly what's live.

## Custom domains

External apps can be served from:

* A **custom Zite subdomain** — `yourname.zite.so`.
* A **custom domain** you own — connect it with a CNAME record; TLS is handled automatically.

## Audit logs

Zite records an audit trail at the account level — deploys, permission changes, and administrative actions
— so you can see who changed what and when.
