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.
Configuration
Every Kazzle app has a kazzle.config.ts at the project root. This file defines what your app contains — components, skills, and metadata.
Quick start
import { defineConfig } from './kazzle.types';
export default defineConfig({
components: [
{ name: 'My App', type: 'ui', path: '.' }
]
});
The defineConfig helper provides TypeScript autocompletion and validation. The types come from kazzle.types.ts, which is auto-generated and included in every template.
Top-level fields
| Field | Type | Required | Description |
|---|
icon | string | no | Path to the app icon file relative to the repo root (png, jpg, svg, webp, ico). Uploaded to CDN on publish. |
components | object[] | no | Executable components — UI frontends or background processes |
skills | object[] | no | AI skill definitions — markdown files the AI reads for domain knowledge |
capabilities | object | no | Optional desktop integration features such as hotkeys, notifications, and status bar presence |
Component fields
Each entry in components[]:
| Field | Type | Required | Description |
|---|
name | string | yes | Unique component name within the app |
type | "ui" | "process" | yes | Component type — ui (max 1) or process |
path | string | yes | Entry path within the app directory |
runtime | object | no | Commands: { dev?, build?, run? } |
runtime.dev | string | no | Command to start the dev server (e.g. "bun run dev") |
runtime.build | string | no | Command to build for production (e.g. "vite build") |
runtime.run | string | no | Command to start in production (e.g. "bun run start") |
schedule | string | no | Cron schedule for process components (e.g. "*/5 * * * *") |
trigger | "webhook" | "event" | no | Trigger mode for process components |
env | object | no | Secret collection + environment for env var injection |
env.collection | string | yes (if env) | Secret collection slug |
env.environment | string | yes (if env) | Environment slug |
env.include | string[] | no | Only inject these env var names. If omitted, inject all. |
Skill fields
Each entry in skills[]:
| Field | Type | Required | Description |
|---|
name | string | yes | Skill name |
path | string | yes | Path to the SKILL.md file relative to the app root |
Constraints
- Max 1 UI component per app
- Component
name values must be unique within the app
Template examples
realtime app
import { defineConfig } from './kazzle.types';
export default defineConfig({
/** Path to the app icon relative to the repo root. Uploaded to CDN on publish. */
icon: 'components/ui/public/favicon.svg',
/** App components — each entry defines a deployable unit. Max 1 UI component. */
components: [
{ name: 'ui', type: 'ui', path: './components/ui' },
{ name: 'server', type: 'process', path: './components/server/index.ts' },
],
});
ui db app
import { defineConfig } from './kazzle.types';
export default defineConfig({
icon: 'components/ui/public/favicon.svg',
components: [
{ name: 'ui', type: 'ui', path: './components/ui' },
{ name: 'server', type: 'process', path: './components/server/index.ts' },
],
});
process app
import { defineConfig } from './kazzle.types';
export default defineConfig({
/** Path to the app icon relative to the repo root. Uploaded to CDN on publish. */
icon: 'icon.svg',
/** App components — each entry defines a deployable unit. */
components: [
{ name: 'My App', type: 'process', path: './components/process/index.ts' },
],
});