Skip to main content
Every imported record becomes one markdown page. Fields land in frontmatter, so you can search, filter, and query them with DQL right away. Imports go through the normal write pipeline, so each page is versioned and indexed like any other edit.
Terminal

Supported sources

Databases

postgres, mysql, sqlite, mongodb, firestore, dynamodb, redis, elasticsearch

Files

csv, json, jsonl, yaml, excel, bibtex, markdown

Apps and wikis

notion, airtable, gsheets, obsidian, confluence

Croissant

croissant dataset metadata from Kaggle, Hugging Face, and others

Airbyte

Airbyte connectors through Docker or Airbyte Cloud

Documents

PDF, DOCX, PPTX, and more through MarkItDown

Where each source is available

The CLI supports every source. The REST API, the web UI import wizard, and the kiwi_import MCP tool support a subset.
REST and MCP imports read file and directory paths on the machine that runs KiwiFS, not on the caller’s machine. To send a file from your machine, use POST /api/kiwi/import/upload. The kiwi_import MCP tool only works in local mode (kiwifs mcp --root).

Common flags

These flags work with every source. The default --prefix is the source’s name: the table or collection, the file name without its extension, the vault folder name, notion, or redis.

How records become pages

KiwiFS writes each record to <prefix>/<id>.md. The <id> is the --id-column value, the table’s primary key, or an id or _id field. Without any of those it falls back to the row number.
users/42.md
The page title comes from a title or name field, falling back to the ID. Sources that already produce markdown (markdown, obsidian, confluence, bibtex, croissant) keep their own body and frontmatter. KiwiFS adds the _source, _source_id, and _imported_at fields to it.

Re-imports

Imports are idempotent. When a page with the same _source_id exists and its fields are unchanged, KiwiFS skips it. Changed records are rewritten, and new records are created.
Output

Generate a schema from a sample

For csv, json, and jsonl files, --infer-schema samples up to 100 rows and prints a JSON Schema instead of importing. Add --save-schema to also write it to .kiwi/schemas/<name>.json under the current directory.
Terminal
See Schemas for how KiwiFS validates frontmatter against these files.

Browse, preview, and sync

Preview rows, save connections, and schedule auto-sync.

Import API

REST reference for every import endpoint.
Last modified on October 19, 2026