.kiwi/config.toml inside your knowledge root directory. All settings are optional — KiwiFS runs with sensible defaults out of the box.
Environment variables in the form ${VAR} are expanded in all string values.
Server
public_url is used for permalink generation. Override via KIWI_PUBLIC_URL env var.
Use cors_origins for a simple allowlist, or [server.cors] for fine-grained CORS control (methods, credentials, preflight cache).
Rate limiting
requests_per_minute is greater than zero, KiwiFS applies a token-bucket limiter keyed by Bearer token hash (or client IP when anonymous). Health, readiness, and metrics routes are exempt.
Search
Vector search
Enable semantic search by configuring an embedder and a vector store.Chunking
Control how documents are split before embedding:
For local Ollama on a small CPU-only VPS, lower
worker_count and raise the Ollama request timeout. See Ollama vector search on a small VPS.
Embedder providers
Embedder providers
Vector store providers
Vector store providers
Versioning
- git — every write is a real git commit. Full history, blame, diff.
- cow — copy-on-write snapshots without git. Lighter, limited history.
- none — no versioning. Writes overwrite in place.
Authentication
SIGHUP to the server process to reload auth configuration from disk without restarting.
Assets
UI
Backup
KIWI_BACKUP_REMOTE, KIWI_BACKUP_INTERVAL, KIWI_BACKUP_REBASE_BEFORE_PUSH.
See Backup sync for the full workflow, opt-outs, and troubleshooting.
Janitor
The janitor periodically scans for stale pages, orphans, and broken links.DataView
Memory
Episodic vs semantic conventions for agent memory. See Episodic memory.Drafts
auto_discard is a duration string (for example "720h" for 30 days). Draft branches older than this threshold are discarded automatically.
Workflow
Audit
[audit] enabled = true for GET /api/kiwi/audit. See Optional features.
Webhooks
[[webhook_entries]]:
Lint
auto_format is true (default), KiwiFS normalizes markdown on write (table alignment, trailing whitespace). When reject_errors is true (default), writes that fail lint checks with error severity are rejected.
Schema enforcement
true, writes are validated against .kiwi/schemas/. See Schemas.
Import (Airbyte)
See Airbyte import and Import connections.
Tracing
Query tracing is enabled by default and writes structured JSON records of what KiwiFS did during each request.Space visibility
Control whether a space is accessible without authentication.
Visibility can also be changed at runtime via
PUT /api/kiwi/space/visibility.
Multi-space
Run multiple independent knowledge bases from one server./api/kiwi/{name}/... or via the X-Kiwi-Space header. Administrators use /api/spaces to create and list spaces.
See Multi-space and Spaces API.