{"slug": "show-hn-pith-a-local-first-desktop-llm-wiki-without-vector-dbs-or-embeddings", "title": "Show HN: Pith – A local-first desktop LLM wiki without vector DBs or embeddings", "summary": "Developer l-zhi released Pith, a local-first desktop LLM wiki that ingests notes, PDFs, and emails into Markdown entries without using vector databases or embeddings, relying instead on keyword search and link traversal for retrieval. The tool, available as a desktop app and CLI, keeps all data in plain files on the user's disk and supports auto-ingestion and scheduled tasks.", "body_md": "中文版 →\n\n[README.zh-CN.md]\n\n**A local-first LLM knowledge base.** Drop in your notes, PDFs, and emails — pith\nhydrates each into a dense Markdown entry an LLM can read, then lets you chat with\nyour whole library, retrieved by keyword + link traversal. **No embeddings, no\nvector DB.** Everything stays in plain files on your disk.\n\n*Drop a note into your Obsidian vault — pith auto-ingests it into an entry the LLM\ncan pull from mid-conversation.*\n\n- 🗂️\n**Plain files, not a black box**— every entry is Markdown + YAML frontmatter; Obsidian, VS Code, and Git open them natively. - 🔍\n**Retrieval you can reason about**— weighted keyword search + link-graph traversal + exact grep. No embedding drift, no vendor lock-in. - 💬\n**Chat that writes back**— the agent reads your library through file/wiki tools;`/digest`\n\ndistills a conversation into a new entry. - 🤖\n**Auto-ingest + schedule**— watch a folder for new files; run agent tasks on a cron (e.g. a daily digest of yesterday's additions). - 🔒\n**Local-first**— all data under`~/.pith-wiki/`\n\n; outbound PII filtering on by default. No cloud, no lock-in.\n\nDesign philosophy: data engineering > retrieval algorithms.Don't dump raw docs into a store and hope embeddings pull them back. Use an LLM tohydrateeach source into a high-density Markdown entry, then retrieve by keyword + link traversal. Simple, file-based, human-readable.\n\nInput formats: `.docx`\n\n`.eml`\n\n`.htm`\n\n`.html`\n\n`.md`\n\n`.pdf`\n\n`.txt`\n\n. The product is\n**pith**; the npm package and repo are historically named `pith-wiki`\n\n.\n\n**Desktop app (recommended)** — the full experience: chat, inbox, dashboard, link\ngraph, skills, and a scheduled-tasks calendar, all over the same engine and\non-disk library. No packaged installer yet, so run it from source:\n\n```\ngit clone https://github.com/l-zhi/pith-wiki.git\ncd pith-wiki/desktop\nnpm install\nnpm run dev      # electron-vite dev (HMR)\n```\n\n**CLI** *(optional — for automation / headless use)*:\n\n```\nnpm install -g pith-wiki\npith-wiki        # launch the REPL\n```\n\nOn first launch, onboarding walks you through setup — pick a provider, paste an\nAPI key, and point it at a notes folder to watch. Everything lives under\n`~/.pith-wiki/`\n\n(config + wiki data); set `PITH_WIKI_HOME`\n\nfor an isolated\nprofile.\n\n**Platforms**: macOS + Linux are CI-tested (Node 20 / 22); Windows is usable but\nnot yet CI-covered. Dev scripts: `npm test`\n\n/ `npm run typecheck`\n\n/ `npm run build`\n\n(inside `desktop/`\n\n, or repo root for engine/core). See [CONTRIBUTING.md](/l-zhi/pith-wiki/blob/main/CONTRIBUTING.md).\n\n**1. Hydrate** — compress raw documents (markdown / PDF / DOCX / HTML / email)\ninto Markdown entries roughly 30% of the original size. Strip filler, keep\nsignal. LLMs read these directly.\n\n**2. Retrieve** — no embeddings, no vector DB. Weighted keyword search (title × 2,\ntags × 2, summary × 1, content × 0.5) + BFS link traversal, plus exact\nsubstring/regex search (`wiki_grep`\n\n) and date-range filters (when an entry was\nadded to the library, or the content's own date). Boring on purpose. Entries are\nplain Markdown; Obsidian, VS Code, and Git all open them natively.\n\n**3. Chat** — the agent talks to your library through file + wiki tools\n(`wiki_query`\n\nfuzzy search, `wiki_grep`\n\nexact search, `wiki_get`\n\n,\n`wiki_read_source`\n\n, `wiki_ingest`\n\n, `read_file`\n\n/ `write_file`\n\n/ `list_dir`\n\n, …).\nEvery turn writes a transcript; `/digest`\n\ndistills the conversation back into a\nwiki entry, closing the loop chat → store → retrieve.\n\n**4. Auto-ingest** — point a watch folder (Obsidian vault, inbox, etc.) at pith\nin Settings, and changes are auto-enqueued for a background worker to hydrate.\nBuilt-in health checks flag orphan links, broken frontmatter, and ID collisions.\n\n**5. Schedule** *(desktop)* — set tasks that run an agent prompt on a schedule\n(once, or cron) — e.g. a daily digest of everything added yesterday. Each fire\nopens a fresh session you can reopen; `${yyyy-mm-dd -1}`\n\n-style date placeholders\nare resolved at run time so \"yesterday\" is always correct.\n\n| Document | When to read it |\n|---|---|\n|\n\n`additionalReadPaths`\n\n, on-disk layout[docs/config.example.json](/l-zhi/pith-wiki/blob/main/docs/config.example.json)`~/.pith-wiki/config.json`\n\nexample (multi-provider + watchDirs + queue)[docs/entry-format.md](/l-zhi/pith-wiki/blob/main/docs/entry-format.md)[docs/architecture.md](/l-zhi/pith-wiki/blob/main/docs/architecture.md)[docs/security-model.md](/l-zhi/pith-wiki/blob/main/docs/security-model.md)[docs/usage.md](/l-zhi/pith-wiki/blob/main/docs/usage.md)[SECURITY.md](/l-zhi/pith-wiki/blob/main/SECURITY.md)[CONTRIBUTING.md](/l-zhi/pith-wiki/blob/main/CONTRIBUTING.md)[CHANGELOG.md](/l-zhi/pith-wiki/blob/main/CHANGELOG.md)[Apache 2.0](/l-zhi/pith-wiki/blob/main/LICENSE) · Copyright (c) 2026 lizhi", "url": "https://wpnews.pro/news/show-hn-pith-a-local-first-desktop-llm-wiki-without-vector-dbs-or-embeddings", "canonical_source": "https://github.com/l-zhi/pith-wiki", "published_at": "2026-06-25 13:32:07+00:00", "updated_at": "2026-06-25 13:44:38.939855+00:00", "lang": "en", "topics": ["large-language-models", "ai-tools", "ai-agents"], "entities": ["Pith", "l-zhi", "Obsidian", "VS Code", "Git", "npm", "Node", "Electron"], "alternates": {"html": "https://wpnews.pro/news/show-hn-pith-a-local-first-desktop-llm-wiki-without-vector-dbs-or-embeddings", "markdown": "https://wpnews.pro/news/show-hn-pith-a-local-first-desktop-llm-wiki-without-vector-dbs-or-embeddings.md", "text": "https://wpnews.pro/news/show-hn-pith-a-local-first-desktop-llm-wiki-without-vector-dbs-or-embeddings.txt", "jsonld": "https://wpnews.pro/news/show-hn-pith-a-local-first-desktop-llm-wiki-without-vector-dbs-or-embeddings.jsonld"}}