Compliance by access path
What works on NFS and FUSE
Intentionally not supported
Concurrency and durability
Optimistic locking
Optimistic locking
REST writes accept an
If-Match header with the file’s ETag. A stale ETag returns 409 Conflict. If-Match: * follows RFC 7232.Serialized writes
Serialized writes
Writes from every protocol share one pipeline and one lock, so concurrent writers queue instead of corrupting each other.
Single-instance guard
Single-instance guard
The server holds an
flock on .kiwi/server.lock. The kernel releases it on any exit, including SIGKILL, so there is no stale lock to clean up. Two servers can’t share one knowledge root.Git lock recovery
Git lock recovery
Every 10 seconds, a background watcher removes
.git/index.lock if it is older than 60 seconds. Git subprocesses get SIGTERM before SIGKILL, so they usually release the lock themselves.Line-ending integrity
Line-ending integrity
KiwiFS sets
core.autocrlf=false and * -text in .gitattributes, so ETags always match the raw bytes on disk. The API blocks writes to .gitattributes.Frontmatter size limit
Frontmatter size limit
YAML frontmatter larger than 64 KB is treated as empty. Headings in the body are still indexed.
Symlinks over REST
Create a symlink by writing its target withContent-Type: application/x-symlink, and read the target back with readlink:
Terminal
Related
Alternate protocols
Set up NFS, S3, WebDAV, and FUSE.
Files as truth
Why KiwiFS stores plain files.
Versioning
Git commits behind every write.