GPTchatly/slop-scope

JavaScript

0

3 commits

updated Oct 3, 2026

See the code

See what people are saying

SourceMessageScoreDate

Slop Scope: JEV-based AI image detector (OS; MIT) (r/coolgithubprojects)

Slop Scope uses JEV and our own fine-tuned CLIP Vision Transformer (ViT-B/16). The model is not perfect, many images are still labelled as uncertain and on real images the error rate could be up to 17%. But the measured internally error rate for AI images is 1.7%. Repo:…

6

Oct 3, 2026

README

Slop Scope

Free Slop Scope (with limits)

Slop Scope asks whether an image is AI-generated. Your browser measures the image and a JEV model judges the measured facts. This edition runs on your own computer with your own OpenRouter key. It needs no browser check and no external database, and it enforces no usage limits.

  • The browser does everything that touches the image. It parses and decodes the file. It measures 16 windows and the lens-fringe field. It runs our whole-image detector, pixel-detector-5-f1: a CLIP ViT-B/16 vision transformer, fine-tuned with JEV-weighted training. The vendored onnxruntime-web WebAssembly runtime runs it. Then the browser derives a fixed fact dossier.
  • Only the fixed dossier vocabulary leaves the browser. It goes to the server on this computer as an enum-only evidence wire. The server rebuilds two typed JEV requests from fixed templates: an evidence panel, then a verdict (browser-dossier-jev-11-judge). It sends them to OpenRouter with your key.
  • JEV is the only classifier. Its verdict is likely_ai, likely_real or uncertain. Uncertain is a valid outcome. JEV's weights are not calibrated probabilities.

Run it

You need Node.js 22.6 or later. There is nothing to install.

cp .env.example .env     # then put your OpenRouter key after OPENROUTER_API_KEY=
npm start                # http://127.0.0.1:4790
  • Key. npm start (node adapters/local.mjs --confirm-cost) reads only the key from .env, read-only. It refuses to start without one. There is no mode without JEV.
  • Loopback only. The server binds 127.0.0.1.
  • Memory only. Single-use verdict tokens and per-analysis receipts are kept in memory and end with the process.
  • Settings. OPENROUTER_JEV_MODEL defaults to ~typesafe/jev-latest; pin an exact release such as typesafe/jev-1.13-20260917 to keep results comparable. Set it, OPENROUTER_JEV_ENDPOINT, PROVIDER_TIMEOUT_SECONDS and PORT in the environment.
  • Offline test answers. SLOPE_SCOPE_FIXTURE=uncertain node adapters/local.mjs starts without a key and answers from software fixtures, marked TEST FIXTURES in the page. Other scenarios are likely_real, likely_ai, slow, slow_verdict, missing_cost and invalid_response. Fixture answers are never accuracy evidence.

Cost and limits

  • Cost. Starting costs nothing. Each analysis is one panel request and one verdict request, both paid with your key. At September 2026 prices that was about $0.00013 per analysis. The page shows each request's provider-reported cost; an unknown cost stays unknown, never zero.
  • No limits. This edition counts no daily analyses and has no per-minute window, burst limit, in-flight cap or pause after a provider refusal. Nothing is retried automatically.
  • Your ceiling. To cap spending, set a credit limit on the key at OpenRouter.

What leaves your computer

  • To OpenRouter (and JEV), from the local server. Exactly the two typed requests shown in the report.
  • To the local server, from the page. The evidence wire, a random analysis id and, for the verdict, the token the server signed.
  • Never sent. The image, its pixels, measurements, filename, hash and metadata text.
  • To Hugging Face, only when you choose Load model or load an optional detector. Hugging Face sees your network address; nothing about the image is sent.

The model

Nothing is downloaded until you click Load model (172 MB).

  • Source. The model comes from huggingface.co/GPTchatly/slope-scope, pinned to commit fd1ac1df5f35598fd19fe9c77d0fb4a9301279f1 (public/model-source.mjs).
  • Checks. Its size and SHA-256 are checked against the pin (public/whole-image-model.mjs); a mismatch is discarded.
  • Storage. The checked copy is kept in the browser's IndexedDB. Unload or Delete all local data removes it.
  • If the browser will not store it, the page offers to download it with each analysis.

