Self-hosted wiki workspace for teams that want their documents to become a durable, searchable knowledge base instead of another pile of files.
Team Wiki takes source documents, extracts text, generates structured wiki pages and chunks, and then uses those pages for search, graph exploration, review, deep research, and grounded chat. It follows the same core idea as the llm-wiki pattern: raw sources stay traceable, generated pages become the working knowledge layer, and humans remain in control of review and correction.
The maintained open-source web app lives in app/. Legacy desktop prototype sources are kept out of the first web release package so the public repository has one clear deployment path.
Traditional RAG often retrieves raw chunks every time you ask a question. Team Wiki adds a persistent knowledge layer in between:
source files -> text extraction -> wiki pages + chunks -> graph/search/review/chat
That gives the team a shared artifact to inspect, edit, search, lint, and improve over time. The AI is not the only interface; the generated wiki is readable and editable by people.
- Document ingestion for
md,txt,pdf,docx,pptx, andxlsx. - Generated wiki pages with source traceability, page types, frontmatter, chunks, and search metadata.
- Optional LLM chat over workspace knowledge with cited source pages.
- Knowledge graph and graph insights for relationships, clusters, gaps, and source overlap.
- Review workflow for semantic checks, structure checks, contradictions, missing pages, and suggestions.
- Deep research workflow that can turn web search results into wiki pages when a search provider is configured.
- Workspace memory for stable facts, preferences, terminology, and project decisions.
- Activity timeline for uploads, ingest jobs, searches, chats, research, review, and wiki edits.
- Email-based workspace sharing for registered users.
- Schema presets for the default knowledge structure, personal growth, project management, process management, deep research, and reading notes.
- Optional model providers: OpenAI-compatible endpoints, DeepSeek, Qianfan, Tavily, and custom embedding endpoints.
Docker Compose is the recommended path. It starts the app and PostgreSQL with matching defaults.
cd app
cp .env.example .env
docker compose up --buildOpen http://localhost:3000.
To create the first admin user, set these values in app/.env:
ADMIN_EMAIL=admin@example.com
ADMIN_PASSWORD=replace-with-a-strong-password
ADMIN_NAME=AdminThen run:
docker compose exec app npm run seedIf ADMIN_EMAIL or ADMIN_PASSWORD is not set, the seed step is skipped.
Use this path when PostgreSQL is already available.
cd app
cp .env.example .env
npm install
npx prisma migrate deploy
npm run build
npm startFor development:
npm run devRequired values:
DATABASE_URLAUTH_SECRETAUTH_URLorNEXTAUTH_URLSTORAGE_ROOT
Optional AI configuration:
- Chat model:
LLM_API_KEY,LLM_BASE_URL,LLM_MODEL, or theOPENAI_*aliases. - DeepSeek:
DEEPSEEK_API_KEY,DEEPSEEK_BASE_URL,DEEPSEEK_MODEL. - Web search:
SEARCH_PROVIDER,TAVILY_API_KEY,QIANFAN_API_KEY. - Embeddings:
EMBEDDING_ENDPOINT,EMBEDDING_MODEL,EMBEDDING_API_KEY.
Without a chat model, chat, AI-assisted ingest, semantic review, and research synthesis are unavailable. Without embeddings, semantic/vector search is disabled and Team Wiki falls back to keyword search where possible.
See:
| Format | Support |
|---|---|
md, txt, code-like text |
Direct text read |
pdf |
PDFium extraction with fallback parser |
docx |
Raw text extraction via Mammoth |
pptx |
Basic slide XML text extraction |
xlsx |
Workbook and sheet text extraction |
Uploads and generated workspace files live under STORAGE_ROOT. In Docker, the default volume is mounted at /app/uploads.
- Upload one or more source files.
- Team Wiki stores the file under
STORAGE_ROOT. - The ingest queue extracts text and runs the configured generation pipeline.
- Generated pages, chunks, graph data, review items, and activity records are saved.
- Search, graph, review, chat, and research use the generated wiki layer rather than only raw chunks.
Run the same checks used before publishing this open-source build:
cd app
npm run test:unit
npx tsc --noEmit --pretty false
npm run lint
npm run build
npm run smoke:p0
npm run smoke:e2e
npm run smoke:fullsmoke:e2e needs a registered user. Set E2E_EMAIL and E2E_PASSWORD, or create a temporary account before running it.
- Do not commit
.env,.env.local, uploaded files, generated workspace data, database dumps, or provider keys. .env.examplecontains placeholders only.- Legacy enterprise integrations are optional and disabled by default.
- All workspace APIs should be treated as permissioned APIs; keep
AUTH_SECRETprivate and rotate provider keys if they are exposed.
Team Wiki is inspired by:
- nashsu/llm_wiki, a desktop implementation that turns local documents into a persistent generated wiki.
- Andrej Karpathy's llm-wiki gist, which describes the raw-sources, generated-wiki, schema, ingest, query, and lint pattern.
This project adapts those ideas into a self-hosted web application for teams, with PostgreSQL, local accounts, email sharing, schema presets, activity records, and deployment-oriented documentation.
GPL-3.0. See LICENSE.