██╗ ██╗██████╗ ██╗ ██╗██╗
██║ ██║██╔══██╗██║ ██╔╝██║
██║ ██║██║ ██║█████╔╝ ██║
██║ ██║██║ ██║██╔═██╗ ██║
╚██████╔╝██████╔╝██║ ██╗██║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝
Actuals :
UDKI is a CLI-first experiment for building a personal LLM-maintained wiki.
Think of it like this:
- You bring the documents.
- UDKI keeps the raw sources untouched.
- The LLM reads them, writes markdown pages, links ideas together, and keeps a log.
- You browse the result like a living knowledge base.
It is not trying to be another “upload docs, ask one question, forget everything” RAG demo. The whole point is compounding knowledge: every ingest should make the wiki richer for the next question.
UDKI maintains three layers:
raw/: immutable source files you add.wiki/: LLM-written Obsidian-compatible markdown.config/AGENTS.md: the operating rules for how the wiki should be maintained.
The generated wiki can contain:
- source summaries
- concept pages
- entity pages
- syntheses
- cross-links
- citations
index.mdlog.md
Most document chat apps rediscover knowledge from scratch every time you ask a question.
UDKI takes a different path: it asks the LLM to build and maintain a persistent markdown wiki. That means useful answers can become durable pages, contradictions can be tracked, and concepts can accumulate instead of disappearing into chat history.
Obsidian is the reading surface. The CLI is the engine room.
From this repo:
/Users/udayanpanda/.local/bin/uv sync
cp .env.example .envAdd your OpenAI key to .env:
OPENAI_API_KEY=your_key_here
OPENAI_MODEL=gpt-4.1-miniStart the interactive CLI:
/Users/udayanpanda/.local/bin/uv run llm-wiki initYou will get the UDKI banner and a numbered menu:
1 Ingest a source file
2 Ask a question
3 Lint / health-check the wiki
4 Exit
Initialize:
/Users/udayanpanda/.local/bin/uv run llm-wiki initIngest a file:
/Users/udayanpanda/.local/bin/uv run llm-wiki ingest path/to/source.pdfAsk a question:
/Users/udayanpanda/.local/bin/uv run llm-wiki query "What are the key ideas so far?"Health-check the wiki:
/Users/udayanpanda/.local/bin/uv run llm-wiki lintUDKI uses markitdown for document conversion, with direct fallback support for markdown and text.
The POC is intended to support:
.md.txt.pdf.docx.pptx.xls.xlsx- other formats supported by
markitdown
UDKI/
config/
AGENTS.md
examples/
sample-source.md
llm_wiki/
cli.py
extract.py
llm.py
wiki.py
pyproject.toml
Runtime folders are ignored by git:
raw/
wiki/
.env
.venv/
This is a working POC, not a finished product.
Done:
- colorful UDKI terminal welcome
- interactive CLI menu
- source ingestion
- OpenAI-backed wiki synthesis
- markdown wiki writes
- index/log maintenance
- query flow with cited pages
- lint command scaffold
Next good improvements:
- local/free embeddings for larger wiki search
- better Obsidian link validation
- batch ingest
- human review mode before file writes
- richer source metadata
- web UI after the CLI proves the workflow
The source files are the ground truth.
The wiki is the working memory.
The LLM is the maintainer.
You stay in charge of taste, direction, and what deserves attention.