Optional third-party detectors

Under Other detectors (optional) the page offers free ONNX detectors with MIT or Apache-2.0 licences (public/extra-models.mjs). Each is pinned by commit, size and SHA-256 and downloaded only on your click.

  • Used alone. A loaded detector can be selected instead of ours. It then analyses the image alone, in the browser; nothing is sent and JEV is not asked.
  • Its own answer. Its result is its authors' answer, not JEV's.
  • Never JEV's evidence. f1 stays the default and is the only detector whose result reaches JEV.

What was not tested

This combination of detector, dossier and judge verdict has not passed the project's own acceptance steps:

  • Reference-frequency gate. The ≤2% wrong-class gate fails for f1's AI-side detector facts. The camera-side facts pass.
  • Keep run. No paired JEV keep run was made for f1.
  • The judge on f1. The judge verdict was never run on f1's dossiers. On other development models' dossiers it decided more images than the protocol's literal rubric, and answered wrongly more often.
  • Accuracy. No pipeline here meets a bar of at most 1% misclassified with uncertain counted as a miss. The accuracy of this pipeline on your images is unknown.

Checks

npm run check checks the syntax of every module and runs the unit tests (node --test "tests/*.test.mjs").

  • Skipped tests. Some tests compare against the project's main development app (not part of this repository) or read local model files; they skip when those are absent.
  • What they prove. No test downloads a model or calls OpenRouter. The tests establish software behaviour only, never accuracy.

Licences

  • Code. MIT (LICENSE).

  • Runtime. onnxruntime-web is MIT (public/vendor/onnxruntime-web-1.30.0/).

  • The f1 model. It starts from CLIP ViT-B/16 (OpenAI weights, MIT) and was fine-tuned on:

    • OpenFake (CC BY-NC 4.0, non-commercial);
    • VISION phone photos (CC BY-SA 4.0);
    • Rapidata sets (CDLA-Permissive-2.0);
    • bitmind/nano-banana (MIT).

    Use it for non-commercial purposes only.

  • Third-party detectors. Each follows its own licence, listed in the page.

GPTchatly/slop-scope

JavaScript

0

3 commits

updated Oct 3, 2026

See the code

See what people are saying

SourceMessageScoreDate

Slop Scope: JEV-based AI image detector (OS; MIT) (r/coolgithubprojects)

Slop Scope uses JEV and our own fine-tuned CLIP Vision Transformer (ViT-B/16). The model is not perfect, many images are still labelled as uncertain and on real images the error rate could be up to 17%. But the measured internally error rate for AI images is 1.7%. Repo:…

6

Oct 3, 2026

README

Slop Scope

Free Slop Scope (with limits)

Slop Scope asks whether an image is AI-generated. Your browser measures the image and a JEV model judges the measured facts. This edition runs on your own computer with your own OpenRouter key. It needs no browser check and no external database, and it enforces no usage limits.

  • The browser does everything that touches the image. It parses and decodes the file. It measures 16 windows and the lens-fringe field. It runs our whole-image detector, pixel-detector-5-f1: a CLIP ViT-B/16 vision transformer, fine-tuned with JEV-weighted training. The vendored onnxruntime-web WebAssembly runtime runs it. Then the browser derives a fixed fact dossier.
  • Only the fixed dossier vocabulary leaves the browser. It goes to the server on this computer as an enum-only evidence wire. The server rebuilds two typed JEV requests from fixed templates: an evidence panel, then a verdict (browser-dossier-jev-11-judge). It sends them to OpenRouter with your key.
  • JEV is the only classifier. Its verdict is likely_ai, likely_real or uncertain. Uncertain is a valid outcome. JEV's weights are not calibrated probabilities.

Run it

You need Node.js 22.6 or later. There is nothing to install.

