quibble.fyi

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.
quibble can answer each report with a line like this.

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.

A hosted tool
  1. Browser
  2. Their servers
  3. Your tracker
quibble
  1. Browser
  2. Your app
  3. 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.

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

TrackerStatus
GitHubSupported

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.

Email for early access

quibble's review page (read-only here)