appsettings & Layers
Zenvara is configured with two YAML layers:
appsettings.yaml— the base, in source control.appsettings.user.yaml— host-specific overrides, gitignored, optional.
Last-write wins, key by key. Every section has sensible defaults; touch a section when you have a reason.
Sections you’ll actually touch
Section titled “Sections you’ll actually touch”| Section | Purpose |
|---|---|
Kestrel | Bind address/port, MaxRequestBodySize. |
Storage | Backend (File / S3 / Minio), directory, per-bucket overrides. See Storage Backends. |
StorageBuckets | Nested per-entity bucket tree — Path, GitTracked, Retention, Archive inherit from ancestor groups. |
Cache | Ephemeral cache directory (safe to wipe). |
Auth | Providers, secrets, role definitions. See Authentication. |
Git | Git-backed config versioning and branch staging. See Git Versioning. |
LocalOverlay | No-git developer scratchpad (sibling of Git:, mutually exclusive with it). |
Serilog | Log sinks: console, file, ELK / Loki / Splunk. |
Flow | Flow-engine tuning. |
Hot-reload vs restart-required
Section titled “Hot-reload vs restart-required”Most entity files (flows, connections, environments) hot-reload — the platform picks up changes on the next request, no restart needed. A few config sections require a restart, notably Git: — enabling or changing git versioning is not a hot-reload operation.
A minimal appsettings.user.yaml
Section titled “A minimal appsettings.user.yaml”# Kestrel binds loopback only by default (http://localhost:5000) — omit this# block unless you need to expose the port beyond localhost. Reaching it from# another host requires the wildcard bind below (front it with a reverse proxy# and keep Auth.Enabled: true, or the security audit flags NET-003).Kestrel: Endpoints: Http: Url: "http://0.0.0.0:5000"
Storage: StorageType: File Directory: "/var/lib/zenvara/data"
Auth: Enabled: true
Serilog: MinimumLevel: InformationConnections, environments, and other entities
Section titled “Connections, environments, and other entities”Note that connections and environments are not in appsettings — they live in storage as YAML entities under config/connections/{name}.connection.yaml and config/environments/{name}.environment.yaml. Folios, skills, and templates live under knowledge/; auth, policies, and teams at the storage top level. appsettings configures the platform; storage entities configure what the platform runs.
The full schema for every section is covered above, plus in the CLI’s own zenvara config-reference output, which is generated from the same embedded defaults and never drifts from what a given build actually ships.