AutoWiki Agent
by time-scout
README.md
  
# š§ AutoWiki Agent: The Autonomous Knowledge Base Compiler
**Stop letting LLMs hallucinate over your notes.**
AutoWiki Agent is a deterministic **Model Context Protocol (MCP) server** that compiles any LLM-readable text ā transcripts, articles, contracts, notes ā into a strict, verifiable, **graph-based knowledge base**.
No silent overwrites. No hallucinated facts. No lost sources. Just pure, traceable knowledge evolution.
> **v2.0 ā Autonomous Architecture.** Unlike v1, the server itself drives the LLM through deterministic chunking and parallel extraction of 6 epistemology primitives. The client agent is reduced to a thin pipe.
---
## š„ The Problem With AI Agents Editing Your Wiki
When you ask an AI to "update my wiki," it usually fails:
- ā **Silent Overwrites:** It deletes old (but vital) facts to make room for new ones.
- ā **Hallucinations:** It bridges knowledge gaps by inventing compromises.
- ā **Lost Sources:** You have no idea *which* PDF or web search a specific sentence came from.
- ā **Schema Drift:** Every agent invents its own entity shape; the wiki becomes a junk drawer.
**AutoWiki Agent fixes all of this.**
---
## š”ļø Core Features
### 1. Bottom-Up Epistemology (6 Primitives, Not Categories)
AutoWiki rejects hard-coded "Client" or "Pain Point" types. Instead, every chunk is parsed into **6 universal epistemology primitives**:
| Primitive | Schema | What It Captures |
|---|---|---|
| **Document DNA** | `DocumentDNA` | Format, primary intent, tone (one-shot per file) |
| **Identifiers** | `UniversalIdentifier` | Names, jargon, entities (with normalization) |
| **Quantifiers** | `UniversalQuantifier` | Numbers, dates, metrics, units |
| **Relations** | `UniversalRelation` | Subject ā action ā target graph edges |
| **Directives** | `UniversalDirective` | Tasks, promises, obligations, warnings |
| **Unknowns** | `UniversalUnknown` | Explicit knowledge gaps and open questions |
### 2. Server-Driven LLM Calls
The server calls the LLM directly via HTTP. The client agent does **not** need to perform extraction itself. This means:
- Deterministic chunking via `tiktoken` (1000 tokens / 150 overlap)
- Parallel sampling (5 concurrent requests per chunk)
- Strict Pydantic schema validation with automatic retry
- Pagination (`start_chunk` / `max_chunks`) to avoid timeouts
### 3. Iron Standard Source Protocol
Every fact in `/wiki` is anchored to a **Source Passport** in `/inbox`. No source ā no fact.
### 4. Knowledge Evolution Protocol
Facts are never deleted. Updates are documented inline (`*(Evolution: previously described as...)*`). Contradictions are flagged with `#NEEDS_HUMAN_RESOLUTION`, never silently resolved.
### 5. Gatekeeper Filter
Only entities explicitly extracted from a chunk may "own" facts in that chunk. Anything else is bucketed into a `Document_*` container. Prevents cross-contamination of unrelated entities.
### 6. Git-Backed Audit Trail
Every semantic update is committed to a local Git repository. Full history, no overwrites.
### 7. MCP Native
Drop-in integration with Claude Desktop, Cursor, Gemini CLI, Windsurf, Roo Code, and any MCP-compatible client.
---
## š Quickstart
### 1. Install
```bash
git clone https://github.com/time-scout/autowiki-agent.git
cd autowiki-agent
pip install -e .
```
### 2. Configure
```bash
cp .env.example .env
# Edit .env and set LLM_API_KEY, LLM_BASE_URL, LLM_MODEL
```
The server expects an **OpenAI-compatible** chat completions endpoint.
### 3. Connect your MCP client
Add this to Claude Desktop, Cursor, Gemini CLI, Windsurf, or Roo Code:
```json
{
"mcpServers": {
"autowiki": {
"command": "autowiki",
"args": ["start"]
}
}
}
```
### 4. Initialize and use
Talk to your AI client:
> *"Initialize my workspace at ~/Desktop/MyBrain. Then process everything in /inbox."*
Watch what happens:
1. AutoWiki sets up `/inbox`, `/wiki`, `/archive`, `/.autowiki`.
2. Drop a file into `/inbox` (any text/markdown/JSON).
3. Call `autowiki_ingest_document` ā the server chunks, calls the LLM 5x in parallel per chunk, validates against Pydantic schemas, retries on failure.
4. Knowledge graph is committed to `/wiki` and Git.
---
## š Workspace Layout
```
<workspace>/
āāā inbox/ # Drop raw sources here (text, md, json)
āāā wiki/ # Compiled knowledge base (one .md per entity)
āāā archive/ # Processed sources (auto-moved)
āāā .autowiki/ # Internal SQLite state
```
---
## š MCP Tools Exposed
| Tool | Purpose |
|---|---|
| `check_autowiki_status` | Returns init status (call this first) |
| `autowiki_onboarding` | Initializes the workspace |
| `autowiki_ingest_document` | Chunks + LLM extraction + commit (paginated) |
| `format_filename` | Generates Iron Standard filename |
| `read_inbox` | Lists files in `/inbox` |
| `get_entity_knowledge` | Reads entity from `/wiki` |
| `commit_updates` | Writes facts to `/wiki` (manual use) |
---
## š Technical Documentation (ADR)
Detailed architectural decisions live in `docs/`:
- [00: Problem Statement](docs/00-PROBLEM-STATEMENT.md)
- [01: Provenance & Traceability](docs/01-PROVENANCE-AND-TRACEABILITY.md)
- [02: Conflict Resolution](docs/02-CONFLICT-RESOLUTION.md)
- [03: Concurrency & Control](docs/03-CONCURRENCY-AND-CONTROL.md)
---
## š v1 vs v2 (Migration Note)
This is **v2.0**. The original v1 release is preserved at [`time-scout/autowiki-daemon`](https://github.com/time-scout/autowiki-daemon) for historical reference.
| Aspect | v1 (Daemon) | v2 (Agent) |
|---|---|---|
| Chunking | Done by the LLM agent | Deterministic `tiktoken` 1000/150 |
| Entity extraction | Agent-driven, ad-hoc | Server-driven, 6 fixed primitives |
| LLM calls | ~2 (extract, compare) | 5 parallel per chunk + DNA per file |
| Schema | 2 Pydantic models | 6 Pydantic models |
| Concurrency | Single-writer | 5 concurrent LLM calls per chunk |
| Pagination | None | `start_chunk` / `max_chunks` |
| Entity filter | None | Gatekeeper: only chunk-local entities |
| Working language | English | Ukrainian (UI/logs), English (prompts), source-locale (facts) |
---
## āļø License
Distributed under the MIT License. See `LICENSE` for more information.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues