Skip to content

openKMS

Open Knowledge Management System — one governed knowledge network for people and agents.

Teams retrieve, contribute, and govern the same corpus—so answers stay sourced and permission-aware, not trapped in private chat or stale files.

Repository on GitHub :material-github: Quickstart


Why openKMS?

Most organizations already have files, wikis, and AI chat. The gap is one place where:

  • Frontline staff can find answers with sources they dare use in real work.
  • Experts can contribute without a separate publishing project.
  • The organization can govern who sees what, what is still valid, and what must be reviewed.
  • Agents can discover, retrieve, answer, and cite in-bounds content—not only a model with no corpus.

openKMS treats those as one network, not separate “KM for humans” and “RAG for bots.” If governance exists but nobody uses the system—or if search works but answers cannot be trusted for compliance—both sides fail.

North star: Goals — Frontline confidence · Expert contribution · Organizational governance · Agent readiness.

What you build in openKMS

Content lives in channel trees (like folder hierarchies). Typical surfaces:

Surface Role
Documents Upload PDFs and office files; parse to editable Markdown (PaddleOCR-VL via a separate VLM server); versions and policy lifecycle.
Articles Markdown CMS with channels, attachments, and relationships (supersedes, amends, see_also, …).
Wiki spaces Path-based notes, vault import, page graph, semantic page search.
Knowledge bases Hybrid search and Q&A with provenance (chunks, sources, optional QA Agent service).
Knowledge map & ontology Terms linked to channels/spaces; optional structured data and graph explore.

Under the hood: operation permissions + resource ACL (admin does not imply read-all data), evaluations for retrieval and wiki coverage, and development plan for what is shipped vs next.

Where to start

If you want to… Read
Understand why openKMS exists (vision & business problems) Goals & vision
Try it locally with Docker or on the host Quickstart
Learn ontology by building a mini Kanban Tutorial: Understanding the ontology (Kanban lab)
DIY a Tushare → Stock → Function case study Tutorial: Tushare market ontology
Understand the system Architecture · Functionalities
Find a specific feature or API Functionalities → features/*.md
HTTP or schema reference API reference · Data models
Knowledge artifact types Knowledge types
Sharing and resource ACL Data security
Use openKMS from an agent (skill + CLI) openkms-skill
Set up a dev environment Developer setup
Deploy with Docker Operations · Docker
Review security design (principles) Security · Data security · Console & auth
See what's planned next Roadmap · Development plan
Compare openKMS to other stacks or read KM frameworks Research (below)
Edit the docs (human or AI agent) Doc conventions for AI agents

Research

Notes for architecture and product decisions (not shipped feature specs):

Topic Document
RAG engine vs openKMS RAGFlow vs openKMS
Confluence AI (Rovo) vs openKMS Confluence AI vs openKMS
LLM wiki (llm_wiki) vs wiki spaces LLM wiki vs openKMS
Measuring KM outcomes (OKF dimension) Operational Knowledge Fitness
Evaluating articles & wiki text Text content evaluation

At a glance

flowchart LR
  User([Browser]) -->|Vite 5173 / nginx 8082| FE[React SPA]
  FE -->|/api| BE[FastAPI · 8102]
  BE --> PG[(PostgreSQL + pgvector)]
  BE --> S3[(S3 / MinIO)]
  BE --> WK[Procrastinate worker]
  WK --> CLI[openkms-cli]
  CLI --> VLM[mlx-vlm · 8101]
  BE -. /ask .-> QA[QA Agent]
  QA -. retrieve .-> BE
Service Default port
Backend (FastAPI) 8102
Frontend (Vite dev) 5173
Frontend (Docker, nginx) 8082
VLM server (mlx-vlm) 8101

Project layout

Path What's inside
backend/ FastAPI service, async SQLAlchemy, Alembic migrations
frontend/ React 19 + Vite SPA
openkms-cli/ Document parsing / pipeline CLI used by the worker
openkms-skill/ Optional SKILL + CLI for agents (Bearer personal API key; not in Docker)
vlm-server/ mlx-vlm HTTP server (PaddleOCR-VL backend)
docker/ Dockerfiles and docker-compose.yml
docs/ This site