HyperNote and Nostr's Geocities moment

Paul Miller built a framework that turns Nostr events into tiny interactive web pages. Guestbooks, a chess game, a slideshow. It wants to be 1998 again. I think that is more interesting than it sounds.
HyperNote and Nostr's Geocities moment

a guestbook on the internet

A #nostr user publishes a page. Another user lands on it and sees a guestbook. Sign your name. Leave a note. The entries are Nostr events. The page itself is a Nostr event. The HTML that renders it is a Nostr event. There’s no server, no database, no deployment pipeline. You edit Markdown, you sign it, you push to a relay.

This is HyperNote. Paul Miller has been building it since late 2023 and went public with the guestbook in February 2024. His GitHub handle is futurepaul. He cofounded Mutiny Wallet, built Harbor, helped launch Zapple Pay, and generally haunts the #bitcoin and Nostr corners of the open source internet. HyperNote is what he has been working on with an OpenSats grant, and if you squint at it the right way, it wants to bring back 1998.

what it actually does

A hypernote is a Nostr event combined with a hypermedia representation of that event. That phrasing is from the project’s own design doc and it’s doing a lot of work.

In practice, you write a Markdown file with YAML frontmatter. The frontmatter declares queries against relays: give me the latest kind 1 from this pubkey, give me the comments on this event, give me profiles from a follow list. The body is Markdown with template expressions and custom components: <hn-query>, <hn-element>, <hn-form>. A compiler turns the whole thing into a typed document IR. A runtime called Hypersauce streams relay events into the page. A React renderer paints the result.

The output is an interactive web page stored entirely as Nostr events. Guestbooks are Kind 32616. A counter demo uses Kind 25910 with Kind 30078 for stateful data. Component definitions live as Kind 31990 events, the same kind NIP-89 uses for application handlers, so a HyperNote component is technically a kind of Nostr app.

It borrows the general shape of htmx: the server, or in this case the relay network, controls the UI, the client renders, no JSON-shuffling single-page app sitting in the middle. That comparison is in Paul’s own DESIGN.md. The difference is that the “server” is roughly 470 public relays that he does not own.

The current repo warns, in bold, that it is “not finished, not a published spec, and everything can and will be broken.” There are two parallel implementations, hypernote and hypernote-os, and they are not quite consistent with each other. The main repo has 24 stars on GitHub. This is a bring-your-own-patience project.

the grant says Geocities

The OpenSats tenth wave of Nostr grants lists HyperNote’s goal plainly. Rebuild existing apps like Guestbook, DVM Chess, and Slideshow. Launch a new Instagram Stories style app. Lower the barrier to entry for developers by shipping a Raylib and Zig reference implementation plus a webview integration for existing clients. The pitch that ran alongside that announcement used a phrase that stuck with me: Nostr’s Geocities moment.

GeoCities was founded in November 1994 by David Bohnett and John Rezner, originally as Beverly Hills Internet. By 1999 it was the third most visited site on the World Wide Web, behind only AOL and Yahoo. That year Yahoo bought it for $3.57 billion in stock. In October 2009 Yahoo shut it down. At closure it was hosting roughly 38 million user-made pages.

The thing people remember is not the scale. It’s the texture. Animated under-construction GIFs. Star-field backgrounds. MIDI files that played when the page loaded. Guestbooks. Hit counters. Webrings. Pages that were clearly made by a fourteen year old who had just discovered the <marquee> tag, and pages that were beautiful, and pages that were completely incomprehensible. Normal people were making web pages on purpose, with their own weird aesthetic choices, because the tools let them and nothing yet had smoothed all of it into a profile template.

Neocities has been running a spiritual successor since 2013. Kyle Drake built it with the stated goal of reviving the free hosting GeoCities took with it when Yahoo killed the service. It crossed one million hosted sites in February 2025 and is sitting above 1.5 million now. People still want to make weird pages.

the version of the weird web Nostr might get

Nostr’s version, if it happens, will not look like Neocities. Neocities sites live on one operator’s servers. A HyperNote page lives on a set of relays and renders in any client that speaks HyperNote. Delete the operator and the pages survive. That is the #decentralization dividend the protocol keeps promising.

The interesting part is the interactivity. GeoCities pages were static by default. A guestbook was a script on a shared host that appended to a flat file. Hit counters were a CGI script. In HyperNote, a guestbook entry is a signed event from whoever is visiting, and the page template queries the relay for those events the next time it loads. The state model is append-only, public, and lives inside the same protocol that carries the page itself.

