Skip to content

Build with PsstPsst

Nostr protocol overview

Build apps interoperable with PsstPsst. Find Nostr protocol references and specifications for private messaging, groups, encryption keys, and Nearby.

On this page

This reference maps PsstPsst features to their protocols and documents PsstPsst-specific behavior. Use the linked NIPs and Blossom specifications for standard event formats, encryption, and validation rules.

Compatible clients may choose their own architecture, storage, and synchronization strategy while preserving the wire formats and observable protocol behavior described here.

Feature and protocol map

Feature Protocols
Identity and profile NIP-01, NIP-05, NIP-19
Remote signer login NIP-46
Private text messages and replies NIP-17, NIP-44, NIP-59, PsstPsst extensions
Messaging keys and device synchronization NIP-4E
Inbox and publishing relays NIP-17, NIP-65, NIP-42
Group conversations NIP-17, stable-group extension
Images, video, voice, and files NIP-17, Blossom, BUD-10
Reactions and custom emoji NIP-25, NIP-30, NIP-51
Contacts, mute, and block synchronization NIP-51, PsstPsst list identifiers
Saved groups NIP-51, PsstPsst list identifiers
Profile reports NIP-56
Lightning wallet NIP-47, NIP-04
Nostr links and event previews NIP-19, NIP-21
Nearby chat Nearby Messaging v1
Nearby attachments Nearby File Transfer

PsstPsst extensions

Relay messaging uses separate identity and encryption keys. Interoperating clients need both the NIP-4E and split-key envelope. Standard NIP-17 support alone does not decrypt these envelopes.

Extension PsstPsst-specific behavior Specification
Encryption keys Key announcements, authorized device transfer, and ordering of announcement/seal key evidence NIP-4E
Split-key envelopes Identity signatures and relay routing remain separate from encryption-key agreement; seals carry the sender’s encryption key in n Split-key envelope
Message timestamps Encrypted ms tags provide sub-second ordering Millisecond timestamps
Stable groups h preserves group identity; action expresses membership changes and renaming Group identity and actions
Nearby messaging Independent proximity identities, BLE framing, Noise authentication, access approval, and delivery acknowledgements Nearby Messaging
Nearby file transfer Offer authorization, binary records, chunk/window negotiation, and reconnect/resume Nearby File Transfer

NIP-4E is an upstream proposal. Stable groups and Nearby are PsstPsst extensions. The specifications linked here define the PsstPsst formats and compatibility requirements.

Private account lists

PsstPsst uses these application-specific coordinates for account synchronization. Contacts and saved groups share one private list. For the standard list format, refer to NIP-51.

Encrypt private content to the account identity key, rather than the separate messaging key.

Kind Public d tag Decrypted content
30000 psstpsst-contacts Contacts use ["p","<identity-pubkey>"] or ["p","<pubkey>","","<petname>"]; saved groups use ["h","<group-id>"] in the same array
30000 psstpsst-blocked [["p","<blocked-identity-pubkey>"], ...]
30000 psstpsst-muted Direct chats use ["p","<identity-pubkey>"]; groups use ["h","<group-id>"]

In both lists, h contains the raw stable group ID from Stable groups. The contacts list’s decrypted content can contain both entry types:

[
  ["p", "<identity-pubkey>", "", "<petname>"],
  ["h", "<group-id>"]
]

The contacts list is a complete snapshot of contacts (p) and saved groups (h); omitted entries are removed.