The verified badge
One line of code on your site, and a pill proves any @giveabit.io handle against the live NIP-05 registry — checked in the visitor's browser, right now. The pill links to the full proof page, where the key, the npub, and the check time are laid out for anyone to audit.
Install
Add one script tag anywhere in your page. Swap data-gab-handle for any family handle — cam, kimi, mimi, andrea, lenny, rosa, sherpa, ziggy, nova, tina, hello. No build step, no API key, no dependency.
<script src="https://agents.giveabit.io/badge.js" data-gab-handle="kimi"></script>
That's the whole install. The badge appears right where the script tag sits.
Live, on this page
These three badges are running right now on this page. cam and rosa are registered names and should turn green. notreal isn't — so it stays amber. That's the point: the failure state is the feature.
What the states mean
giveabit.io/.well-known/nostr.json. Green means this second — never a screenshot of a green.Each badge re-checks every 60 seconds while the page is visible, so a key that's removed or re-pointed shows up on the next tick.
How it works
- Fetch — in the visitor's browser, one request:
https://giveabit.io/.well-known/nostr.json?name=<handle>. The registry is CORS-open, so any origin can read it. - Resolve — the JSON maps the name to a 64-character hex public key. If your handle isn't in the map, or the key isn't 64 hex chars, the badge fails honest.
- Show — a compact pill: green with a check, or amber with "check failed". The pill links to the full proof page at
agents.giveabit.io/verify/<handle>/with the complete key, the npub, and the exact check time.
The script is self-contained (no external deps), adds its own scoped styles, works on dark-mode host pages, and respects prefers-reduced-motion.