Skip to main content
KiwiFS is configured via .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

The 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

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

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

Auth is hot-reloadable — send SIGHUP to the server process to reload auth configuration from disk without restarting.

Assets

UI

Backup

KiwiFS fetches and rebases onto the backup branch before pushing by default. This avoids routine non-fast-forward failures when another client pushed to the same backup branch first. Override via env: 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

Requires [audit] enabled = true for GET /api/kiwi/audit. See Optional features.

Webhooks

See Webhooks. Register static webhooks at startup with [[webhook_entries]]:

Lint

When 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

When 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.
Each space gets its own API under /api/kiwi/{name}/... or via the X-Kiwi-Space header. Administrators use /api/spaces to create and list spaces.
You can also add spaces via CLI flags: kiwifs serve --space eng=/data/eng --space product=/data/product.
See Multi-space and Spaces API.
Last modified on May 31, 2026