The Problem
Technical teams that need a WYSIWYG markdown experience for knowledge‑base authoring currently have to choose between generic editors (Notion, Google Docs) that offer no AI‑augmented authoring, or developer‑focused tools (VS Code, Obsidian) that lack rich‑text styling and out‑of‑the‑box LLM integration. The result is duplicated effort: authors maintain separate docs and code, and AI harnesses must be wired manually for each repository.
What This Does
OpenKnowledge is a markdown IDE that doubles as an LLM‑wiki with integrated AI editing, git‑backed sharing, and a desktop/web cross‑platform client.
- Core UI lives in
packages/app/– the React/Next.js app (packages/app/src/App.tsxis the root component, rendered viapackages/app/index.html). - Editor extensions are under
packages/app/src/editor/:asset-dispatch/index.ts,clipboard/index.ts,image-upload/index.tshandle file I/O and AI‑mediated asset flow. - AI harnesses (Claude, Codex, OpenCode, etc.) are wired through the MCP/CLI infrastructure exposed by
packages/cli/. The CLI scripts in.github/scripts/(e.g.,cla-gate.mjs,write-back.mjs) manage skill registration and artifact persistence. - Document store is markdown/MDX files under
docs/(249 files) and thepackages/monorepo; changes are synced via git/GitHub using the CI pipelines in.github/workflows/. - Styling uses Tailwind (
docs/tailwind.config.ts) and the Biome plugin set inbiome-plugins/for linting/format checks. - Configuration is provided by
.env.exampleat root anddocs/.env.example; required keys (e.g., API tokens for LLMs) are injected at runtime.
The repository contains 5 596 files (TypeScript 4 058, TSX 1 025, Markdown 86, JSON 84, YAML 32, Shell 20, HTML 13, Rust 7). Test coverage is substantial: 2 879 test files discovered, and 267 documentation files are present.
How It Is Wired
- Entry point –
packages/app/index.htmlloads the React app; the first render ispackages/app/src/App.tsx. - App → editor modules –
App.tsximportsasset-dispatch,clipboard, andimage-uploadto give the editor drag‑and‑drop, copy/paste, and image insertion capabilities. - AI editing – When a user invokes an AI skill, the request is routed through
packages/cli/scripts (e.g.,cla-gate.mjsvalidates the skill manifest) and then to the selected LLM via MCP. The returned markdown is written back throughwrite-back.mjs, which updates the underlying.md/.mdxfile and commits the change via the GitHub Actions workflows (.github/workflows/release.yml,.github/workflows/write-back.yml). - Sync & sharing – Git‑based sync is handled by the CI pipelines; the
share-contract-*scripts (share-contract-reader-gate/action.yml, etc.) expose a contract for team‑wide document sharing. - Build & lint –
biome.jsoncandbiome-plugins/enforce code style;pnpm(package.jsonat root) resolves dependencies; Next.js config (docs/next.config.ts) builds the web UI.
No structural red flags were detected: tests, CI, license, and lockfile are all present where expected.
How To Use It
| Step | Command (from README) | What it does |
|---|---|---|
| Install desktop | Download from <https://openknowledge.ai/download> or latest release (github.com/inkeep/open-knowledge/releases/latest) | Provides macOS DMG, Windows exe, Linux deb/rpm. |
| Install web CLI | npm install -g @inkeep/open-knowledge | Installs the ok CLI binary. |
| Scaffold a project | cd your-project && ok init | Generates ok.config.json, wires default MCP/skills, creates a starter .md vault. |
| Start web UI | ok start --open | Spins a local dev server and opens the editor in the default browser. |
| Add AI skills | Edit ok.config.json (or use ok config add …) – specifies which LLM harnesses (Claude Code, OpenCode, etc.) are available. | |
| Enable git sync | Ensure a GitHub remote is added; the write-back.yml workflow will auto‑commit markdown changes. |
Environment variables (API keys, etc.) are expected in .env.example at the repo root and docs/.env.example; copy these files and fill in your keys before running ok start.
Real‑World Use
A product team maintaining an internal knowledge wiki can clone the repo, run ok init, and immediately have a searchable, WYSIWYG markdown canvas. Authors write meeting notes or specs in the editor; the team enables the Claude skill, so an LLM can instantly rewrite a section, summarize a paragraph, or fill a template. Because changes are committed to git, the wiki stays versioned and diff‑able. Team members share the vault via GitHub, and the share-contract gates enforce access control without additional infrastructure.
Code Health & Issues
- Measured analysis (static, not opinion):
- 2 879 test files detected across the monorepo.
- 267 documentation files present (
.mdx,CHANGELOG.md, etc.). - No missing license or lockfile;
LICENSEandpackage-lock.json/pnpm-lock.yamlare present. - CI pipelines (GitHub Actions) cover build, test, release, and share‑contract gates.
- Potential SDLC observations:
- The
packages/directory is large (5 151 files) – cloning or CI runs may be slow on low‑end machines. - Some workflow scripts (e.g.,
bridge-public-pr-to-monorepo.mjs) are complex; a newcomer may need to review the.github/scripts/directory to understand PR‑bridging logic. - No explicit Dockerfile in the root; containerised deployment would require a custom Dockerfile or using the provided installers.
The Bottom Line
OpenKnowledge delivers a polished, AI‑native markdown editor that bridges the gap between a rich text workspace and an LLM‑augmented knowledge base. Its strength lies in the integrated MCP/CLI skill system, git‑backed sharing, and cross‑platform availability. The main trade‑off is the size of the monorepo and the need to configure LLM API keys before full AI editing can be used. It is well‑suited for teams that want a unified wiki/notes platform with built‑in agent assistance and are comfortable with a moderately large codebase.