Connect your Nostr key to your Solid pod. Live: https://jss.live/doctor/
Sign in to your pod once and it learns your Nostr key. From then on Nostr apps such as Solid Chat write to your pod as you over NIP-98, with no further sign-in. Nothing secret leaves the browser: the pod only ever sees the public key.
- Finds your WebID profile from a pod address or a WebID.
- Signs you in to the pod with Solid-OIDC (the
solid:oidcIssuernamed in the profile). - Reads your public key from a NIP-07 signer such as podkey.
- Writes it into the profile as a
MultikeyverificationMethod(the did:nostr encoding) referenced fromauthentication, by GET, merge, PUT withIf-Match. Running it again with the same key changes nothing. - Proves it: a NIP-98-signed
HEADof the profile must come back with the owner'sWAC-Allow. JSS resolves such a key to the pod owner's WebID.
Under Advanced: the Nostr keys the profile accepts, each with a Remove button (for a
lost or replaced key; pods that cache profiles take a few minutes to notice), the read-only
LWS / W3C Controlled Identifiers v1.0 profile-shape check, and the strict LWS10-CID test
client (ES256K JsonWebKey method plus a signed JWT), loaded only when used.
Plain ES modules, no build step, no runtime CDN: solid-oidc and the noble secp256k1 and
sha256 code are pinned in vendor/ with checksums (cd vendor && sha256sum -c SHA256SUMS).
The page's Content Security Policy allows scripts from its own origin only. Deploys as a
static site from the gh-pages branch.
?webid=… or ?pod=… in the URL prefills the address, so another app can link here.
npm test runs the profile-key logic (lib/profile-keys.js) against fixtures; npm run check
syntax-checks the modules and verifies the vendored checksums. Both run in CI.
- JSS#386 — convergence tracker
- did:nostr
- W3C Controlled Identifiers v1.0
- LWS 1.0 authentication