Open source, MIT licensed

Client comments, straight to your agent.

Clients click the element they mean and leave a comment. Your agent receives the comment, page URL, CSS selector and a screenshot as one signed webhook. No inbox, no screenshots in chat.

Clients click the element they mean and leave a comment. Your agent receives the comment, page URL, CSS selector and a screenshot as one signed webhook. No inbox, no chat.

npx @commentbox/cli init

Works with any agent that has a webhook

How it works

From comment to pull request

  1. 01Your client points at an element and writes a comment.

  2. 02The comment goes to your own agent with the page, the selector and the old text.

  3. 03Your agent can file it as an issue.

  4. 04It opens a pull request with the change for you to review.

Features

Your agent gets the full context

  • Exact location. Page URL and path, CSS selector, tag and element text, element box, scroll position.URL, selector and element text.
  • What they saw. Viewport, device pixel ratio, browser, plus a JPEG of the screen with the element outlined.Viewport, browser and a screenshot.
  • Signed and retried. HMAC-SHA256 signature with timestamp; exponential backoff on errors and timeouts.HMAC-signed, retried on errors.
  • On and off without a deploy. Switch comment mode from the backend; a hard environment switch keeps production clean.Switch it from the backend.
  • Drop-in. One script tag or npm i @commentbox/widget. Shadow DOM, so your CSS and the widget never clash.One script tag, Shadow DOM.

What your agent receives

POST /hooks/commentbox
X-CommentBox-Signature: t=1760527200,v1=5257a869e7ec…{  "text": "Make this button stand out more",  "pageUrl": "https://acme.example/pricing?plan=team",  "selector": "#pricing > div:nth-child(2) > a",  "elementText": "Try Team",  "viewport": { "width": 1280, "height": 800 },  "screenshotUrl": "https://comments.acme.example/v1/screenshots/shot_7c1d…"}<script src="https://comments.your-domain.com/widget.js" defer></script>

Get started

Install in about a minute

In your site's repository. Adds the widget and the endpoint.

Terminal
npx @commentbox/cli init
CommentBox 0.2.1 initok  Generated ADMIN_TOKEN in commentbox/.dev.vars (git-ignored)ok  Added the widget script to public/index.html

Or add one tag to any page, pointing at your CommentBox server:

index.html
<script src="https://comments.your-domain.com/widget.js" defer></script>
Notes

The widget shows a small "via CommentBox, by Solutions Lab" line. To hide it, set attribution: false, or add data-attribution="false" to the script tag.

Docs, payload reference and source live in the GitHub repository, which opens to the public at launch.

Two steps to connect your agent

  1. Install CommentBox

    Run this in your project. It adds the widget and the endpoint.

    npx @commentbox/cli init

    Runs on any Node server, or on Cloudflare Workers.

    Then connect your agent in CommentBox settings.

  2. Connect your agent in Settings

    Copy the prompt, give it to your agent, paste the URL it replies with, and hit Test.

Tell your agent how far to go

Paste one of these into your agent's instructions.

Your agent makes the change and opens a PR. You merge.

When a CommentBox comment arrives, make the change on a new branch and open a pull request that links the comment and its screenshot. Never merge.

Your agent puts the change on staging and sends you the link.

When a CommentBox comment arrives, make the change on a new branch and deploy it to staging only. Reply with the staging link. Never touch production.

Your agent only tells you what it would change, and waits.

When a CommentBox comment arrives, don't change any code. Reply with what the reviewer asks, where on the page, and the change you would make. Wait for my go.

Self-hosting and open source

Your server, your data, MIT licensed

Runs on any Node server, or on Cloudflare Workers. Comments and screenshots never pass through a third-party service. Read the code, fork it, change it.

Docker
cp packages/server-node/.env.example packages/server-node/.env
docker compose up -d

Pricing

Free

€0 self-host, MIT

MIT licensed, the full widget and server on your own Cloudflare or Docker.

Self-host it

Hosted

by Solutions Lab

€10 per project, excl. VAT.

We run the server, you paste one line. No Node, npm or server needed.

  • Active for 90 days
Start Hosted

Agency

by Solutions Lab

€19 per month, excl. VAT.

Hosted projects under fair use, up to 25 active projects.

Start Agency

Same widget and webhook on every plan.

CommentBox by Solutions Lab. Payments are processed by Stripe for Solutions Lab.

Client comments, straight to your agent.

npx @commentbox/cli init