VeltCKEditor

Comments and co-editing, built for CKEditor

Add comments and co-editing, plus live presence, to your CKEditor instance, for your users and your AI agents. Threads stay pinned to the model as content changes, and every agent edit lands as a suggestion your users approve, so a comment on a clause holds as the model updates around it.

Free tier. No credit card. First comment in 5 minutes.

CKbrief-q3.md / CKEditor
live
BIUH1H2</>

The Q3 campaign centers on the migration storyHope: moving from async reviews to live collaborationEthan. Pricing: three usage tiers from $0, no per-seat cost.

Open
MayaMaya14m

Let's lead with this. Strongest angle we have, @Ethan can you tighten the wording?

live cursors + a comment anchored to the selection · Yjs merges every keystroke

The problem

Build this into CKEditor yourself, and you rebuild it on every release.

Your users expect to comment and co-edit in CKEditor, and your AI agents need that same editor with a human approving before they touch user work. Comments that survive CKEditor's model changes are a multi-quarter build, and the moment anchoring breaks, feedback lands on the wrong model range. Co-editing is the harder half: rolled by hand it means overwrites, lost work, and merge conflicts, the "my changes disappeared" bug reports, plus a websocket fleet and offline merge to keep alive. And the harder question is your agents: a useful agent needs to change the work, but an agent with write access to user content is what your buyers' security review blocks, so without a consent step you choose between an agent that is useful and an agent that is safe. Every quarter spent on this is a quarter not spent on your own product.

Velt is the review and collaboration layer built for CKEditor: your users and your AI agents work the same editor, with comment threads anchored to the model range, and every agent suggestion is a change a human approves before it lands.

Features

Everything your team and your agents need on CKEditor

01agents
Review Agent2m

Clause 7 omits a liability cap. Suggested fix attached.

1 Reply
// agents.tsx
// An agent posts a suggestion as a first-class user.
await velt.comments().add({ author: agent, suggestion });
// On approve, the change fires through your webhook.

Agents as first-class users

Your AI agent comments and suggests on the editor as a first-class user; a human approves or rejects, and on approve the change fires through your webhook with a permanent record.

02comments
Assigned toKim
Rogers2m

@Maya pulled into the thread

2 Replies
// comments.tsx
import { VeltComments } from "@veltdev/react";

<VeltComments textMode />

Comments

Threaded comments on ranges and elements, with replies, @mentions, reactions, and attachments.

03co-editing
TiptapLexicalCodeMirrorBlockNoteReact Flow

plus the core library for your own editor, whiteboard, or grid

// co-editing.tsx
import { useVeltCrdtExtension } from "@veltdev/tiptap-crdt-react";

const extension = useVeltCrdtExtension({ editorId });

Co-editing

CRDT merge on the CKEditor model.

04presence
On this document6 here
5 people · 1 agentmaxUsers collapses the rest
Mayaediting slide 4
Devviewing
Sarahviewing
Review Agentreviewing clause 7
Chrisidle 5m
Youediting
// presence.tsx
import { VeltPresence, VeltCursor } from "@veltdev/react";

<VeltPresence />
<VeltCursor />

Presence and cursors

Live named cursors and selections in the editor.

05suggestions
Brand Agentnow

Suggested a tighter figure on the rate line.

12.010.5
1 Reply
// suggestions.tsx
// Propose changes reviewed like a diff.
<VeltComments suggestionMode />

Suggestions

Propose changes as accept-or-reject suggestions, reviewed like a diff.

06notifications
NotificationsFor You
For YouDocumentAll
Now

Maya mentioned you on Q3 forecastmention

“@you can you review before Friday?”

2m

Sarah replied on the Q3 threadreply

forecast.xlsx · cell B12

9m

Ethan requested your sign-offsign-off

contract.pdf · due today

1h
// notifications.tsx
import { VeltNotificationsTool } from "@veltdev/react";

<VeltNotificationsTool />

Notifications

In-app, email, and Slack alerts on every comment and @mention.

07recording
Recorder Notesanchored
forecast.xlsx · pinned to C18
0:42

voice note · pinned to this cell

“The variance comes from the vendor rate change, see row 18.”

on the worklands on the cell, the field, the frame: not a separate library
// recording.tsx
import { VeltRecorderControlPanel } from "@veltdev/react";

<VeltRecorderControlPanel />

Recording

Pin a quick voice, screen, or video clip in context on the editor.

08version-history
Version checkpointsnamed snapshots
Live draftediting now · 3 collaboratorscurrent
Before pricing rewritesaved 09:14
Outline approvedsaved Mon 16:40
broadcastRestore via API reaches every connected client
// version-history.tsx
await velt.versions().save({ name: "Draft v3" });
await velt.versions().restore({ id });

Version history

Named checkpoints on the document, saved and restored by API.

09single-editor
TiptapLexicalCodeMirrorBlockNoteReact Flow

plus the core library for your own editor, whiteboard, or grid

// single-editor.tsx
<VeltProvider singleEditorMode>
  {/* one editor instance */}
</VeltProvider>

Single editor mode

Run Velt review on a single editor instance without multiplayer.

Agent

a brand-and-compliance agent flags an off-message line on the content and suggests the rewrite as a first-class user; a human approves or rejects, and on approve the change fires through your webhook with a permanent record of who allowed what.

Setup

Production-ready in minutes

01INSTALL
terminal
npm install @veltdev/react @veltdev/ckeditor-crdt-react
02PROVIDER
App.tsx
import { VeltProvider } from "@veltdev/react";

<VeltProvider apiKey={API_KEY}>
  <App />
</VeltProvider>
03MOUNT
CKEditor.tsx
// Mount Velt on CKEditor
<VeltComments />
// + the CRDT adapter for co-editing

Why Velt

The consent step Liveblocks does not have

Liveblocks syncs people and agents into your app's state; Velt adds the step Liveblocks does not, every agent change on CKEditor is a suggestion your user approves or rejects, on the record.

Enterprise

Enterprise-grade security and data control

The controls your buyers' security reviews ask for, in writing.

Adding Velt to CKEditor does not move that surface's content off your stack. Per-feature data providers keep comment content, attachments, and user PII on your own infrastructure; Velt stores only minimal identifiers.

FAQ

Frequently asked questions

Comments only, or co-editing too?

Both. Velt adds threaded comments and conflict-free co-editing on the same CKEditor instance.

Do comments work with CKEditor plugins?

Yes. Velt anchors to ranges and elements alongside any CKEditor plugin, without conflicts.

How are real-time conflicts handled?

Conflict-free CRDT merge resolves concurrent edits on the model, so no overwrite or lost work.

Can an agent suggest on the content, with a human approving?

Yes. An agent posts a suggestion on the model range as a first-class user, and a human approves or rejects before it lands.

Do I need a backend?

No. Velt runs without you standing up a websocket fleet or merge backend.

How is Velt priced?

On usage, not seats or integrations: you pay for documents with review activity in a month, with a free tier for development and early production.

Comments and co-editing, built for CKEditor

Free tier. No credit card.

First comment in 5 minutes.