I built Tentacle after trying a bunch of PKM apps that either - required a cloud account to function - were hard to setup and use - or searched by exact keyword match in 2026.
Tentacle is an open-source native desktop app (macOS, Windows, Linux) that stores your notes as plain markdown files in a folder you pick and indexes them in a local sqlite db with some extensions.
You don't need an account and there's no vendor lock. Just .md files you can open in vim if you want or copy anywhere else.
The core feature is semantic search, you type "how we decided to handle authentication" and it finds your note titled "Login Flow Options" even though the words don't match. Embeddings are computed locally and cached in a SQLite file next to your notes, not on my servers.
I also added voice input and auto-tagging for the notes to self-organize as we create them in a hurry, but these features currently require that you add your own OPENAI_API_KEY in the settings (stored locally, never leaves your machine)
What you get out of the box: - Rich text editor (Tiptap) that saves to markdown - Semantic search across all your notes — local embeddings, no API keys - Auto-tagging on save (optional, BYOK for your own LLM key) - Voice capture → instant transcription - Cold start under 3 seconds - Works completely offline (except voice transcription and auto-tagging)
What surprised me building it: Local embeddings are good enough for personal-scale search. I tested against a few thousand notes and the relevance is genuinely better than full-text search. The tradeoff is ~200MB for the model download on first run, but after that it's instant.
Bonus for the devs here: There's also a Rust CLI (tentacle) that exposes the same semantic index. Every command supports --json, so you can pipe it into scripts or use it with AI agents (OpenClaw, AgentZero, Claude Code, etc.). Your agent gets persistent memory across sessions — search your notes, read docs, tag things — all from the terminal. Same files as the desktop app.
The Tech stack is currently Tauri v2 (Rust backend), Next.js, Tiptap editor, local SQLite for embeddings. The CLI is a standalone Rust binary.
Current limitations: - No mobile app yet - Cloud sync is coming but not shipped - right now it's single-machine only - Auto-tagging requires your own API key (local search does not) - Early stage - actively building based on feedback
Everything is MIT licensed. Happy to answer questions about the local embeddings approach, Tauri v2 in production, or anything else.