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

# Konfiguration

> Vollständige Referenz für kazzle.config.ts — das App-Manifest.

# Konfiguration

Jede Kazzle-App hat eine `kazzle.config.ts` im Projektstamm. Diese Datei definiert, was deine App enthält — Komponenten, Skills und Metadaten.

## Schnelleinstieg

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  components: [
    { name: 'My App', type: 'ui', path: '.' }
  ]
});
```

Der `defineConfig`-Helper bietet TypeScript-Autovervollständigung und Validierung. Die Typen stammen aus dem `@kazzle/app`-Paket, das in jeder Vorlage enthalten ist.

## Felder auf oberster Ebene

| Feld           | Typ                          | Erforderlich | Beschreibung                                                                                                                                                                                            |
| -------------- | ---------------------------- | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `name`         | `string`                     | nein         | Marketing-Anzeigename, der im App-Katalog angezeigt wird. Fällt auf den Slug zurück, wenn weggelassen.                                                                                                  |
| `subtitle`     | `string`                     | nein         | Kurzes einzeiliges Tagline unter dem App-Namen im Katalog (z. B. „Mac-Apps von Kazzle aus steuern"). Erforderlich zum Veröffentlichen — Weglassen führt zu Fehler.                                      |
| `version`      | `string`                     | nein         | Von Autor festgelegte Versionskennzeichnung (z. B. „1.2.0"). Nur zur Anzeige; wird beim Veröffentlichen gespeichert und bei Klonen als Fork-Quellversion angezeigt.                                     |
| `icon`         | `string`                     | nein         | Pfad zur App-Symboldatei relativ zum Repo-Stamm (png, jpg, svg, webp, ico). Wird beim Veröffentlichen ins CDN hochgeladen.                                                                              |
| `accentColor`  | `string`                     | nein         | Optionale Brand-Akzentfarbe als Hex-String (z. B. „#3b82f6"). Färbt das App-Symbol-Chip und den Detail-Hero. Wenn weggelassen, wird der Akzent automatisch aus dem Symbol entnommen.                    |
| `kazzleAuth`   | `"optional"` \| `"required"` | nein         | Identitätsgating für die App-Startoberfläche — „optional" (Identität bereitgestellt, wenn ein Kazzle-Benutzer vorhanden ist) oder „required" (muss ein angemeldeter Kazzle-Benutzer sein, um zu sehen). |
| `launchUrl`    | `string`                     | nein         | Absolute URL, die in Kazzle geöffnet wird, wenn auf die App geklickt wird, wörtlich verwendet. Wenn weggelassen, ist die Startoberfläche die bereitgestellte Vorschau-URL der UI-Komponente.            |
| `webhookUrl`   | `string`                     | nein         | Publisher-Endpunkt, an den Kazzle bei app.installed / app.uninstalled POSTet (liefert den Installationsschlüssel).                                                                                      |
| `components`   | object\[]                    | nein         | Ausführbare Komponenten — UI-Frontends oder Hintergrundprozesse                                                                                                                                         |
| `skills`       | object\[]                    | nein         | KI-Skill-Definitionen — Markdown-Dateien, die die KI für Domänenwissen liest                                                                                                                            |
| `capabilities` | `object`                     | nein         | Optionale Desktop-Integrationsfunktionen wie Hotkeys, Benachrichtigungen und Statusleisten-Präsenz                                                                                                      |

## Komponentenfelder

Jeder Eintrag in `components[]`:

| Feld                   | Typ                      | Erforderlich  | Beschreibung                                                                                     |
| ---------------------- | ------------------------ | ------------- | ------------------------------------------------------------------------------------------------ |
| `name`                 | `string`                 | ja            | Eindeutiger Komponentenname innerhalb der App                                                    |
| `type`                 | `"ui"` \| `"process"`    | ja            | Komponententyp — ui (max. 1) oder process                                                        |
| `path`                 | `string`                 | ja            | Einstiegspfad im App-Verzeichnis                                                                 |
| `runtime`              | object                   | nein          | Befehle und optionale Env-Overrides: `{ dev?, prod? }`                                           |
| `runtime.dev.command`  | `string`                 | nein          | Befehl zum Starten des Dev-Servers (z. B. `"bun run dev"`)                                       |
| `runtime.dev.env`      | object                   | nein          | Nur Dev-Env-Override. Fällt auf Komponenten-`env` zurück.                                        |
| `runtime.prod.command` | `string`                 | nein          | Befehl zum Starten in der Produktion (z. B. `"bun run start"`)                                   |
| `runtime.prod.build`   | `string`                 | nein          | Befehl zum Bauen für die Produktion (z. B. `"vite build"`)                                       |
| `runtime.prod.env`     | object                   | nein          | Nur Produktions-Env-Override. Fällt auf Komponenten-`env` zurück.                                |
| `schedule`             | `string`                 | nein          | Cron-Zeitplan für Process-Komponenten (z. B. `"*/5 * * * *"`)                                    |
| `trigger`              | `"webhook"` \| `"event"` | nein          | Trigger-Modus für Process-Komponenten                                                            |
| `env`                  | object                   | nein          | Geheime Sammlung + Umgebung für Env-Var-Injektion                                                |
| `env.collection`       | `string`                 | ja (wenn env) | Slug der geheimen Sammlung                                                                       |
| `env.environment`      | `string`                 | ja (wenn env) | Umgebungs-Slug                                                                                   |
| `env.include`          | `string[]`               | nein          | Nur diese Env-Var-Namen injizieren. Wenn weggelassen, alle aus der Sammlung+Umgebung injizieren. |

## Skill-Felder

Jeder Eintrag in `skills[]`:

| Feld   | Typ      | Erforderlich | Beschreibung                                  |
| ------ | -------- | ------------ | --------------------------------------------- |
| `name` | `string` | ja           | Skill-Name                                    |
| `path` | `string` | ja           | Pfad zur SKILL.md-Datei relativ zum App-Stamm |

## Einschränkungen

* **Max. 1 UI-Komponente** pro App
* Komponentennamen-Werte müssen innerhalb der App eindeutig sein

## Vorlagenbeispiele

### ai app

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  /** Einzeiliges Katalog-Tagline. Erforderlich zum Veröffentlichen. */
  subtitle: 'My App',
  icon: 'components/ui/public/favicon.svg',
  components: [
    { name: 'ui', type: 'ui', path: './components/ui' },
    { name: 'server', type: 'process', path: './components/server/index.ts', runtime: { dev: { command: 'bun run dev' }, prod: { command: 'bun run start' } } },
  ],
});
```

### ui db app

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  /** Einzeiliges Katalog-Tagline. Erforderlich zum Veröffentlichen. */
  subtitle: 'My App',
  icon: 'components/ui/public/favicon.svg',
  components: [
    { name: 'ui', type: 'ui', path: './components/ui' },
    { name: 'server', type: 'process', path: './components/server/index.ts', runtime: { dev: { command: 'bun run dev' }, prod: { command: 'bun run start' } } },
  ],
});
```

### ui app

```typescript theme={"theme":"material-theme-darker"}
import { defineConfig } from '@kazzle/app';

export default defineConfig({
  /** Einzeiliges Katalog-Tagline. Erforderlich zum Veröffentlichen. */
  subtitle: 'My App',
  /** Pfad zum App-Symbol relativ zum Repo-Stamm. Wird beim Veröffentlichen ins CDN hochgeladen. */
  icon: 'components/ui/public/favicon.svg',
  /** App-Komponenten — jeder Eintrag definiert eine bereitstellbare Einheit. Max. 1 UI-Komponente. */
  components: [
    { name: 'My App', type: 'ui', path: './components/ui' },
  ],
});
```
