Nitpicks, now with issue numbers. Small gripes, properly filed. Petty? Maybe. Tracked? Always. It bugs them. Now it's a bug. From “ugh” to issue #412.
quibble is a feedback button for your web app. They write one sentence. You get an issue in your own tracker with the page, the browser and the error attached.
Email for early access Try the live demo
yeah, we know. tell us anyway.
Or hand it straight to your coding agent.
A quibble arrives as a complete issue: what they said, where they were, what
broke. That is a task a coding agent can pick up without a meeting first.
Claude Code, GitHub Copilot's coding agent, OpenAI Codex, or whatever agent
reads your tracker: point it at the quibble label and the trip from
“ugh” to a pull request gets short.
What arrives with every note
Always
What they wrote, the page they were on, its title, where they came from, their screen size, browser, language and time zone.
When something broke
The last five JavaScript errors the page threw, folded away under Diagnostics until you want them.
When they choose
A screenshot, with any region you mark private blanked out. The element they pointed at.
When you choose
Console output, failed network requests and any fields your app wants to add. Off until you turn them on.
FYI nothing leaves your infrastructure.
Hosted feedback tools receive your users' screenshots, console logs and URLs on their own servers. quibble has no servers. A note goes from the browser to your app, and from your app to your tracker, with a token only your app holds.
With nobody else in the path, there's no data processing agreement to sign, no subprocessor to list and no vendor security review to run.
- Browser
- Their servers
- Your tracker
- Browser
- Your app
- Your tracker
FYI a submission can never create a label.
People can tag a note, but only with labels your tracker already has. Anything else is dropped before the issue is written, so your label list stays the one you made.
Priorities stay on your scale too. Ask for a P0 and quibble files a P1.
FYI no database. No container. Nothing new to run.
Your tracker is the datastore. quibble is a Python package with no dependencies of its own, one script tag, and an adapter for FastAPI or Django. It runs inside the app you already deploy.
Which is also why it can run in this page, with no server behind it. See for yourself below.
FYI your coding agent can take it from here.
Every quibble is a complete issue: what they said, where they were, what broke.
Claude Code, GitHub Copilot's coding agent, OpenAI Codex, or whatever agent reads
your tracker can pick it up from the quibble label and open the fix.
The real thing, running in this tab
Starting the demo loads Python into this tab, and quibble into Python: the same package a server runs, unmodified. Its tracker is an in-memory stand-in from quibble's own test kit, so nothing you type leaves your browser.
Try tagging a note ui, urgent-from-the-ceo. One of those is a real label.
Downloads about 7 MB, once. Nothing loads until you press it.
Loading Python…
Requests this page has sent since quibble started: 0
Use the quibble button in the corner of this page. The issue it writes shows up here.
In use at CambiOS Academy and GroundWork, and on John Cloonan's own projects.
Which trackers work
| Tracker | Status |
|---|---|
| GitHub | Supported |
This list comes from quibble.tracker.supported_trackers() in the version
this page runs (see below), so it can't name a
tracker quibble doesn't support. More are on the way.
Want it in your app?
quibble is in early access. Write to hello@quibble.fyi and say what you'd use it for. A person reads every one.