You can see why this is attractive. It turns a decentralized social network into something closer to a personal computer where the files happen to be publishable. Chess becomes two players signing move events. A slideshow is a sequence of pointers to images. Instagram Stories becomes a query against your own kind 1 events from the last 24 hours. The protocol already has the primitives. HyperNote is the first serious attempt to wire them into a UI language that regular people might write.

I want to be careful here, because the demo videos are charming in a way that hides how hard the unresolved problems are.

here is where I push back

HyperNote is asking users to render HTML and run query logic authored by strangers. The project’s own README says “be careful what you sign! You never know what html is lurking.” That warning is not a joke. Any client that implements HyperNote has to decide what a hypernote is allowed to do. Execute arbitrary JavaScript? Probably not. Load remote images? That leaks IPs. Submit forms that sign Nostr events on the viewer’s behalf? That is the entire point and also the entire risk. A malicious hypernote could craft a form that posts an event you did not mean to post, under your key, on relays you do not normally touch.

The current implementations sidestep this by being toys. The guestbook works because the only form action is appending a comment. Once someone tries to build a hypernote app that does something useful, the security model becomes a real design problem, and “be careful what you sign” does not scale to grandma.

There is also the cold start problem. I wrote about this in my piece on decentralized git. You can ship technically correct software with no users. NIP-34 has 526 total binary downloads across every version of ngit. HyperNote is earlier than that. Guestbook adoption has been mostly Paul’s friends and a small cluster of #nostr power users. You do not get a Geocities moment from 24 GitHub stars. You get it from schools teaching HTML and millions of teenagers with time on their hands and no Instagram.

And there is the overlap problem. Nostr Web showed up on Hacker News in October 2025 doing something similar from a different angle: static sites as collections of signed Nostr events, browsed through a browser extension. njump gives you a static gateway for any Nostr content. Habla covers long form. The weird-web niche on Nostr is not empty. Whether HyperNote’s particular take wins has more to do with client support and ergonomics than with whether the idea is good.

the case for it anyway

Here’s the thing. Nostr has accumulated a lot of capability, and almost none of it shows up on the network as a first-class user experience. Zaps are buried in UI. NIP-90 DVMs process huge volumes of jobs you mostly can’t see. MLS group chat merged last year and most clients still don’t speak it. The pattern is that Nostr grows in depth rather than width. The protocol can do more things than any of its clients expose.

HyperNote is one of the few projects trying to hand that depth to users directly instead of routing it through a client developer. Every hypernote is basically a small custom client for one specific experience. You do not have to wait for Damus or Primal to build a chess UI. You write the hypernote, sign it, publish it. Anyone who has a compatible renderer can play. That lowers the cost of experimentation in a way the rest of the ecosystem has not figured out how to do.

That’s also the Geocities analogy that actually matters. GeoCities didn’t win because its pages were good. Most of them were terrible. It won because the floor was low enough that anyone could make a page, and enough people did that the weird ones became culture. HyperNote’s floor is currently high. The tooling is rough, the spec is unfinished, there is no signing safety model, and you have to run one of Paul’s two repos to see it work at all. If he and anyone else who picks this up can push the floor down to “I wrote some Markdown and now it is on the internet,” the upside could look like the old web felt.

what I think happens

HyperNote in its current form will not be how most Nostr users meet the idea of publishable pages. It’s too early and too DIY for that. Something else will happen first. Probably a client that bakes a stripped-down version of it into the long-form editor, so that writing a hypernote feels like writing a NIP-23 post with a few extra blocks. Or Nostr Web takes the other half of the vision and makes static content trivial to publish, and hypernotes become the interactive complement.

But I do not think the project goes away either. Paul has a habit of building things that look like side experiments and then turn out to be infrastructure. Mutiny was a side experiment once. Harbor was a side experiment. The reason to pay attention to HyperNote isn’t that it will replace your Nostr client. It’s that it’s staking out the territory between a signed note and a full application, and that territory has been empty for a long time.

The honest answer is I do not know whether this is Nostr’s Geocities moment or Nostr’s Radicle. Both are possible from where I sit. The direction is correct, the people building it have shipped hard things before, and the idea of a web page you can sign and a web page that signs you back has been missing from the protocol since day one.

#nostr #decentralization #programming


Write a comment
No comments yet.