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

> 生成されたアプリコマンドを Kazzle ランタイムコンテキストで実行します。

# Kazzle CLI

Kazzle CLI を使用して、アプリコマンドを**開発とプレビューで**実行します：

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

`--` の後のすべてが実際のコマンドです。Kazzle はランタイム環境を最初に注入します。

`kazzle run` は開発とプレビューのみです。`dev` スクリプトに属し、`start` には決して入りません。本番環境では、デプロイされたランタイムが `PORT`、`HOST`、シークレットを直接注入し、本番コマンドは素のコマンド（例：`bun run index.ts`）です。`kazzle` CLI はデプロイされたイメージにインストールされていないため、`kazzle run` を呼び出す本番コマンドは `kazzle: command not found` でクラッシュします。

## `kazzle run` が注入するもの

* `kazzle.config.ts` のコンポーネントの `env` エントリからのシークレット
* `PORT` と `HOST`
* `KAZZLE_APP_COMPONENT_SERVER_URL` のような兄弟コンポーネント URL
* アプリ ID やコンポーネント名などの Kazzle ランタイムアイデンティティ

## 例

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

`dev` は `kazzle run` を通じて実行されるため、Kazzle はプレビューポートとランタイム環境を注入できます。`start` は素のコマンドです — 本番環境は `PORT`/`HOST`/シークレットを自身で注入します。

`package.json` にシークレットコレクション名を入れないでください。`kazzle.config.ts` に入れてください。

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

## チェックアウトをアプリにリンクする

`kazzle run` は、このディレクトリがどのアプリに属しているかを知る必要があります。解決順序：

1. コマンドラインの `--app=<appId>`
2. `KAZZLE_APP_ID` 環境変数（Kazzle が監視対象コンポーネントを開始するときに自動的に設定）
3. 現在のディレクトリから上へ向かって検索される `.kazzle/link.json`

これらのいずれも解決しない場合、`kazzle run` は以下で終了します：

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

`app { create: {} }` は `<checkout>/.kazzle/link.json` を自動的に書き込みます — Vercel の `.vercel/project.json` のように。ファイルはクローンごとで gitignore されます。既存アプリの新しい `git clone` の後、以下を実行してください：

```bash theme={"theme":"material-theme-darker"}
kazzle link              # 現在のディレクトリをスペースのアプリチェックアウトと照合
kazzle link --app=<id>   # 特定のアプリを強制
kazzle unlink            # リンクファイルを削除
```

AI はスレッドから `app { link: { appId } }` で失われたリンクを修復できます。
