llm-wiki-monorepoBLOCK
A production-grade knowledge base operating system — AI agents compile raw sources into persistent, cross-linked Markdown wikis with concurrency control, multi-provider LLM integration, FTS5 search, and community detection. One repo. Any agent. Any machine.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Agent-native knowledge compiler. AI agents turn raw documents into persistent, cross-linked Markdown wikis. No database. No API lock-in. One git clone.
What • Features • Quick Start • Architecture • Packages • Templates • Docs • Credits • License
pip install baissarienterprises-llm-wiki
No local models required. LLM Wiki is agent-native: the intelligence comes from the agent you already run (Codex, Hermes, Claude, OpenCode). The base install is lexical/keyword-only and performs no model downloads. Optional extras for local computation remain opt-in and are not part of the supported default story.
What's New in v0.6.5 — "CI Green"
Embedding degrades instead of crashing. If the optional [semantic] model cannot load at runtime (o
361b3434209aOBSERVED · 2026-10-11Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add llm-wiki-web --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY} --env OPENAI_API_KEY=${OPENAI_API_KEY} --env TOGETHER_API_KEY=${TOGETHER_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"llm-wiki-web": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
"DEEPSEEK_API_KEY": "${DEEPSEEK_API_KEY}",
"OPENAI_API_KEY": "${OPENAI_API_KEY}",
"TOGETHER_API_KEY": "${TOGETHER_API_KEY}"
}
}
}
}Exposed tools (15)
12 read · 3 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
llm_wiki_ask | read | Grounded |
llm_wiki_backup | write | Create a timestamped snapshot backup of the wiki. Archives wiki pages, logs, and audits into a tar.gz with integrity verification.${SIDE_EFFECT.WRITE_BACKUP} |
llm_wiki_discover_entities | read | Discover all entities registered in the wiki. Returns the entity registry with names, paths, types, and aliases. Optionally filter by entity type.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_files | read | List files in the wiki or sources directory as a formatted file tree.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_graph | read | Knowledge graph operations: build, insights, or search. (Backward-compatible wrapper — see llm_wiki_graph_build, _insights, _search for individual tools.)${SIDE_EFFECT.WRITE_PROJECT} |
llm_wiki_graph_build | read | Build the knowledge graph from wiki markdown files. Uses direct graph-engine import — zero subprocess.${SIDE_EFFECT.WRITE_PROJECT} |
llm_wiki_graph_insights | read | Get graph insights — surprising connections and knowledge gaps. Uses direct graph-engine import.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_graph_search | read | Search the knowledge graph for nodes matching a query. Uses direct graph-engine import.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_ingest | write | Trigger ingest of a source file into the wiki via Python sidecar. Zero subprocess — uses long-lived sidecar process.${SIDE_EFFECT.WRITE_PROJECT} |
llm_wiki_lint | write | Run lint checks on wiki pages via Python sidecar. Reports errors, warnings, and suggestions.${SIDE_EFFECT.EXTERNAL_PROCESS} |
llm_wiki_read_file | read | Read the contents of a file. Project-relative path only. Truncated at 120KB. Allow-listed directories: wiki, raw, audit, logs, plus PURPOSE.md, CLAUDE.md, SCHEMA.md.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_reviews | read | List wiki reviews, optionally filtered by status.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_search | read | Full-text + semantic search over wiki markdown pages. Returns ranked results with snippets. Defaults to hybrid (BM25 + semantic vector KNN via RRF); requires the [semantic] extra + an embedded index and degrades to keyword otherwise. Set mode= |
llm_wiki_status | read | Check wiki status — health, page count, last ingest date, open review count.${SIDE_EFFECT.READ_ONLY} |
llm_wiki_suggest_links | read | Suggest missing wikilinks for wiki pages. Analyzes page text against the entity registry and returns link suggestions with confidence scores.${SIDE_EFFECT.READ_ONLY} |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (2 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (6 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (25)
const frontRaw = yaml.load(m[1]!) as Record<string, unknown>;
mod = __import__(mod_name, fromlist=[func_name])
npm start -- --wiki <wiki-root> # http://127.0.0.1:4175
populated-20260704-164048.tar.gz
.schema_version
.schema_version
.schema_version
.schema_version
.schema_version
__import__(f"llm_wiki.{module_name}", fromlist=[""])" __import__(mod)\n"
return path.resolve(__dirname, "../../..");
const repoRoot = path.resolve(__dirname, "../../..");
it("rejects path traversal (../../etc/passwd) if handler checks safeRel", async () => {const res = await request(rawApp()).get("/api/raw").query({ path: "../../etc/passwd" });target: "../../etc/passwd",
# Open http://127.0.0.1:4175
Then open `http://127.0.0.1:4175`. Features:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
MODULARITY_TOLERANCE = 0.01 # |ΔQ| / max(Q) < 1%
js-yaml, zod, @types/js-yaml, @types/node, typescript, vitest
graphology, graphology-communities-louvain, @types/node, tsx, typescript, vitest
@modelcontextprotocol/sdk, graph-engine, sql.js, @types/better-sqlite3, @types/node, tsx, typescript, vitest
typescript, vitest
js-yaml, zod, @types/js-yaml, @types/node, builtin-modules, esbuild, obsidian, typescript
Gates applied: no_behavioural_pass.
361b3434209afull audit observations/trust-audit/mcp-server/jeanbaissari__llm-wiki-monorepo.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-11 | 361b3434209a | BLOCK | D | 69 | first audit |
Questions
What is the llm-wiki-monorepo MCP server?
A production-grade knowledge base operating system — AI agents compile raw sources into persistent, cross-linked Markdown wikis with concurrency control, multi-provider LLM integration, FTS5 search, and community detection. One repo. Any agent. Any machine.
What tools does llm-wiki-monorepo expose?
15 in total: 12 read-only, 3 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is llm-wiki-monorepo safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on.
What credentials does llm-wiki-monorepo need?
It reads ANTHROPIC_API_KEY, DEEPSEEK_API_KEY, OPENAI_API_KEY and TOGETHER_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does llm-wiki-monorepo run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as llm-wiki-web at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (361b3434209a), read on 2026-10-11. The repository is watched and re-audited when it changes.