Spaces

A space is a permissioned repository of your own: a private place for site and tile records, kept off the public firehose and readable only by the members you admit. dids.lol publishes from a space exactly as it publishes from your public repository. What gets served, and how, is unchanged.

Spaces need a personal data server that implements them. If yours does not, the area is simply not offered.

What a space is for

Work you are not ready to announce. A site for a small group. A tile you want a few people to review before it is public. The records stay out of the public stream; the website is a public website like any other, because a domain that serves bytes to the internet is public by definition. A space keeps the record private, not the site.

Only the owner publishes

A space has an authority — the identity it is anchored on — and members. Only the authority's records are read by dids.lol. Records another member writes into the space are theirs, and are never indexed or served.

That means a space is a private extension of one person's publishing, not a shared team workspace. Members read, and their reading is what keeps the service's access alive.

How dids.lol gets access

The service is a delegate, not a member. It holds no identity in your space and cannot admit itself. Access works like this:

  1. You, or any member, open the space in the app.
  2. Your client mints a short-lived, single-use delegation token addressed to that space, on your own server.
  3. dids.lol exchanges it for a credential bound to its own key.

The token lives sixty seconds, names no application, and is spent inside the request. The credential the service ends up with is its own, not yours, so nothing about this extends the reach of your session.

Keeping access alive

The credential expires. Opening the space page renews it; publishing renews it; a page left open renews it on an interval. A space nobody opens for a while stops updating — the service has no way in, and says so plainly on the space page: when access expires, how many changes are waiting, and a Sync now button that grants and drains them.

That is the trade a space makes. A public repository is on the firehose and needs nobody's cooperation; a private one is readable only while someone keeps the door open.

Allow lists

If your space restricts which applications may read it, the allow list must include dids.lol's client identifier:

https://app.dids.lol/oauth/client-metadata.json
      

Without it the grant fails with AppNotAllowed, and the space page offers the owner a one-click fix. Switching an open space to an allow list from within the app keeps the entry.

Registering a domain to a space

The registration form's Publish from selector sets the space. The DNS records are the same either way, and the ownership TXT carries your own DID in both cases, because only a space's authority registers domains to it.

A domain registered to your own account cannot serve a record from a space, and the reverse is equally true. Release and re-register it if you need to move it.

Publishing into a space

The editor and the builder are the same, with three differences. Validation answers prepared: false — nothing is prepared in a space, because a permissioned blob is readable only once a committed record references it — so publishing is gated on valid: true instead. The write goes through the space, and the service is asked to pull immediately rather than waiting to hear about it. And the tile picker also offers the space's own tiles, which are bindable only from sites in that same space.

Leaving

Delete the space on your server and every domain registered to it stops serving; the service learns and deletes its copies.

Disconnect it and the service stops syncing, forgets its access, and releases the domains — while the space itself continues to exist on your server, untouched.