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

# Secrets

> Encrypted vault for API keys, credentials, and sensitive config.

# Secrets

Kazzle heeft een ingebouwde versleutelde kluis voor het opslaan van API-sleutels, databasegegevens, tokens en andere gevoelige waarden die uw app nodig heeft. Secrets worden in rust versleuteld met AES-256-GCM met KMS-verpakte gegevensversleutelingssleutels — platte tekstwaarden raken nooit de database.

## Concepten

**Collections** groeperen gerelateerde secrets (bijv. `stripe-keys`, `database-credentials`). Elke collection heeft een **slug** (kleine letters, met koppeltekens) die u in configuratiebestanden en CLI-opdrachten gebruikt.

**Environments** zijn optionele bereiken binnen een collection (bijv. `production`, `staging`). Secrets kunnen aan een specifieke omgeving worden gekoppeld of op collectieniveau als standaardwaarden blijven staan.

**Resolutievolgorde:** bij het oplossen van secrets voor een bepaalde collection + environment overschrijven environment-specifieke secrets secrets op collectieniveau met dezelfde naam. Dit stelt u in staat om de meeste secrets in omgevingen te delen terwijl u specifieke waarden per omgeving overschrijft.

## Secrets beheren

### In de app

Open **Settings > Vault** om collections, environments en secrets via de UI te maken.

### Met de AI

De AI kan collections maken, environments maken, secrets opslaan, ze tussen bereiken verplaatsen en ze voor u verwijderen.

De AI ziet geheime namen en metagegevens, maar niet de versleutelde waarden.

### Met de CLI

```bash theme={"theme":"material-theme-darker"}
# Export secrets as KEY=value lines
kazzle secrets.export --collection=stripe-keys --env=production
```

## Secrets uit uw app refereren

Wijs de `env` van een component naar een secret collection en environment in `kazzle.config.ts`. Elk secret in dat bereik wordt geïnjecteerd als een process env var waarvan de naam overeenkomt met de geheime naam:

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

export default defineApp({
  components: [
    {
      name: 'API Server',
      type: 'process',
      path: './server',
      env: {
        collection: 'stripe-keys',
        environment: 'production'
      }
    }
  ]
});
```

`env.collection` en `env.environment` zijn **slugs**, geen weergavenamen. Gebruik `env.include` om alleen een subset van de secrets van de collection in te voegen:

```typescript theme={"theme":"material-theme-darker"}
env: {
  collection: 'stripe-keys',
  environment: 'production',
  include: ['STRIPE_SECRET_KEY']
}
```

## Hoe secrets env vars worden

Wanneer secrets voor een component worden opgelost:

1. De collection wordt per slug in uw space gevonden
2. Secrets die aan de opgegeven omgeving zijn gekoppeld, worden geladen
3. Secrets op collectieniveau (geen omgeving) worden als standaardwaarden opgenomen
4. Environment-specifieke secrets overschrijven secrets op collectieniveau met dezelfde naam
5. Geheime verwijzingen in waarden worden opgelost
6. Geheime namen worden omgezet naar env var-indeling: gekapitaliseerd, niet-alfanumerieke tekens worden onderstrepen

Een secret met de naam `Stripe Secret Key` wordt `STRIPE_SECRET_KEY`.

Elk secret heeft een **body mode** die bepaalt hoe het wordt geïnjecteerd:

* **`string`** secrets (API-sleutels, tokens, URI's) worden als platte scalaire strings geïnjecteerd
* **`json`** secrets (gestructureerde config) worden als JSON-strings geïnjecteerd
* **`fields`** secrets (inloggegevens, getypte veldverzamelingen) worden als JSON-strings geïnjecteerd

## Wanneer secrets worden geïnjecteerd

| Context | Geïnjecteerd? | Details |
| - | - | - |
| **Deploy** (process component) | Ja | Toegevoegd als runtime-omgevingsvariabelen in productie |
| **Deploy** (UI component) | Gedeeltelijk | Alleen secrets met `VITE_*` voorvoegsel worden tijdens het bouwen doorgegeven |
| **CLI** (`kazzle run`) | Ja | Geïnjecteerd in de omgeving van de opdracht |
| **CLI** (`secrets.export`) | Ja | Geëxporteerd als `KEY=value` regels |
| **Dev preview** | Nog niet | De preview starter lost component `env` nog niet op — gebruik `kazzle run` voor nu |

## Sjabloonverwijzingen

Geheime waarden kunnen verwijzen naar andere geheime velden met dezelfde syntaxis die Kazzle elders gebruikt:

```
postgresql://${secret.123e4567-e89b-12d3-a456-426614174000.username}:${secret.123e4567-e89b-12d3-a456-426614174000.password}@db.example.com:5432/mydb
```

Ondersteunde indelingen:

* `${secret.<uuid>.<field>}` — specifiek veld of JSON-pad in geheime waarden of toolparameters waar kluisverwijzingen zijn ingeschakeld.
* `${secret.<uuid>}` — hele geheime body. Gebruik alleen wanneer een tool expliciet om het hele onbewerkte geheim vraagt; gebruik dit niet in app env/config.

Verwijzingen worden opgelost nadat secrets zijn geladen. Circulaire of verbroken verwijzingen mislukken in plaats van stilzwijgend terug te vallen.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.