---
import Callout from '../../components/Callout.astro';
import Terminal from '../../components/Terminal.astro';
import Post from '../../layouts/Post.astro';
---
<Post slug="hello-world">
<p>
wisp.place has been running for a while without anywhere to write things down. Release notes went
into commit messages, design decisions went into my head, and outages went into whatever I typed
on Bluesky at the time. None of that is findable six months later.
</p>
<p>so: a blog.</p>
<h2>what goes here</h2>
<ul>
<li>
<strong>release notes.</strong> when something ships that changes how you deploy or how your
sites are served, it gets a post.
</li>
<li>
<strong>architecture write-ups.</strong> how the firehose consumer, tiered storage and hosting
service fit together, and why they were built the way they were.
</li>
<li>
<strong>postmortems.</strong> when wisp.place breaks, what broke and what changed afterwards.
</li>
<li>
<strong>protocol notes.</strong> things learned building on AT Protocol that aren't specific
to wisp.place.
</li>
</ul>
<p>
Wwat doesn't go here: marketing. wisp.place is a passion project, not a startup, so there is
nothing to upsell you on.
</p>
<h2>the short version of what wisp.place is</h2>
<p>
if you found this post before you found the project: wisp.place is static hosting built on the <a
href="https://atproto.com"
target="_blank"
rel="noopener">AT Protocol</a
>. you upload your site's files to your own PDS as blobs, and a record lists every file and the
site's name. the hosting service watches the network for those records and serves what it finds.
</p>
<Terminal copy>
<span class="t-prompt">$</span> npx wispctl deploy
{'\n\n'}
<span class="t-muted">◇</span> Authenticated as <span class="t-cyan">@nekomimi.pet</span>
{'\n'}
<span class="t-muted">◇</span> Found 12 files (24 KB)
{'\n'}
<span class="t-muted">◇</span> Uploading to PDS...
{'\n\n'}
<span class="t-success">✓ Deployed successfully</span>
{'\n'}
<span class="t-out"> https://sites.wisp.place/nekomimi.pet/mysite</span>
</Terminal>
<p>
the practical consequence is that your site isn't locked in a hosting account. the files live in
your PDS, under your identity. If wisp.place disappeared tomorrow, someone else could serve the
exact same records. the CLI already does this, and so can you.
</p>
<Callout type="tip" title="Getting started">
the <a href="https://docs.wisp.place" target="_blank" rel="noopener">docs</a> cover the CLI, the
lexicons, redirects and self-hosting. If you just want a site up, drag a folder into the <a
href="https://wisp.place/editor">dashboard</a
>.
</Callout>
<h2>subscribing</h2>
<p>
There's an <a href="/rss.xml">RSS feed</a>. announcements will also go out on <a
href="https://bsky.app/profile/wisp.place"
target="_blank"
rel="noopener">@wisp.place</a
>. there is no mailing list and there won't be one.
</p>
<p>
this blog is itself a wisp.place site. a folder of HTML, uploaded to a PDS, served by the same
code that serves yours. if it goes down, that's informative too.
</p>
</Post>