Every bubble carries something from Nostr. Hover one to read it, drag it out to keep
it for two minutes, drop it on your identity to take it, or on the pin to burst it.
Where they come from
Light and dark
Background
Depth
Nostr identity
Sign in
One key opens everything on the orbit around it.
No signer found. An extension keeps your key out of this page.
Safari:
NostrKey
or
Nostash. Enable it, then reload.
Paste your key
Your key stays in this tab. It is used once, to work out your public key, and is
never stored or sent anywhere.
Cannot be popped
Not an account
Your identity is a keypair. Nothing here can delete it, and neither can anyone
else, because there is nothing to delete.
Sign out and it leaves this browser. The key still exists.
Waiting for your signer…
Anonymous
Show in the middle
Raw events
Everything above is drawn from these. An event's id is the SHA-256 of its own
contents, so it is a claim you can check rather than a label the relay attached.
Themes
Drag any bubble to arrange them.
Notifications
Relays
What these relays returned, not a global total. Nothing on Nostr can tell you a
relay gave you everything it holds.
What each relay knew
The same question, asked of every relay. Where they disagree, no relay is wrong:
each answered for what it holds. This is why completeness cannot be established
on Nostr, only omission attributed.
Music from anywhere
Listened to
Recent notes
Nothing came back from these relays.
Project Granny Bot
A constitution for communities that nobody owns, and an agent that enforces it. The
agent never decides anything: it draws the panel, counts the assents and applies the
sanctions ladder. People judge.
The mechanism
In a decentralised community there is no admin to appeal to, so the danger is not
chaos but capture: a majority convicting a dissenter on a charge that is really about
ideology. The answer proposed is a randomly drawn panel, plus seats the accused
nominates, plus an assent threshold before any sanction.
Where the numbers come from
A Monte Carlo model, about 3,900 lines of Python. Every member holds a position on one
axis; panellists score a charge as a weighted sum of its merit and their factional
loyalty, plus noise. Twenty experiments sweep it. No figure appears anywhere in the
corpus unless a committed script regenerates it.
What it does not claim
The headline figures are simulated, not measured, and the model assumes the thing the
project needs to prove: that an ally can tell a fabricated charge from a real one. Six
human quantities remain unmeasured and two of them decide whether the mechanism works
at all. There is no agent yet. External validation stands at zero.
On this page
The raw events widget and the relay disagreement widget are both borrowed from it: one
from the rule that the executable layer, not the prose summary, is what to check, and
one from the finding that completeness cannot be established on Nostr, only omission
attributed.
The corpus is behind a password. The button sends Nabil an encrypted direct message
from your key, signed by your extension: a kind 4 event, published to the same relays
this page reads. If you would rather use email,
write instead.
Blank? Some sites refuse to be framed. That is their decision and cannot be overridden
from here.
Open in a tab ↗
Still nothing after nine seconds.
Either it is slow, or it sends a header refusing to be framed, which is its own
decision and cannot be overridden from here. If it arrives, it will appear. If not,
a tab always works.
Anything with a URL. It joins the constellation as a bubble.
Popped
Built-in bubbles you burst. They are hidden, not gone.
Keep this on Nostr
Your arrangement lives in this browser. It can live on your relays instead, so it
follows your key to any machine. Settings are encrypted to you and nobody else can
read them. Bubbles you added yourself are published as ordinary web bookmarks, which
any other client can read and write.
Not signed in.
This page on Nostr
The page can hash the files it was just served and compare them against the copy
published on Nostr. If the two agree, what you are looking at is byte for byte what
was published, and the server that sent it could not have changed a character.
Not checked yet.
The published copy is read at
npub180ps…z0xufc.nsite.run, which is this project's public key as a subdomain. The gateway is a convenience:
the site event and the blobs it names are on relays and Blossom servers, and anything
that reads those can serve the same page without it.
Widget library
Panels for the desktop. Add one, then drag it anywhere by its title.
Appearance
Theme
Background
View
Motion, when you are not touching them
Bubbles are under the bubbles button. Background darkness is under the paint button,
with the other things that decide what colour this page is.