Skip to main content
KiwiFS starts with a small, safe default set. Some subsystems are opt-in in .kiwi/config.toml, a few depend on the search backend or external tools, and two are chosen when the binary is built. When a feature is off, its endpoints return a clear status code instead of failing silently.
A 501 or 503 from an endpoint listed below usually means the feature is off on this server, not that something is broken.

Runtime features

Turning features on

Drafts are git branches in separate worktrees, so they need git versioning as well as the switch:
.kiwi/config.toml
See Draft spaces.
.kiwi/config.toml
Terminal
See Audit log.
.kiwi/config.toml
Then register webhooks through the API or with [[webhook_entries]]. See Webhooks.
.kiwi/config.toml
The vector store defaults to an embedded SQLite store. Run kiwifs reindex to embed existing pages. See Search and Vector search configuration.
.kiwi/config.toml
Start with warn on an existing knowledge base to see violations without blocking writes, then switch to the default reject. See Schemas.
Claims are on by default. Expired claims are released every 30 seconds. You only see 503 if the claim store under .kiwi/state/ could not be opened; check the server log for claims disabled.See Claims.

Document export tools

Exporting to formats such as DOCX, slides, or a static site uses external tools when they are installed: Pandoc, Marp CLI, MkDocs, Typst, XeLaTeX, and pandoc-crossref. The server logs which ones it found at startup, and formats that need a missing tool are unavailable. The Docker image ships with Pandoc, Marp CLI, MkDocs, and Chromium. See Document export.

Build-time features

Release binaries and the Docker image use the default build. Two features change with Go build tags when you build from source:
Terminal
On Windows, kiwifs mount (FUSE) is not available. Use kiwifs serve with WebDAV or the REST API instead.

Configuration

Every config key and its default.

API overview

Auth and error conventions.
Last modified on October 19, 2026