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

# Deploying

> Deploy apps to production and local devices.

# Deploying

Kazzle apps can be deployed to Kazzle's hosting or installed on device computers.

## Remote deploy

Deploys are asynchronous: the app page, the AI, or `kazzle deploy` from a checkout queues a server-side deploy job. `kazzle deploy` uploads your checkout; the deploy runner builds and ships it.

For each component:

1. **UI components** are built into a Docker image that runs `runtime.prod.build` when set, otherwise `bun run build`
2. **Process components** run their `runtime.prod.command` command from `kazzle.config.ts` - deploy fails if it's missing
3. Each component gets its own image and deployment
4. A production URL is assigned

Trigger a deploy from the app page or via the AI:

```
Deploy my app
```

## Production URLs

Deployed apps get a URL like `https://kazzle-{appId}.kazzle.app`. Apps with multiple process components get one URL per component. Public apps are accessible to anyone with the URL. Private apps require Kazzle authentication.

## Runtime commands in production

| Phase                  | Command                                                   | When                                      |
| ---------------------- | --------------------------------------------------------- | ----------------------------------------- |
| `runtime.prod.build`   | Production build command, or `bun run build` when omitted | During deploy of UI components            |
| `runtime.prod.command` | Production start command in `kazzle.config.ts`            | In production, starts a process component |

Production commands must be bare commands (e.g. `bun server/index.ts`) - the deployed runtime injects `PORT`, `HOST`, and secrets directly. See the [Kazzle CLI](/apps/cli) page for the dev/production split.

## Local install

Apps can also run on device computers (your local machine) via the Kazzle daemon. The `runtime.dev.command` command starts the app in development mode.
