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.