Your vault's memory and research engine, running locally.
Lumen turns an Obsidian vault from a passive store of notes into an active research collaborator. It runs entirely on local hardware — vault contents never leave the machine.
Proactive surfacing — as you open or edit a note, the plugin pushes related notes, forgotten threads, and connections you wouldn't have made manually into a side panel.
Deep research on demand — ask a complex question and the system retrieves relevant vault content, synthesises a long-form report, and verifies every citation against a real ^id block in your notes. No hallucinated references. Progress streams live as the local model works.
Cross-session memory — the system remembers what you've researched before and uses that context to focus future research plans.
Three processes at runtime:
Obsidian plugin ↔ FastAPI orchestrator (:8765) ↔ Ollama (:11434)
obsidian-plugin/ — TypeScript plugin (esbuild). The only HTTP client. Handles surfacing side panel (related notes), deep research modal with live SSE progress, and report note writing.apps/orchestrator/ — Python FastAPI backend. Thin routes; logic lives in flows/. Runs the always-on file watcher in-process.packages/ — Python libraries: ingestion, retrieval, citation, inference, memory, web.eval/ — eval harness + datasets for validating retrieval and citation quality.# One-time setup
cp config.toml.example config.toml # edit [vault].path
make install # uv sync + pnpm install
# Pull models (adjust to taste)
ollama pull qwen2.5:14b-instruct
ollama pull qwen2.5:7b-instruct
ollama pull nomic-embed-text
# Initial vault ingestion
make ingest
# Start the orchestrator (includes file watcher)
make dev
# Build and symlink the plugin into your vault
make plugin-build
ln -s "$(pwd)/obsidian-plugin" "<vault>/.obsidian/plugins/lumen"
# Then enable it in Obsidian → Settings → Community plugins
make install # install all dependencies (Python + Node)
make dev # start FastAPI orchestrator + file watcher
make ingest # one-shot bulk vault ingestion
make plugin-build # build obsidian-plugin/main.js
make plugin-dev # esbuild watch mode
make test # run Python tests + plugin vitest
make lint # ruff + tsc --noEmit
make format # ruff format + autofix
uv workspaces, FastAPI, LightRAG, DuckDB, LangGraph, mem0aiAll architectural reasoning lives in docs/:
| File | Contents |
|---|---|
docs/00_VISION.md |
What this is and who it's for |
docs/01_MVP_SCOPE.md |
v0.1 scope and success criteria |
docs/02_COMPONENT_MAP.md |
Every component, status, and interface |
docs/03_ROADMAP.md |
Phased delivery with entry-criteria gates |
docs/04_PROJECT_STRUCTURE.md |
Repo layout and rationale |
docs/05_DECISIONS.md |
ADR log |
Source specs (ArchitectureSpecification.md, LocalAgenticRAGArch.md) at the repo root are the north star — not a literal build list.