Skip to content

did:nostr DID document advertises a nosdav storage service (toward super apps over jss) #4

@melvincarvalho

Description

@melvincarvalho

Vision

beacon is the identity + discovery layer of a nostr-native, Solid-like stack:

Solid this stack
WebID did:nostr:<hex>
Pod / LWS storage nosdav (currently a thin layer over jss)
Type index / directory beacon
Solid apps super apps (sign-in-with-did:nostr)

nosdav already exists as a small storage layer on top of jss — so the storage server is not new work. The missing pieces are discovery (advertise an identity's storage in its DID document) and the super-app wiring (resolve → discover storage → read/write).

The hinge: a service entry in the DID document

The did:nostr DID document already carries a service array (today: relays from kind-10002). Add a nosdav storage service so every identity's storage home is discoverable at /.well-known/did/nostr/<hex>.json, e.g.:

{
  "id": "did:nostr:<hex>#storage",
  "type": "nosdav",
  "serviceEndpoint": "https://<jss-host>/<identity>/"
}

This is the Solid "pod URL in the WebID" pattern, nostr-native.

How an identity advertises storage (open)

Pick the source of truth — options to weigh:

  • a nostr event (a kind, or a tag on an existing kind like 10002),
  • a .well-known on the storage host,
  • jss-side mapping (deterministic endpoint from the pubkey).

beacon's resolver (diddoc.js) then surfaces it as a service entry. Reader already merges service endpoints, so this is additive.

Super apps

With the service in place: sign-in-with-did:nostr (one key — the SSO backlog item) → resolve the DID → discover nosdav storage + relays → read/write with nostr-key auth (LWS auth, served by jss). beacon is the shared registry every app resolves against; the social graph (follows) gives super-apps a follow graph for free.

Acceptance

  • DID documents include a nosdav service entry when an identity advertises storage.
  • A demo super-app resolves an identity → discovers its nosdav endpoint → reads/writes a file with nostr-key auth.
  • Conformance unaffected (service is a standard DID-doc member).

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    diddid:nostr / DID methodenhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions