For developers

Build the mesh into your client

The mesh address is one new entry form, fipsmesh://<npub>/, in lists you already use: the media server list (kind:10063) and, later, the relay list (kind:10002). In a relay list it goes in its own fipsmesh tag, not an r entry, so clients without mesh support never try to connect to it; Nostr Vault doesn't publish that tag yet. No new event kinds. Requests are plain Blossom GET /<sha256>, with the same hash check.

A client that doesn't know the form skips it and carries on with the other servers in the list. A client that does can ask the device for the photo by its fingerprint, the same way it asks any media server, and throws the photo away if the fingerprint doesn't match.

Draft, not yet submitted

NIP-F1: Nostr over the FIPS Mesh

The address form, transport, safety rules for serving and reading, and where Nostr Vault implements each part.

Read the draft →

How it works for people using the app is on The mesh.

Build Nostr Vault

Everything is in one repository, btcforplebs/nostr-vault:

  • HavenApp/: the iPhone, iPad and Mac app (Swift). just ios-build or just macos-build.
  • NostrVault/: the Android app (Kotlin). just android-build.
  • haven-go/: the relay (Go), compiled into the apps as libhaven.
  • web-vault/: the web app. npm ci, then npm run dev or npm run build.
  • web-relay/: the browser vault.
  • linux/: a Dockerfile to build the vault for a Linux box yourself (no published image yet).
  • docs/: the NIP drafts, including NIP-F1.