Mindlink: An AI Document Editor Built on Block Trees, CRDT Sync, and Private Deployment
Self-hosted teams can now get block-based editing, CRDT real-time sync, and AI features without letting document content leave their own infrastructure. The JSON Schema export and plugin hooks also make Mindlink usable as an embeddable editor base for knowledge bases, work-order systems, and internal CMS products, not as another SaaS platform to migrate into.
Mindlink is a self-hosted AI document editor whose core bet is that a document is not a styled HTML string but an ordered tree of addressable blocks. Each block carries id, type, data, and toolsets, which gives deterministic cross-client rendering, block-granular diffs, and a registration-based extension system that does not require kernel changes. Collaboration runs on CRDT rather than OT: terminals merge edits causally, can keep writing through network loss, and avoid the delete-resurrection bug that plagues operation-ordered sync.
Sync traffic stays small with a binary incremental-frame protocol: a typical keystroke produces a frame under 200 bytes, and the server only forwards frames and appends a change log. Documents are sharded into collaboration rooms with snapshots and online member lists, and reconnection uses baseline exchange, delta catch-up, and continuous push. Rendering avoids whole-page flicker by hashing block content into semantic fingerprints, applying only insert/delete/move/content-change DOM operations, and anchoring the cursor to moved blocks.
The architecture splits into presentation, kernel, collaboration, and service layers. The kernel does not assume a backend exists, so Mindlink can run fully offline as a frontend component, while the service layer is replaceable and built for one-click private deployment: reverse proxy, process daemon, embedded database, and a storage abstraction that switches between SQLite, MySQL, and Postgres. Six plugin hooks add custom block types, toolsets, slash commands, import/export pipelines, AI provider routing, and themes; block data exports as standard JSON Schema. The stated performance targets are block insert under 100ms, 1000-block document open under 500ms, and first-screen static resources under 30KB gzipped.
The stated view of documents as information carriers, with formatting as one property, justifies the block model. Once tables, whiteboards, mind maps, and business components are block types, the extension API matters more than the formatting toolbar.
Making AI a customer-routed, off-by-default adapter is what lets Mindlink call itself an AI document editor while keeping “data never leaves the intranet” true. Without that design choice, the AI feature would fail the compliance test that private deployment is meant to pass.
Positioning Mindlink as an editor base, not a full platform, avoids head-on competition with Feishu, Tencent Docs, and Notion. It also turns developers who build knowledge bases and work-order systems into distribution channels for the underlying editor.
The performance targets are unglamorous, and that is the point: sub-200 byte sync frames and sub-500ms open times for a thousand-block document are the thresholds that make offline-first collaboration feel tolerable on weak networks.