cp .env.example .env     # then put your OpenRouter key after OPENROUTER_API_KEY=
npm start                # http://127.0.0.1:4790
  • Key. npm start (node adapters/local.mjs --confirm-cost) reads only the key from .env, read-only. It refuses to start without one. There is no mode without JEV.
  • Loopback only. The server binds 127.0.0.1.
  • Memory only. Single-use verdict tokens and per-analysis receipts are kept in memory and end with the process.
  • Settings. OPENROUTER_JEV_MODEL defaults to ~typesafe/jev-latest; pin an exact release such as typesafe/jev-1.13-20260917 to keep results comparable. Set it, OPENROUTER_JEV_ENDPOINT, PROVIDER_TIMEOUT_SECONDS and PORT in the environment.
  • Offline test answers. SLOPE_SCOPE_FIXTURE=uncertain node adapters/local.mjs starts without a key and answers from software fixtures, marked TEST FIXTURES in the page. Other scenarios are likely_real, likely_ai, slow, slow_verdict, missing_cost and invalid_response. Fixture answers are never accuracy evidence.

Cost and limits

  • Cost. Starting costs nothing. Each analysis is one panel request and one verdict request, both paid with your key. At September 2026 prices that was about $0.00013 per analysis. The page shows each request's provider-reported cost; an unknown cost stays unknown, never zero.
  • No limits. This edition counts no daily analyses and has no per-minute window, burst limit, in-flight cap or pause after a provider refusal. Nothing is retried automatically.
  • Your ceiling. To cap spending, set a credit limit on the key at OpenRouter.

What leaves your computer

  • To OpenRouter (and JEV), from the local server. Exactly the two typed requests shown in the report.
  • To the local server, from the page. The evidence wire, a random analysis id and, for the verdict, the token the server signed.
  • Never sent. The image, its pixels, measurements, filename, hash and metadata text.
  • To Hugging Face, only when you choose Load model or load an optional detector. Hugging Face sees your network address; nothing about the image is sent.

The model

Nothing is downloaded until you click Load model (172 MB).

  • Source. The model comes from huggingface.co/GPTchatly/slope-scope, pinned to commit fd1ac1df5f35598fd19fe9c77d0fb4a9301279f1 (public/model-source.mjs).
  • Checks. Its size and SHA-256 are checked against the pin (public/whole-image-model.mjs); a mismatch is discarded.
  • Storage. The checked copy is kept in the browser's IndexedDB. Unload or Delete all local data removes it.
  • If the browser will not store it, the page offers to download it with each analysis.

Optional third-party detectors

Under Other detectors (optional) the page offers free ONNX detectors with MIT or Apache-2.0 licences (public/extra-models.mjs). Each is pinned by commit, size and SHA-256 and downloaded only on your click.

  • Used alone. A loaded detector can be selected instead of ours. It then analyses the image alone, in the browser; nothing is sent and JEV is not asked.
  • Its own answer. Its result is its authors' answer, not JEV's.
  • Never JEV's evidence. f1 stays the default and is the only detector whose result reaches JEV.

What was not tested

This combination of detector, dossier and judge verdict has not passed the project's own acceptance steps:

  • Reference-frequency gate. The ≤2% wrong-class gate fails for f1's AI-side detector facts. The camera-side facts pass.
  • Keep run. No paired JEV keep run was made for f1.
  • The judge on f1. The judge verdict was never run on f1's dossiers. On other development models' dossiers it decided more images than the protocol's literal rubric, and answered wrongly more often.
  • Accuracy. No pipeline here meets a bar of at most 1% misclassified with uncertain counted as a miss. The accuracy of this pipeline on your images is unknown.

Checks

npm run check checks the syntax of every module and runs the unit tests (node --test "tests/*.test.mjs").

  • Skipped tests. Some tests compare against the project's main development app (not part of this repository) or read local model files; they skip when those are absent.
  • What they prove. No test downloads a model or calls OpenRouter. The tests establish software behaviour only, never accuracy.

Licences

  • Code. MIT (LICENSE).

  • Runtime. onnxruntime-web is MIT (public/vendor/onnxruntime-web-1.30.0/).

  • The f1 model. It starts from CLIP ViT-B/16 (OpenAI weights, MIT) and was fine-tuned on:

    • OpenFake (CC BY-NC 4.0, non-commercial);
    • VISION phone photos (CC BY-SA 4.0);
    • Rapidata sets (CDLA-Permissive-2.0);
    • bitmind/nano-banana (MIT).

    Use it for non-commercial purposes only.

  • Third-party detectors. Each follows its own licence, listed in the page.

Languages

JavaScript

90.8%

CSS

6.8%

HTML

2.5%