A one-click browser extension that reads the page you're on and gives you a probabilistic second opinion on whether the text was churned out by an AI — an overall score, a calibrated label, the reasoning, and paragraph-level highlights. Bring your own model. Yell at the results. Move on with your day.
Firefox-first · Chromium second · runs on nothing until you click it
📖 Docs: slopwatch.displace.tech
The web is drowning in confidently-bland, em-dash-addicted, "in today's fast-paced world" filler, and you've developed a nervous twitch trying to tell the real writing from the synthetic stuffing. Slopwatch is the little robot that squints at the page with you — its eye is literally a magnifying glass — and says, "yeah, this one smells like a language model, here's why."
It will not tell you with certainty. Nobody can. It will give you a number, a reason, and a permanent shrug of an Uncertain band, because pretending to be sure about this would be its own kind of slop.
- 🛑 Inert by default. It does nothing — no scanning, no network, no permissions used — until you click the toolbar robot. No background snooping.
- 🧠 Bring your own brain. Plug in an Anthropic key, any OpenAI-compatible endpoint (OpenAI, OpenRouter, vLLM, LiteLLM…), or point it at a local Ollama model so nothing leaves your machine.
- 🙅 No bare verdicts. It never stamps a smug "AI" or "HUMAN" on anything. Score and label and reasoning, together, always — with a caveat it refuses to let you hide.
- 👀 You can see where your data goes. A persistent indicator tells you, every single run, whether the analysis happened in the cloud or on your device.
- 🦊 One source tree, two browsers, Manifest V3, reproducible builds.
Click the icon → it grabs temporary read access to the current tab
(activeTab, nothing broader) → extracts the primary content (Readability for
articles, smarter extractors for feeds) → ships it to your chosen model →
shows an overall AI-likelihood score, a calibrated label, the model's reasoning,
and highlights the suspicious paragraphs in place. Hover a highlight for that
paragraph's rationale. Disagree loudly. Re-run with a different model to settle
the argument.
This repo builds the extension from the design docs. Day-to-day:
pnpm install
pnpm dev # Chromium with hot reload
pnpm dev:firefox # Firefox via web-ext
pnpm test # Vitest (unit + integration + component)
pnpm e2e # Playwright (Chromium, deterministic MockProvider)
pnpm build:firefox # production Firefox build (MV3)
pnpm zip:firefox # AMO package + sources archiveLoad it in Firefox right now: pnpm build:firefox, then open
about:debugging → This Firefox → Load Temporary Add-on… → pick
.output/firefox-mv3/manifest.json. Click the robot on any article.
- Anthropic / OpenAI-compatible: paste an API key. It goes straight from your browser to the provider and is never sent to any Slopwatch server (there isn't one). Keys stay for the browser session only unless you explicitly opt into saving them — and we'll warn you about what that means.
- Local Ollama: point at
http://localhost:11434, pick a pulled model, and allow the extension origin via the daemon'sOLLAMA_ORIGINS(Slopwatch hands you the exact snippet if it hits a CORS wall). Nothing leaves your device.
LLM-based "is this AI?" detection is genuinely unreliable. It has real false-positive and false-negative rates and is biased against formal, template-following, or non-native-English writing. So Slopwatch is built to be honest about it: a score and an explanation and a permanent "uncertain" band, the freedom to re-run with a different model, and — this part matters — it never labels people, only text.
Treat it as a nudge to look closer. Not a gavel.
| File | What it is |
|---|---|
TDD.md |
Full technical design: architecture, provider interface, NFRs, decisions, tickets |
ROADMAP.md |
Milestones M0–M5 with Definitions of Done and advancement criteria |
TESTING.md |
Test pyramid, fixtures, what we test vs. deliberately don't, CI gates |
DEPLOYMENT.md |
Build, sign, and store-submission pipeline design (Firefox-first) |
RELEASING.md |
The maintainer's runbook: how to cut a release people can install |
USABILITY.md |
Interaction states, result presentation, accessibility, responsible-use UX |
CLAUDE.md |
Guidance for AI agents/humans: invariants, layout, commands, conventions |
MIT © 2026 Displace Technologies, LLC.