NostrClay · approach C · hybrid
A community-maintained directory of small, durable software. Two contributors can add to it; one owner can fold what they add into the file itself.
This intro is editable markup the owner types directly — Enter for a new
paragraph, the floating toolbar for a heading or a list. The entries below arrive as
signed events instead. Both end up in the same file after a compaction, which is the
whole point of the hybrid.
The file at rest is a snapshot; the live layer is a log. Everything you see with a solid
green edge is ordinary markup inside this HTML file — curl, a crawler and an agent with no
JavaScript see all of it. Everything with a dashed amber edge is a signed kind 35129 event
that arrived from a relay after the page loaded, and exists nowhere in the served bytes.
Compaction closes that gap. The owner presses Compact; the runtime serialises the composed
DOM, pushes it to Blossom as one blob, republishes the nsite manifest, and stamps a new
nc:since watermark on <html>. Every event at or below that watermark is now
part of the file and is never applied again — which is the only reason reloading a compacted document does
not show everything twice.
Content-addressed blobs over plain HTTP. The hash is the name, so any server holding the bytes is as good as any other one.
One static binary that speaks the whole protocol. Every claim this page makes can be rechecked from a terminal with it.
A whole website as one replaceable event holding a table of paths and hashes. This page is a single row of such a table.
A compaction watermark is one number. Region events are accepted only while
created_at > nc:since; everything older is already inside the bytes you downloaded.
This refetches this exact URL, parses the response as HTML and counts the entries in it — the
same thing a crawler, a curl pipeline or an LLM agent with no JavaScript would get. Before a
compaction the two numbers disagree. After one they do not.
curl -s <this url> | grep -o 'class="e-[n]ame"' | wc -l
The bracket is a character class matching one n: it keeps the command from counting the line you are reading.