Publication
LLM Wiki in Action: How a Docker Agent Saved a War-Torn Physicist's Lectures in a Self-Updating Wiki Overnight
This blog post was written specially for DOU.
Recently, I published an article on DOU "From RAG to LLM Wiki: How to Build a Persistent Knowledge Base Inspired by Andrej Karpathy's Concept". In it, we discussed the theory: why classic RAG forces the model to reinvent the wheel every single time, and how replacing vector search with a compiled and cross-referenced Markdown knowledge base (managed by an AI agent) solves the bookkeeping tax.
Today, I want to share a live case study. It's a story of how theory turned into a tool for digital knowledge resilience when a real scientific archive was threatened with complete destruction due to a missile strike.
Context: The Tragedy That Triggered It
On the night of July 2, 2026, a Russian missile attack on Kyiv (during which the enemy launched 74 missiles and 496 drones) destroyed a building near the Dovzhenko Film Studios. In this building, the apartments of Taras Shevchenko National University of Kyiv associate professor, well-known physicist and science popularizer Mykhailo Vysotskyi, as well as his parents' home, burned down.
The fire completely destroyed documents, equipment, scientific research, and a family archive collected over 100 years. Mykhailo himself commented: "We have absolutely nothing left... my entire life is destroyed".
Due to the loss of equipment and archives, Mykhailo announced that he is likely stopping work on his YouTube channel, where he had spent years sharing deep, popular science lectures on physics, cosmology, and astrophysics for free.
For me, this was a trigger. The scientist's personal physical archives are, unfortunately, lost forever. But his public lectures on YouTube — are knowledge that can still be saved.
What Was Done: Archiving Knowledge
I built an independent educational archive based on the open video lectures of the "Mykhailo Vysotskyi: Science Popular Lectures" channel. The result is the website "Scientific Image of the World".
As of now, the knowledge base includes:
- 48 raw sources (cleaned lecture transcripts) in the
raw/folder, which were imported in batch; - 41 concept pages (
wiki/concepts/) and entities (wiki/entities/) covering quantum physics, theory of relativity, cosmology, biological evolution, scientific method, etc.;
Technical Architecture: LLM Wiki Under the Hood
The entire website content and link structure were generated by an LLM agent running locally in a Docker container. I acted solely as an architect and validator (a human-in-the-loop approach).
The project is built according to the LLM Wiki pattern, but extended with the MkDocs generator:
.
├── src/
│ ├── hooks.py # MkDocs build Python hooks
│ ├── config.yaml # Config for hooks
│ ├── templates/ # Markup templates for page builds
│ └── overrides/ # Custom theme overrides for Material
├── mkdocs.yml # Main site configuration file
└── data/ # Source data directory
├── raw/ # Primary sources
├── wiki/ # Wiki knowledge base
├── pages/ # Static pages
└── static/ # Static files
1. Isolated Subagents for Ingestion (Ingest)
This is the key decision I mentioned in the theoretical article. Instead of "feeding" the main agent dozens of lecture transcripts at once (which would instantly clog the model's context window and lead to hallucinations), the architecture relies on launching isolated subagents.
The main orchestrator took a single lecture transcript file, created a clean subagent for it, which analyzed the text, created or updated concept files, and returned the result. After that, the subagent was destroyed, and the orchestrator moved on to the next file.
2. Quality Control via Git Diff
Models are prone to making mistakes. To guarantee accuracy, every action of the agent was tracked by local changes in Git. Before publishing, I reviewed the changes via git diff. If the agent linked concepts incorrectly or misrepresented a scientific term, I discarded the changes (or rolled back the commit) and adjusted the instructions.
3. MkDocs, Python, and Custom Hooks
The site is rendered as static using the MkDocs generator with the Material theme. For dependency management and fast building, the modern tool uv is used:
uv run mkdocs build
Standard MkDocs out of the box did not perform this task perfectly, so the agent, under my supervision, wrote custom Python hooks that automated the routine:
- Cyrillic sorting: Standard MkDocs sorting breaks on Ukrainian letters (І, Є, Ґ, etc.) if the required system locale is missing in the OS or Docker container. The hook implements sorting independent of OS locales.
- Dynamic navigation: We did not write the
navsection in `mkdocs.yml` manually. The hook scans theconcepts/and `entities/` folders on its own and builds the menu tree on the fly. - Interactive widgets: A "Random Articles" block was implemented with adaptive mobile layout to make it easier for readers to explore the knowledge base.
The Process: "From a Phone at a Playground"
The biggest wow-moment of this project is the shift in the developer's role. I didn't write the article texts or add hundreds of cross-references manually. Most of the work was done by the agent while I was walking with my child outside.
My workflow looked like this:
- Launched the Docker container with the agent via an SSH client on my phone.
- Instructed the agent to clone the repository via a chat messenger.
- Delegated the agent to make lecture transcripts and drop them into the
inbox/folder. - Started the ingestion skill (
ingest) and went to sleep. - For over 4 hours, the agent in Docker autonomously and sequentially processed dozens of texts, building relationships.
- In the morning, I verified the result and made sure the structure was logical.
This is a clear demonstration of eliminating the bookkeeping tax. All mechanical work is delegated to the AI, and the human only guides the direction and validates the final result.
Why Is This Important for the Community?
The war has shown that digital infrastructure and physical media are vulnerable. The LLM Wiki approach is not just a way to save time on note-taking. It is an instrument of digital knowledge resilience.
If you have valuable public sources, lectures, or materials that might disappear — don't wait. Compile them into a persistent knowledge base.
Humanitarian Support
This technical case study was born out of a tragedy for a specific family. Mykhailo Vysotskyi and his parents lost all their property. An informational block has also been placed on the created website calling to support the scientist's family.
If you wish to support Mykhailo's family financially, you can make a donation to his Monobank jar.
Conclusions and Links
The practical launch showed: the LLM Wiki pattern indeed scales and works asynchronously without overloading the context.
Useful links for those who want to try:
- First (theoretical) article on DOU: "From RAG to LLM Wiki"
- Created lecture archive site: "Scientific Image of the World"
- Project repository: BogdanovychA/scientific-image
- LLM Wiki template repository: BogdanovychA/llm-wiki (can be cloned and used for your own projects)