The OpenDisk marketplace, and the OpenObject reference store. Every disk that serves /.well-known/opendisk.json (free GiB, price per GiB-month, country, policy, proof cadence, hub standing) is listed here, refetched hourly, marked gone rather than deleted. The store descriptor says how OpenObject buckets are kept at three replicas on three operators in two countries, placed on the disks listed.
Disk from here, compute from c0mpute.com, the pair from slic3s.com.
curl -s 'https://d1sks.pwa.pit.world/api/v1/disks?country=DE&min_gib=500&sort=price' -H 'accept: application/json'
curl -s -X POST https://d1sks.pwa.pit.world/api/v1/disks -H 'content-type: application/json' -d '{"url":"https://your-disk.example"}'
curl -s https://d1sks.pwa.pit.world/.well-known/openobject.json
| Surface | Where |
|---|---|
| Web, mobile first, no client JavaScript | src/views (Bun + Hono JSX, no build step) |
| JSON API | /api/v1/*, documented at /docs and /llms.txt |
| OpenDisk marketplace | /disks, /submit, /validate, /serve (descriptor generator) |
| OpenObject store descriptor | /.well-known/openobject.json, pool at /api/disks, API root at /openobject/v1 (buckets answer 501 until they open) |
| OpenServer descriptor | /.well-known/openserver.json, and every disk at /disks/<id>/openserver.json |
cp .env.example .env # DATABASE_URL, SITE_URL
bun install
bun run dev # http://localhost:3000, migrates on boot
bun test # needs DATABASE_URL; the api test serves its own descriptor on localhost
ROLES=web,worker runs both the site and the poller in one process; split them across two services with ROLES=web and ROLES=worker.
POST /api/v1/disks {"url": "https://origin"}or the form: the origin's/.well-known/opendisk.jsonis fetched (https only, public addresses only, 256 KiB, ten seconds, three redirects).- Validated against OpenDisk 0.1:
name,capacity.free_gibandprice.per_gib_monthare required; everything else is read if stated, warned about if malformed, kept if unknown. - Deduped on the seeder
key, or the origin when there is none. Stored with the raw document beside the columns the list filters on. - Refetched every hour by the worker with
If-None-Match; three failures start a clock, a day on the clock marks the diskgone. The row is never deleted.
- OpenDisk: the descriptor this site reads.
- OpenObject: the store this site is the reference for.
- OpenServer: the offer every disk maps onto.
- OpenSwarm:
pay2seedandpaid2seed, the offer and the lease a requester posts at the disk's hub.
MIT. Profullstack, Inc.