Built in the open. Shipped in production.
We extracted the file-extraction infrastructure of Sery Link into four Rust crates so anyone can use them. They're what makes the desktop app fast — and they're yours under MIT or Apache 2.0.
scankit
Walk + watch + filter directory trees.
The shared scanner Tauri / Iced / native desktop apps reach for when they need to enumerate user files. walkdir + globset + size cap + (optional) notify, with the edge cases (symlink loops, permission denials, mid-walk deletes) handled in one place.
cargo add scankittabkit
Tabular files → schema + sample rows + row count.
One in-process Reader trait for Parquet, CSV, XLSX, XLS, XLSB, XLSM, ODS. No external query-engine roundtrip, no Arrow conversion — schema and samples come back in one call. Built for desktop apps that need to inspect spreadsheets without spawning a sidecar.
cargo add tabkitmdkit
Documents → markdown. One trait, every format.
PDF (libpdfium), DOCX / PPTX / EPUB / RTF / ODT (pandoc subprocess), HTML (html2md), IPYNB (serde_json), with Apple Vision and Windows.Media.Ocr fallbacks for scanned pages. Replaces the markitdown Python sidecar with in-process Rust.
cargo add mdkit --features "pandoc,ocr-platform"sery-mcp
Folder → MCP server. One binary, any LLM client.
Standalone stdio MCP server you point at any folder. Wraps scankit + tabkit + mdkit behind nine read-only tools (list_folder, search_files, get_schema, sample_rows, read_document, query_sql, …) so Claude Desktop, Warp, Cursor, or Continue can browse your files without uploading them. No account, no cloud round-trip — install with cargo and it runs on the user's machine.
cargo install sery-mcpWhy we open-source these
Every desktop app reinvents this wheel
Every “index files on the user's machine” project — RAG tools, search apps, backup utilities, document assistants — rebuilds the same five hundred lines of walkdir-with-excludes-and-size-cap glue. Every project gets it slightly wrong. We shipped it once, with the edge cases handled in one place.
Audit > promise
Sery Link claims your raw files never leave your machine. The kits are how that claim is enforced. Open-sourcing them means anyone can verify what scankit walks, what mdkit reads, what tabkit returns — and what they don't.
Community > maintenance burden
Document parsing has thousands of edge cases (encrypted PDFs, exotic CSV delimiters, malformed XLSX, IPYNB cell variants). A single team can't cover them all. Sharing the code means the bug fixes benefit everyone — including us.
Reuseable > re-implemented
If you're building a Tauri / Iced / native Rust desktop app and need to enumerate or extract from user files, install three crates and you're done. We did the work; we'd rather more people built privacy-respecting local-first software than less.
Used in production
The kits power Sery Link — every CSV / Parquet / XLSX read goes through tabkit, every PDF / DOCX / HTML through mdkit, every folder walk through scankit, and Sery Link's built-in --mcp-stdio mode wraps sery-mcp. They're not toys; they're the production extraction layer of a desktop app shipping to consumer machines.
Each kit's public API is committed to via #[non_exhaustive] forward-compatibility and SemVer. 1.0 cuts once each kit has been exercised by at least one downstream production user besides Sery Link itself — bug reports + feature requests land via GitHub Issues on the respective repo.
What's open, what's not
The kit family (this page) under MIT / Apache 2.0. Plus the entire Sery Link desktop app itself under AGPL-3.0 — every line of code that touches your files lives at github.com/seryai/sery-link.
The cloud coordination layer that lets your machines share a workspace, sync metadata, and route plain-English queries across them. The network is the product; the desktop app and the kits are the means by which the network stays honest.
Use them, contribute to them.
Bug reports, format-coverage PRs, and downstream-production stories all welcome. Drop a star if you find them useful — it helps other developers find them.
Built and maintained by the Sery team.