> ## 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.

# Kazzle CLI

> Ejecuta comandos de aplicaciones generadas con contexto de tiempo de ejecución de Kazzle.

# Kazzle CLI

Usa la CLI de Kazzle para ejecutar comandos de aplicaciones **en desarrollo y vista previa**:

```bash theme={"theme":"material-theme-darker"}
kazzle run -- <command>
```

Todo lo que viene después de `--` es el comando real. Kazzle inyecta el entorno de tiempo de ejecución primero.

`kazzle run` es solo para desarrollo y vista previa. Debe estar en el script `dev`, nunca en `start`. En producción, el tiempo de ejecución implementado inyecta `PORT`, `HOST` y secretos directamente, y el comando de producción es el comando simple (p. ej. `bun run index.ts`). La CLI `kazzle` no está instalada en imágenes implementadas, así que un comando de producción que llama a `kazzle run` falla con `kazzle: command not found`.

## Qué inyecta `kazzle run`

* secretos de la entrada `env` del componente en `kazzle.config.ts`
* `PORT` y `HOST`
* URLs de componentes hermanos como `KAZZLE_APP_COMPONENT_SERVER_URL`
* identidad del tiempo de ejecución de Kazzle como ID de aplicación y nombre del componente

## Ejemplo

```json theme={"theme":"material-theme-darker"}
{
  "scripts": {
    "dev": "kazzle run -- bun --watch server/index.ts",
    "start": "bun server/index.ts"
  }
}
```

`dev` se ejecuta a través de `kazzle run` para que Kazzle pueda inyectar el puerto de vista previa y el entorno de tiempo de ejecución. `start` es el comando simple — producción inyecta `PORT`/`HOST`/secretos por sí sola.

No pongas nombres de colecciones de secretos en `package.json`. Ponlos en `kazzle.config.ts`.

```ts theme={"theme":"material-theme-darker"}
components: [
  {
    name: 'server',
    type: 'process',
    path: './server/index.ts',
    env: { collection: 'my-app', environment: 'local' },
  },
]
```

## Vincular un checkout a una aplicación

`kazzle run` necesita saber a qué aplicación pertenece este directorio. Orden de resolución:

1. `--app=<appId>` en la línea de comandos
2. variable de entorno `KAZZLE_APP_ID` (se establece automáticamente cuando Kazzle inicia un componente supervisado)
3. `.kazzle/link.json` buscado desde el directorio actual

Si ninguno de esos se resuelve, `kazzle run` sale con:

```
Error: This directory is not linked to a Kazzle app. Run `kazzle link` to fix.
```

`app { create: {} }` escribe `<checkout>/.kazzle/link.json` automáticamente — como `.vercel/project.json` de Vercel. El archivo es por clon y está en gitignore. Después de un `git clone` nuevo de una aplicación existente, ejecuta:

```bash theme={"theme":"material-theme-darker"}
kazzle link              # coincide el directorio actual con los checkouts de aplicaciones de tu espacio
kazzle link --app=<id>   # fuerza una aplicación específica
kazzle unlink            # elimina el archivo de vínculo
```

La IA puede reparar un vínculo faltante desde un hilo con `app { link: { appId } }`.
