VeltNivo

Comments and annotations, built for Nivo

Add comments and shared annotations, plus live presence, to your Nivo charts, for your users and your AI agents. Threads stay pinned to the data point as the chart re-renders, and every agent annotation lands for your reviewer to approve, so reviewers discuss the spike on the spike.

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

NivoShared with your team
live
Q3 share
40% · flagged
Brand Agentnow

Annotated the Q3 spike and proposed a caption for the report.

2 Replies
Reply in Nivo…@

The problem

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

Your users expect to comment and co-edit in Nivo, and your AI agents need that same chart with a human approving before they touch user work. Comments that survive Nivo's re-renders are a multi-quarter build, and the moment anchoring breaks, feedback lands on the wrong data point. 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 Nivo: your users and your AI agents work the same chart, with comment threads anchored to the data point and series, and every agent annotation is a change a human approves before it lands.

Features

Everything your team and your agents need on Nivo

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

An analysis agent annotates the anomaly on the data point and proposes the caption as a first-class user; your reviewer approves it before it goes into the report, with a permanent record of who allowed what.

02comments
Assigned toKim
Rogers2m

@Maya pulled into the thread

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

<VeltComments textMode />

Comments

Threaded comments on data points and series, with replies, @mentions, reactions, and attachments, that stay pinned to the point as the chart re-renders.

03annotations
Brand Agent2m

This pricing claim conflicts with the rate table on slide 4.

2 Replies
// annotations.tsx
// Anchor shared markup to any region.
<VeltCommentTool />

Annotations

Shared, live-synced markup on the data point, anchored through re-renders, so every reviewer sees the same callouts on the same spike.

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 who is here right now, on the chart.

05notifications
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, so a review never stalls.

Agent

An analysis agent annotates the anomaly on the data point and proposes the caption as a first-class user; your reviewer approves it before it goes into the report, with a permanent record of who allowed what.

Setup

Production-ready in minutes

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

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

Why Velt

The consent step Liveblocks does not have

Migrated from Liveblocks or Cord? Liveblocks syncs people and agents into your app's state; Velt adds the step Liveblocks does not, every agent change on Nivo is a suggestion your user approves or rejects, on the record. Compare them in our Migration Guide.

Enterprise

Enterprise-grade security and data control

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

Adding Velt to Nivo 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 and annotations, or co-editing?

Annotations on a rendered chart. A chart is a read surface, so the shared state is markup; comments and shared annotations both work.

Do comments anchor to the data layer?

Yes. Threads stay pinned to the data point and series as the chart re-renders.

Do they survive a re-render?

Yes. Anchoring is stable across data updates and chart re-renders.

Can an agent annotate a point, for a human to approve?

Yes. An analysis agent posts an annotation on the data point as a first-class user; your reviewer approves it before it appears in the report, with a permanent record of who allowed what.

Do I need a backend?

No. Velt runs the collaboration layer for you.

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.

Related

Explore other integrations

See all libraries

Comments and annotations, built for Nivo

Free tier. No credit card.

First comment in 5 minutes.