Tektite is a local-first markdown workspace. Your notes live as plain .md files on disk — Tektite adds a real index, wiki-link navigation, backlinks, search, and safe rename with link rewriting on top of them.
Built with Tauri, SvelteKit, TypeScript, and Rust.
Tektite v0.1 is the foundation release. It ships the core workflow:
- Open a vault (a folder of markdown files)
- Browse and create notes in the file explorer
- Edit notes with autosave and explicit save
- Follow
[[wiki-links]]to navigate between notes - Search notes by content
- Inspect backlinks for the current note
- Rename a note with a preview of all affected links before applying
This is the substrate. Everything else builds on top.
Prerequisites:
- Bun
- Rust toolchain
- Tauri system dependencies for your OS (see Tauri prerequisites)
Install dependencies:
bun installStart the app in development:
bun run tauri devBuild the desktop app:
bun run tauri buildbun run dev # Vite dev server (frontend only)
bun run build # Production frontend build
bun run check # Svelte + TypeScript checks
bun run lint # Oxlint
bun run tauri dev # Tauri desktop dev
bun run tauri build # Tauri desktop buildSvelteKit, Svelte 5 runes, TypeScript, Tauri 2, CodeMirror 6, Tailwind CSS 4.
Frontend responsibilities:
- App shell and split-pane layout
- Editor presentation and interactions (CodeMirror 6, source mode)
- Sidebar panels: Files, Search, Backlinks
- Command palette (file jump, panel navigation)
- Workspace state and active-pane behavior
Rust workspace under src-tauri/crates/:
tektite-parser— markdown metadata extraction (headings, wiki-links, tags, tasks)tektite-index— SQLite schema, ingest, query, link resolution, rename planningtektite-vault— vault I/O, directory scanning, file watching, rename applicationtektite-search— search ranking and fuzzy file matching
Backend responsibilities:
- Vault file I/O
- Markdown parsing
- SQLite indexing and link resolution
- Backlinks
- Rename preview and apply with link rewriting
- Filesystem watching and index refresh
- Markdown files are the source of truth
- The SQLite index lives at
.tektite/index.db - Workspace state is persisted in
workspace.json - Link resolution is case-insensitive with explicit ambiguity surfacing
- Notes stay portable plain files — no app lock-in
tektite/
├── src/ # SvelteKit frontend
├── src-tauri/ # Tauri app + Rust backend
│ ├── crates/
│ │ ├── tektite-parser/
│ │ ├── tektite-index/
│ │ ├── tektite-vault/
│ │ └── tektite-search/
├── docs/ # PRDs and design docs
├── plans/ # Implementation plans
└── README.md