๐Ÿ“ท Visual Trigger Studio

See something โ†’ do something. Upload one or more reference photos, choose what should happen when the camera (or an uploaded photo) matches โ€” show an image, play a video, or fetch live data like the current weather โ€” no dedicated hardware, no server, no account. Everything runs locally in this browser tab.

100% client-side No API keys No install MIT licensed

Your triggers

A "trigger" is one or more reference photos of something you care about, plus the action to run when a new photo/frame looks similar enough to it.

Recognize

Upload a photo or use your camera, then check it against your saved triggers.

How it works

  1. Every photo (your reference photos, and whatever you check later) is converted into a numeric "fingerprint" (an embedding) by a CLIP vision model running entirely inside your browser via WebAssembly โ€” nothing is uploaded anywhere.
  2. When you hit Check now, the new photo's fingerprint is compared to every saved trigger's fingerprint using cosine similarity. The closest match above its threshold wins.
  3. The matched trigger's action runs: show an image, play a video, or fetch a live value (currently: weather) from a free public API and display it.

Honest limitations

  • CLIP is very good at recognizing concepts ("a photo of a bridge"), but it is noticeably weaker than a purpose-trained model at telling apart two specific, similar-looking objects under different lighting or angles. Upload 2-3 reference photos per trigger, from different angles, to improve reliability โ€” and don't treat a single high-confidence match as infallible.
  • Triggers are stored in this browser's local storage only. They are not synced to any account or server, and clearing browsing data removes them. Use Export/Import to back them up or move them to another device.
  • The "weather" action reports live conditions for the named location from a public weather API โ€” it is not a physical sensor reading at the exact spot the camera is pointed at. This project intentionally has no hardware dependency at all.
  • Uploaded videos are stored as base64 inside local storage, which browsers typically cap at 5-10MB per site. For anything larger, use a direct video URL instead of uploading the file.