Ghostly started with a question: what if a public key could be an address?
Not one controlled by a company. Just a key, discoverable through a network nobody owns.
That's Pkarr. I saw it up close at Synonym, and the idea never left my head.
While I was working with Pkarr, I wanted to understand the DNS side of it better.
That led me to build Selfie Records, a small experiment that linked a domain to Nostr keys, PGP keys and BOLT12 offers through BIP 353.
At first it was mostly a way for me to learn how these pieces fit together.
Then it hit me: if I could publish those records this way, they could carry much more than identity and payment information.
So one weekend I built a tiny chat directly on top of the DHT.
It worked. Ghostly was born.
Then came the criticism: this would never scale.
And they were right.
Every message had to fit inside 1,000 bytes. No photos, no files, no calls.
Years around Bitcoin, layer twos and drivechains taught me to think in bridges.
What if the DHT wasn't where the conversation happened, but just where two peers agreed on how to meet?
Now that tiny message negotiates the real connection: WebRTC, Iroh, HyperDHT.
And when nothing else works, the DHT is still there.
The first chat never went away.
From there came files, calls, payments, identity proofs, games, even sharing your localhost with a friend.
None of it started from scratch.
Pkarr, the Mainline DHT, the libraries and the relays were built by people who believe in an open internet.
I just wanted to see what else they could hold.
A thousand bytes. Endless ways to meet. 👻
No account.
No phone number.
No server in the middle.
Ghostly 1.0 is out: chat, calls, files and sats, straight from your app to theirs.
Open source. Browser, desktop and extension.