An AI-powered personal knowledge base with an interactive graph visualisation, Claude-powered chat, and a structured wiki for cybersecurity and agentic AI research.
- Ingest — drop any PDF, PPTX, CSV, or text file into
raw/; run the ingest pipeline to extract, convert, and file knowledge automatically acrosswiki/pages. - Graph View — an interactive Cytoscape.js graph visualises all wiki pages (sources, entities, concepts, analyses) as nodes with cross-reference edges.
- Chat — ask natural-language questions; Claude answers using only the wiki content and cites pages inline.
- Wiki — a structured, LLM-maintained knowledge base with pages for sources, entities (people/orgs/tools), concepts (frameworks/ideas), and analyses.
| Layer | Technology |
|---|---|
| Backend | Python · FastAPI · Uvicorn |
| AI | Anthropic Claude API (claude-opus-4-5) |
| Frontend | Cytoscape.js · Vanilla JS |
| Wiki format | Markdown with YAML frontmatter |
| Source conversion | scripts/ingest.py |
knowledgraph/
├── raw/ # Drop source files here (PDF, PPTX, CSV, TXT…)
│ ├── assets/ # Downloaded images referenced in sources
│ └── *.md # Auto-converted markdown (generated by ingest.py)
├── wiki/ # LLM-maintained knowledge base
│ ├── index.md # Content catalog
│ ├── log.md # Append-only operation log
│ ├── sources/ # One summary page per ingested source
│ ├── entities/ # Pages for people, orgs, products, tools
│ ├── concepts/ # Pages for ideas, frameworks, methodologies
│ └── analyses/ # Query syntheses and lint reports
├── scripts/
│ └── ingest.py # Source-to-markdown converter
├── static/
│ └── index.html # Frontend (graph + chat UI)
├── app.py # FastAPI server
├── CLAUDE.md # Schema & workflow instructions for Claude
└── AGENTS.md # Same schema for non-Claude agents
pip install fastapi uvicorn anthropic pyyaml python-multipartCreate a .env file in the project root:
ANTHROPIC_API_KEY=sk-ant-...
python app.pyOpen http://localhost:8000.
| Method | Path | Description |
|---|---|---|
GET |
/ |
Frontend UI |
GET |
/api/graph |
All wiki nodes + edges as JSON |
GET |
/api/page?path=<rel> |
Raw markdown of a single wiki page |
GET |
/api/chat?q=<question> |
Streaming SSE chat (Claude + wiki context) |
POST |
/api/ingest |
Trigger ingest pipeline on a file in raw/ |
The wiki is maintained by Claude following the schema in CLAUDE.md. Three operations are supported:
ingest <filename>— process a new source file and update all relevant wiki pagesquery— ask a question; answer is synthesised from wiki pages with citationslint— audit the wiki for contradictions, orphan pages, stale claims, and missing links
| Type | Count |
|---|---|
| Sources | 1 |
| Entities | 5 (OWASP, NIST, MITRE ATLAS, C2PA, Arup) |
| Concepts | 6 (Prompt Injection, Agentic AI Security, NHI, RAG Security, Digital Provenance, Post-Quantum Cryptography) |
| Analyses | 0 |
MIT