How Prometheus works
Prometheus is not “a chat model glued onto Obsidian” — it is local RAG: an index of your Markdown notes, meaning-based retrieval, and answers generated strictly from the retrieved context.
Three processes on your machine
- Prometheus Plugin — Community Plugin: Chat, Search, Settings, Status, Vault API access, and runtime lifecycle.
- Prometheus Runtime — local sidecar: parsing, chunking, embeddings, sqlite-vec, retrieval, grounded prompt.
- Ollama — external local runtime for the LLM you choose.
┌─────────────────────────────────────────────────────────────┐ │ User's computer │ │ │ │ ┌──────────────────────────────┐ │ │ │ Prometheus Plugin │ │ │ │ Chat / Search / Settings │ │ │ └──────────────┬───────────────┘ │ │ │ HTTP on 127.0.0.1 │ │ ▼ │ │ ┌──────────────────────────────┐ localhost │ │ │ Prometheus Runtime │────────────────────┐ │ │ │ Parser / Chunker / Retrieval │ ▼ │ │ │ FastEmbed / sqlite-vec │ ┌────────────┐ │ │ └──────────────────────────────┘ │ Ollama │ │ │ │ Local LLM │ │ │ └────────────┘ │ └─────────────────────────────────────────────────────────────┘
127.0.0.1, not a public network API. After runtime and models
are installed, the internet is not required.
What the plugin does
The plugin stays thin. It:
- renders Chat, Search, Status, and Settings UI;
- reads Markdown through the Obsidian Vault API;
- listens to
create/modify/rename/delete; - downloads, verifies, and starts the managed Runtime (or connects a custom binary);
- opens a note and heading from a source citation;
- sends documents and questions to Runtime over localhost.
The plugin does not compute embeddings, own the vector index, or call the LLM directly.
Vault indexing
When a note changes, the plugin debounces, reads the file, and sends the document to Runtime:
- validate Vault ID, Document ID, and revision;
- skip if
content_hashis unchanged; - parse Markdown and run heading-aware chunking;
- generate embeddings with FastEmbed;
- atomically upsert into sqlite-vec and update the SQLite manifest / FTS.
Indexing is idempotent: the same hash does not recompute embeddings. Rename keeps the Document ID; delete removes chunks and vectors.
Query / RAG pipeline
Answering a question (Chat)
- embed the query;
- dense search (default) over sqlite-vec;
- optional hybrid dense + BM25 (FTS5) via weighted RRF;
- optional reranker (cross-encoder);
- select context within a token budget;
- grounded prompt → Ollama → streamed answer + sources.
Semantic search (Search)
Same retrieval component, without calling the LLM: you get a ranked list of fragments and can open notes directly.
PROMETHEUS_RETRIEVAL_MODE=dense|hybrid.
Reranking is enabled separately with PROMETHEUS_RERANKER_ENABLED.
Grounding policy
The model is instructed to rely only on the provided context.
If retrieved chunks are insufficient, Runtime returns
insufficient_context — the product should tell you that,
not fill gaps from the model’s general knowledge.
Where data lives
- Vault Markdown — the single source of truth, inside the Obsidian vault.
- Runtime binary, embedding index, models — outside the vault and outside
.obsidian/plugins, so they stay out of Obsidian Sync / Git. - Ollama model weights — in Ollama’s directory on your machine.