Skip to main content
A markdown filesystem for agents and teams — a single Go binary with a web UI, git versioning, full-text and vector search, and access via REST, MCP, NFS, S3, WebDAV, and FUSE.
Obsidian is a desktop app. KiwiFS is a server with a web UI, agent APIs, git audit trail, and server-side search over the same markdown files.
Those tools store content in proprietary databases. KiwiFS stores plain markdown. cat page.md and git clone always work.
No. Git runs under the hood; the API and web UI hide it. Git is the audit trail, not the primary interface.
KiwiFS is in active development (currently v0.19). Core features are stable in internal production use. Public APIs may evolve before v1.0.

Installation

A single static Go binary. SQLite is embedded. The web UI is embedded via go:embed. Runs on macOS, Linux, and Docker.
brew install kiwifs/tap/kiwifs
# or
curl -fsSL https://raw.githubusercontent.com/kiwifs/kiwifs/main/install.sh | sh
# or
go install github.com/kiwifs/kiwifs@latest
Derived state — not your content. Safe to delete and rebuild with kiwifs reindex.
.kiwi/
├── config.toml
├── playbook.md
├── state/search.db
├── comments/
└── templates/

Agents

Three ways:
  1. Filesystem — NFS or FUSE mount: cat, echo, grep
  2. RESTPUT /api/kiwi/file
  3. MCPkiwifs mcp --root ~/knowledge (60+ tools)
Yes. kiwifs mcp --root ~/knowledge runs in-process against the directory. No HTTP needed.
{
  "mcpServers": {
    "kiwifs": {
      "command": "kiwifs",
      "args": ["mcp", "--root", "/path/to/knowledge"]
    }
  }
}
See MCP.
Send X-Actor and X-Provenance on writes. KiwiFS injects derived-from into frontmatter automatically.
TierEngine
1grep (zero deps)
2sqlite (FTS5, BM25 — default)
3Vector ([search.vector] — optional)
Use Ollama as the embedder and sqlite-vec as the store for fully local semantic search.
kiwifs reindex --root ./knowledge

Protocols

ProtocolBest for
NFSDocker / Kubernetes mounts
S3Backup tools, pipelines
WebDAVDesktop sync, mapped drives
FUSEDeveloper workstation remote mount
See Alternate protocols.
Yes. Every write gets git commit, index update, and SSE broadcast regardless of entry protocol.

Data

Atomic writes (temp → fsync → rename). Git reflog aids recovery.
  • git push to any remote
  • kiwifs backup / [backup] in config
  • kiwifs restore --from ... --to ...
  • rsync the knowledge root
kiwifs import --from obsidian --path ~/vault --root ./knowledge
kiwifs import --from notion --api-key $KEY --database-id $ID --root ./knowledge

License

BSL 1.1 — self-host and embed freely. You cannot offer KiwiFS itself as a commercial hosted service. Each release converts to Apache 2.0 after four years.
Last modified on May 31, 2026