Spark. Capture every thought.
Sink. Organize into context-isolated collections.
Educe. Reason over your knowledge with full traceability.
A high-fidelity cognitive filter — not a document dump. One-click deployable RAG agent with 43-tool MCP server. Every answer traces back to its source through three layers of provenance.
docker compose up -d --build
SinkDuce is a high-fidelity cognitive filter — not a document dump.
It turns meetings, lectures, notes, and files into structured, context-isolated knowledge that you can query, distill, and federate across project boundaries. Every answer traces back to its source through three layers of provenance.
Built around three verbs — Spark (capture), Sink (organize), Educe (reason) — SinkDuce is a one-click deployable RAG agent that runs on your own machine. No cloud required. No subscription. Your memory stays yours.
Two independent capture entry points: Meetings for spoken audio with live transcription and auto-sectioning, and Notes for structured writing with cross-collection distillation.
Record a meeting capturing both mic and system audio, or upload a file. FunASR runs locally for offline transcription; plug in DashScope or OpenAI-compatible cloud models for higher accuracy. Real-time WebSocket streaming shows live captions as you speak.
After transcription, a two-pass LLM pipeline fires: first, a general summary plus Blueprint auto-sectioning that uses your Collection catalog as a classification taxonomy; second, per-section deep summaries pinpointing relevant sentences from the transcript. Every sentence is clickable — jump to its source timestamp with synced audio playback.
Create structured notes with a full Tiptap WYSIWYG editor — Markdown, headings, tables, task lists, code blocks, image paste/drag-drop, YouTube embeds. Auto-save.
Distill: drag any note onto the editor — the LLM condenses the source note's essence into a citation block. Results are cached. Propagate: when a source note changes, re-distill into all downstream notes with recursive chain propagation. Preview the full update chain before confirming.
A Bidirectional Reference Graph automatically maintains relationships. The sidebar shows Distill In (sources you reference) and Distill Out (notes referencing you).
Everything lands in a Collection — an isolated Qdrant vector database. Each project, course, or domain gets its own Collection. Zero cross-contamination.
Each Collection is its own Qdrant vector database with independent configuration: chunk mode, parent strategy, chunk sizes, embedding dimensions, search mode, file type allowlist, contextual enrichment, and MinerU cloud parsing toggles.
A Collection Catalog — per-collection definition, coverage scope, and tags — is maintained automatically and used by the agent to route queries to the most relevant Collections.
Ask a question. The system retrieves, grades, and synthesizes. Two search modes — Direct and Agentic — chosen automatically by the LLM based on query complexity.
Direct mode: single-pass hybrid retrieval — dense vector + BM25 sparse (LLM-extracted keywords with synonym expansion), fused via Reciprocal Rank Fusion in Qdrant. Optional reranker re-scores candidates.
Agentic mode: full multi-step pipeline. Decompose complex questions into atomic sub-queries, route each to relevant Collections using catalog metadata, generate and retrieve multiple semantic variants in parallel, deduplicate, judge relevance in one call, aggregate and synthesize.
Your curated memory doesn't stay locked in the Web UI. Connect Claude Code, Cursor, or any MCP-compatible client — your AI coding assistant can directly search your knowledge bases, manage documents, and operate on meetings and notes.
Add to .mcp.json at your project root (or
~/.claude/.mcp.json for global access). The MCP server
reuses the app's services on the same FastAPI process — no separate
server needed.
HTTP Streamable transport. 43 atomic tools across 8 domains. Your knowledge bases become directly queryable from your editor and terminal.
| Backend | Python 3.11, FastAPI, Uvicorn, Pydantic v2, PyYAML |
|---|---|
| Frontend | React 19, TypeScript, Vite 6, Tailwind CSS 4, Zustand, Radix UI, Tiptap, Recharts, Lucide React |
| Vector DB | Qdrant v1.13+ (dense + sparse BM25, RRF hybrid search) |
| LLM / Embedding | OpenAI-compatible protocol, multi-provider with per-collection override |
| Reranking | Cohere, DashScope/Qwen, OpenAI-compatible |
| Parsing | pdfplumber, mammoth, python-docx, openpyxl, python-pptx, markdownify, BeautifulSoup, Tesseract, MinerU cloud API |
| Transcription | FunASR (SenseVoiceSmall, Paraformer, FSMN-VAD, CAM++, CT-Transformer), DashScope, OpenAI-compatible Whisper |
| MCP | MCP SDK 1.0+, HTTP Streamable transport |
| Infrastructure | Docker Compose (Qdrant + app), GitHub Actions CI |
One command. Your knowledge, alive.