Monorepo for wisp.place. A static site hosting service built on top of the AT Protocol.
wisp.place
1# Wisp.place
2
3Decentralized static site hosting on the AT Protocol. [https://wisp.place](https://wisp.place)
4
5## What is this?
6
7Host static sites in your AT Protocol repo, served with CDN distribution. Your PDS holds the cryptographically signed manifest and files - the source of truth. Hosting services index and serve them fast.
8
9## Quick Start
10
11```bash
12# Using the web interface
13Visit https://wisp.place and sign in
14
15# Or use the CLI
16cd cli
17cargo build --release
18./target/release/wisp-cli your-handle.bsky.social --path ./my-site --site my-site
19```
20
21Your site appears at `https://sites.wisp.place/{your-did}/{site-name}` or your custom domain.
22
23## Architecture
24
25- **`/src`** - Main backend (OAuth, site management, custom domains)
26- **`/hosting-service`** - Microservice that serves cached sites from disk
27- **`/cli`** - Rust CLI for direct PDS uploads
28- **`/public`** - React frontend
29
30### How it works
31
321. Sites stored as `place.wisp.fs` records in your AT Protocol repo
332. Files compressed (gzip) and base64-encoded as blobs
343. Hosting service watches firehose, caches sites locally
354. Sites served via custom domains or `*.wisp.place` subdomains
36
37## Development
38
39```bash
40# Backend
41bun install
42bun run src/index.ts
43
44# Hosting service
45cd hosting-service
46cargo run
47
48# CLI
49cd cli
50cargo build
51```
52
53## Limits
54
55- Max file size: 100MB (PDS limit)
56- Max site size: 300MB
57- Max files: 2000
58
59## Tech Stack
60
61- Backend: Bun + Elysia + PostgreSQL
62- Frontend: React 19 + Tailwind 4 + Radix UI
63- Hosting: Rust microservice
64- CLI: Rust + Jacquard (AT Protocol library)
65- Protocol: AT Protocol OAuth + custom lexicons
66
67## License
68
69MIT
70
71## Links
72
73- [AT Protocol](https://atproto.com)
74- [Jacquard Library](https://tangled.org/@nonbinary.computer/jacquard)