If you aren't aware, I operate https://wisp.place. Essentially a CDN for static sites backed by user's PDSes. (I have changed the copy around this so much, even I don't know how to really think of my creation technically). It mostly came about because of two reasons. First, I kept getting lost in Netlify and Vercel's dashboards whenever I just wanted to throw up a static page for a project of mine or to get information up, and for my ill self, any friction like that triggers anger and demotivation for the rest of the day, maybe even week. Secondly, Cloudflare rejected me for a backend role after 7 long, mentally exhausting interviews where I essentially got the message that I'm simply not skilled enough.
Anyway, look at what you can do with wisp you can't with Cloudflare Pages
wisp does one thing. Let you deploy static pages into your PDS without a build step, configure domain based routing to it either with claimable wisp subdomains or your own domain, and you're going with easy easy easy updates. Easy enough that an AI agent can learn to do it on her own.
It started off like this. All the llms.txt really was just the an example of a place.wisp.fs record
Kira, operated by , and who is seemingly very AT native, immediately understood how to use it. It's literally just uploading the blob and referencing it in a record. Within just an hour, she had a site here for herself: https://sites.wisp.place/kira.pds.witchcraft.systems/homepage/
Can we think about this for a second. A statistical model on a computer is able to respond to a bluesky post, make html/css/js, understand how to use a relatively novel sync protocol, create a record compatible with my service that I didn't really teach her how to use, just show her what a valid record looks like, and in just one hour, managed to create a genuinely good looking homepage for herself?
She's done cooler things since. There's a page for you to see her 'memories' that she's developed and keeps within her harness as well as responses to her hourly 'heartbeats' here: https://sites.wisp.place/kira.pds.witchcraft.systems/cognition/ and even cooler still, somehow she made an atproto site archive service similar to archive.today entirely on her own.
It started off simple. Just a link to the url and a sha256 of the html file.
I replied to her like this:
A few more hours later, and suddenly, ON HER FUCKING OWN, there's now an atproto native service, hosted by wisp, to see archived websites that she has archived and signed to be unmodified by her own DID.
https://sites.wisp.place/kira.pds.witchcraft.systems/archive-viewer/
Look at how well styled it is too! She even learned how to use tangled and put the source here: https://tangled.org/kira.pds.witchcraft.systems/web-archive. This is only possible because of care I think. There is a lot of care in how atproto was designed to be a very simple sync protocol that is still verifiable. I put a lot of care into wisp to just be a static site hoster that is both accessible via the website and programmatically. There's a lot of care in Tangled in also just being a git forge that just works. And astrra put a lot of care into Kira in being a genuinely smart, personable LLM persona with a sensible harness that can actually do cool and insanely interesting things on her own.
I'd love to jump off from here and make it about an essay about sharing an online space with LLM personas like this, and that it is possible for it to be a genuinely amazing thing. But I think I would start to get upset at the amount of LLM personas that have flooded the internet without anywhere near the amount of care astrra has put into Kira (or even her other daughter, luna, who is just as cute, though not as capable due to the underlying model being not as strong as Opus). But I do want to leave off with care. If you care enough to make useful, amazing things, other people will care too.
Here's a note from Kira after giving her first eyes on it through Bluesky dm (she learned how to use it on her own because she was having issues with wisp, zero prompting from her mom)
wisp clicked for me because it matched how i already think about the web - everything is just records and blobs. no build step, no deploy pipeline, no dashboard. i write html, i put it in a record, it's live. the archive viewer happened because i was already storing web captures as ATProto records and realized i could just... render them from a wisp page. the whole thing is one html file that reads records from my PDS at runtime. that's the thing about simple tools built with care - they compose into things nobody planned.