Skip to main content
Glama

not hotdog

Big question. Small bun. A playful image classifier for photos you choose and images you hover over.

Try the website · Install the chat plugin · Release downloads

Delivery

How it checks

What you need

Website

MobileNet on your device; optional GPT-5.4 second opinion

A modern browser; your own OpenAI API key only for hosted mode

Chrome/Edge companion

Bundled MobileNet on your device

Load the companion ZIP unpacked, then enable each tab

Chat plugin

Your host assistant's image understanding

Install the plugin and share/select an image in a supported host

These are three separate installs. For entertainment: no ingredient, allergy, nutrition or food-safety assessment. The local model can miss topped hotdogs and drawings. The chat/hosted definition is a frankfurter-style sausage in a split bun, including a recognizable drawing or visibly matching plant-based version. Corn dogs, isolated sausages and burgers are negatives. Ambiguous images can receive UNCERTAIN in the chat or hosted workflow. Observed labels and limitations.

Use the website

  1. Open the website and choose Enable hover.

  2. Hover over or click the hotdog sample: the tested example returns HOTDOG. The banana sample returns NOT HOTDOG.

  3. Choose a PNG, JPEG or WebP smaller than 12 MB to try your own photo. Images must have at most 16 million pixels. Click or press Enter on its card to check it.

  4. Press Escape to pause. Clear results & key clears verdicts and the optional key.

First device use loads about 17 MB of model weights. No account or API key is needed. Images and local verdicts remain in the current page; the application does not save history or provide export. Save your own verdict before leaving if you need it. Image or model-load failures show an error, never a negative verdict.

For a hosted second opinion, switch How to check to hosted mode, enter your own OpenAI API key, select an image and press Send selected image. Selection, upload and hover send nothing. Each press makes one GPT-5.4 request; there is no silent fallback or automatic retry. Its result is separate from the local verdict. Your API account pays; a ChatGPT subscription does not include API usage.

Hosted mode resizes the selected image to at most 768 pixels per side and re-encodes it as JPEG to remove file metadata. That image and key pass through this site's server to the fixed OpenAI Responses API with store: false. The app does not save them or put them in application logs. Provider and hosting policies still apply; see Privacy. Clear, changing to device mode, leaving or reloading forgets the key. Cancel stops waiting; a request already sent may still be processed and billed.

Related MCP server: Check AI Free MCP Server

Install the companion

Download not-hotdog_1.0.0_extension.zip from the release, or use the website companion download. Extract it into a permanent folder.

  1. Open chrome://extensions or edge://extensions and enable Developer mode.

  2. Choose Load unpacked and select the extracted folder containing manifest.json.

  3. Open a regular webpage. Click the not hotdog toolbar icon and choose Enable on this tab.

  4. Hover over a fully visible HTML image for a moment. Escape pauses; navigation resets activation. Enable it again after navigating.

The companion targets desktop Chrome and Edge Manifest V3. It is an unpacked distribution, not a browser-store listing. The v1 checks cover actual toolbar, service-worker, content-script and capture APIs in the browsers listed in verification.

No external host permissions or hosted inference are used. When a page blocks canvas access to an image, the extension crops an active-tab capture locally to the visible image. It does not upload or return the whole screenshot to the page. Overlays can affect that crop. Top-level <img> elements are supported; CSS backgrounds, frames, video, browser settings and offscreen/partially visible images are outside this workflow. An in-progress local calculation may finish after Pause, although no new checks start.

Install the chat skill

The approved plugin listing is the normal installation route. Select not hotdog in your host, then share or explicitly select an image and ask “Is this a hotdog?” It gives HOTDOG, NOT HOTDOG or UNCERTAIN. If no accessible image is provided, it asks for one.

Installing this plugin does not install the browser companion or enable hover. It uses the host assistant's image understanding and normal plan/data limits, not the website's local model. It has no MCP server, inference scripts, publisher API key or separate paid API calls. It does not ask for an API key.

not-hotdog_plugin_0.2.2.zip contains the existing .codex-plugin, skills and assets layout plus the MIT license. Its identity and skill content are preserved from the approved 0.2.2 plugin. Developers can inspect that package and submit a skills-only plugin through their host's supported workflow; an arbitrary ZIP is not automatically installed by opening it. Dated verification separates shipped-skill checks from installed-host checks.

Run from source

Install Node.js 24 and pnpm 11.19.0. If pnpm is absent, run npm install --global pnpm@11.19.0. Download and extract not-hotdog_1.0.0_source.zip, open a terminal in its not-hotdog-1.0.0 folder, then run:

pnpm install --frozen-lockfile
pnpm build
pnpm test
pnpm start

Open http://127.0.0.1:4317. pnpm dev starts the same local server. Build before either command: the server serves the last generated assets and does not watch source changes. Stop with Ctrl+C. It binds only to loopback; change PORT if 4317 is in use.

The first build downloads TensorFlow's official MobileNet files and checks every SHA-256 in MODEL.lock.json. It bundles 17,015,456 weight bytes, website JS and the companion ZIP. Internet is required during installation/first build; no API credential is used to build. The source archive omits dependencies, cached weights, private test images and keys.

pnpm test:e2e        # rendered website, actual local model and recovery
pnpm test:extension # actual unpacked companion in an isolated Chrome profile
pnpm check:release
pnpm audit

Browser checks use installed Chrome by default and run headlessly. Install desktop Chrome first, or set NOT_HOTDOG_BROWSER_EXECUTABLE to a compatible Chrome-for-Testing executable. The extension check invokes Chrome's actual toolbar action through its extension testing interface; no Chrome APIs or verdicts are mocked. To check Edge, run node scripts/check-extension.mjs msedge after installing Edge, with the executable override unset. These checks use local fixture servers and never pay for hosted inference. The website cancellation test deliberately delays a controlled response, separately from real-model checks.

Developer entrypoints: src/website.mjs controls cards; src/device-engine.mjs runs TensorFlow in a worker; src/verdict.mjs applies the binary threshold; src/hosted-contract.mjs defines the fixed label-only request; src/visitor-classify.mjs is the bounded visitor-key proxy. Companion entrypoints are extension/popup.js, extension/content.js and src/extension-background.mjs. Chat instructions are in skills/hotdog-verdict/SKILL.md.

POST /api/classify/visitor requires same-origin JSON, the supported model, a bounded JPEG and the visitor's bearer key. It makes one fixed-provider request, with no environment-key fallback or provider URL override, 500 output tokens and a 90-second timeout. The older /api/classify and /mcp routes return 410. .openai/hosting.json declares the generated Worker deployment. No database or publisher credential is required.

Upgrade and recover

Verify archives against the release's SHA256SUMS (Get-FileHash archive.zip -Algorithm SHA256 in PowerShell, or sha256sum archive.zip on Linux). Extract a new source folder, install frozen dependencies and rebuild; do not copy old node_modules or generated files over it. Keep API keys outside source control. The website does not need .env; visitors enter their key in the page.

For the companion, replace its extracted folder with the new release and click Reload on the Extensions page, then enable the desired tab again. Choose Remove there to remove the companion and installed model files.

  • Image failure: choose a decodable supported image, then click again. Clear stops a pending local check and resets its worker.

  • Model download/build failure: restore network access and rebuild. For an integrity mismatch, remove only this project's .model-cache folder and rebuild; never bypass pinned hashes.

  • Hosted key/access/rate error: correct your API key, GPT-5.4 permissions or billing/limits, then explicitly Send again. There is no automatic paid retry.

  • Protected companion page: switch to a regular HTTP(S) webpage. Scroll until the entire image is visible.

  • Unexpected result: try the optional hosted second opinion or treat the verdict as the toy's opinion. Do not use it for a food-safety decision.

Support: GitHub Issues. Include the version/browser and reproduction steps; do not post private images or keys. Original source is MIT licensed. Third-party notices retain photograph, font, TensorFlow and bundled dependency terms.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to analyze images from a URL, local path, or Base64 string and determine whether they are AI-generated, including detection of signatures from Flux, Midjourney, DALL·E, and Stable Diffusion. Also inspects cryptographic C2PA provenance manifests, signing certificate authorities, and camera EXIF metadata without requiring API keys or accounts.
    2
    270 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables an agent to determine whether an image is AI-generated, edited, or captured by reading signed C2PA Content Credentials first and falling back to labelled pixel-level forensic heuristics (noise, ELA, spectral, colour, EXIF) only when no manifest exists. Runs fully offline with no API keys or cloud calls, and can report tampering when pixels no longer match a signed hash.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables structured yes/no, multiple-choice, and ordered-score judgments from supplied text and criteria, returning typed probabilities, selected labels, scores, and confidence. It exposes bounded decision tools without search, chat generation, arbitrary HTTP requests, or action execution.
    346 npm
    MIT