https://github.com/nicholasbhubbard/net-nostr
Perl implementation of the Nostr protocol
https://github.com/nicholasbhubbard/net-nostr
nostr perl
Last synced: 25 days ago
JSON representation
Perl implementation of the Nostr protocol
- Host: GitHub
- URL: https://github.com/nicholasbhubbard/net-nostr
- Owner: NicholasBHubbard
- License: gpl-3.0
- Created: 2023-08-31T03:05:15.000Z (almost 3 years ago)
- Default Branch: main
- Last Pushed: 2026-07-03T02:29:56.000Z (28 days ago)
- Last Synced: 2026-07-03T04:28:47.604Z (28 days ago)
- Topics: nostr, perl
- Language: Perl
- Homepage:
- Size: 1.67 MB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: Changes
- License: LICENSE
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Net::Nostr Monorepo
A [Nostr](https://nostr.org/) library for Perl.
This repository contains four Perl distributions:
- `Net-Nostr-Core`: core Nostr protocol tooling such as events, keys, filters,
messages, encryption helpers, and NIP-specific builders.
- `Net-Nostr-Client`: `Net::Nostr::Client`, the WebSocket client implementation.
- `Net-Nostr-Relay`: `Net::Nostr::Relay` and relay storage.
- `Net-Nostr`: compatibility shim that installs Core, Client, and Relay.
## Installation
For the full historical install:
```
$ cpanm Net::Nostr
```
For protocol tooling only:
```
$ cpanm Net::Nostr::Core
```
`Net::Nostr::Identifier` can parse and verify NIP-05 response data with only
Core installed. Its network methods, `lookup` and `verify`, lazy-load
`AnyEvent::HTTP`; Core recommends that dependency, while the `Net::Nostr` shim
requires it.
## Documentation
Full API documentation: https://metacpan.org/pod/Net::Nostr
## Supported NIPs
Conformance target: [nostr-protocol/nips commit 8f8444d0](https://github.com/nostr-protocol/nips/commit/8f8444d05a8842c40211ded5d10af3521541f865)
(2026-07-01).
- [NIP-01](https://github.com/nostr-protocol/nips/blob/master/01.md) - Basic protocol flow
- [NIP-02](https://github.com/nostr-protocol/nips/blob/master/02.md) - Follow list
- [NIP-03](https://github.com/nostr-protocol/nips/blob/master/03.md) - OpenTimestamps attestations for events
- [NIP-05](https://github.com/nostr-protocol/nips/blob/master/05.md) - Mapping Nostr keys to DNS-based internet identifiers
- [NIP-06](https://github.com/nostr-protocol/nips/blob/master/06.md) - Basic key derivation from mnemonic seed phrase
- [NIP-09](https://github.com/nostr-protocol/nips/blob/master/09.md) - Event deletion request
- [NIP-10](https://github.com/nostr-protocol/nips/blob/master/10.md) - Text notes and threads
- [NIP-11](https://github.com/nostr-protocol/nips/blob/master/11.md) - Relay information document
- [NIP-13](https://github.com/nostr-protocol/nips/blob/master/13.md) - Proof of Work
- [NIP-17](https://github.com/nostr-protocol/nips/blob/master/17.md) - Private direct messages
- [NIP-18](https://github.com/nostr-protocol/nips/blob/master/18.md) - Reposts
- [NIP-19](https://github.com/nostr-protocol/nips/blob/master/19.md) - bech32-encoded entities
- [NIP-21](https://github.com/nostr-protocol/nips/blob/master/21.md) - `nostr:` URI scheme
- [NIP-22](https://github.com/nostr-protocol/nips/blob/master/22.md) - Comment
- [NIP-23](https://github.com/nostr-protocol/nips/blob/master/23.md) - Long-form content
- [NIP-24](https://github.com/nostr-protocol/nips/blob/master/24.md) - Extra metadata fields and tags
- [NIP-25](https://github.com/nostr-protocol/nips/blob/master/25.md) - Reactions
- [NIP-27](https://github.com/nostr-protocol/nips/blob/master/27.md) - Text note references
- [NIP-29](https://github.com/nostr-protocol/nips/blob/master/29.md) - Relay-based groups
- [NIP-32](https://github.com/nostr-protocol/nips/blob/master/32.md) - Labeling
- [NIP-34](https://github.com/nostr-protocol/nips/blob/master/34.md) - git stuff
- [NIP-35](https://github.com/nostr-protocol/nips/blob/master/35.md) - Torrents
- [NIP-36](https://github.com/nostr-protocol/nips/blob/master/36.md) - Sensitive Content / Content Warning
- [NIP-40](https://github.com/nostr-protocol/nips/blob/master/40.md) - Expiration timestamp
- [NIP-42](https://github.com/nostr-protocol/nips/blob/master/42.md) - Authentication of clients to relays
- [NIP-43](https://github.com/nostr-protocol/nips/blob/master/43.md) - Relay Access Metadata and Requests
- [NIP-44](https://github.com/nostr-protocol/nips/blob/master/44.md) - Encrypted payloads (versioned)
- [NIP-45](https://github.com/nostr-protocol/nips/blob/master/45.md) - Event counts
- [NIP-46](https://github.com/nostr-protocol/nips/blob/master/46.md) - Nostr Remote Signing
- [NIP-47](https://github.com/nostr-protocol/nips/blob/master/47.md) - Nostr Wallet Connect
- [NIP-49](https://github.com/nostr-protocol/nips/blob/master/49.md) - Private key encryption
- [NIP-50](https://github.com/nostr-protocol/nips/blob/master/50.md) - Search capability
- [NIP-51](https://github.com/nostr-protocol/nips/blob/master/51.md) - Lists
- [NIP-52](https://github.com/nostr-protocol/nips/blob/master/52.md) - Calendar Events
- [NIP-53](https://github.com/nostr-protocol/nips/blob/master/53.md) - Live Activities
- [NIP-54](https://github.com/nostr-protocol/nips/blob/master/54.md) - Wiki
- [NIP-56](https://github.com/nostr-protocol/nips/blob/master/56.md) - Reporting
- [NIP-57](https://github.com/nostr-protocol/nips/blob/master/57.md) - Lightning Zaps
- [NIP-58](https://github.com/nostr-protocol/nips/blob/master/58.md) - Badges
- [NIP-59](https://github.com/nostr-protocol/nips/blob/master/59.md) - Gift wrap
- [NIP-60](https://github.com/nostr-protocol/nips/blob/master/60.md) - Cashu wallets
- [NIP-61](https://github.com/nostr-protocol/nips/blob/master/61.md) - Nutzaps
- [NIP-65](https://github.com/nostr-protocol/nips/blob/master/65.md) - Relay list metadata
- [NIP-66](https://github.com/nostr-protocol/nips/blob/master/66.md) - Relay Discovery and Liveness Monitoring
- [NIP-70](https://github.com/nostr-protocol/nips/blob/master/70.md) - Protected Events
- [NIP-73](https://github.com/nostr-protocol/nips/blob/master/73.md) - External Content IDs
- [NIP-77](https://github.com/nostr-protocol/nips/blob/master/77.md) - Negentropy Syncing
- [NIP-78](https://github.com/nostr-protocol/nips/blob/master/78.md) - Arbitrary Custom App Data
- [NIP-86](https://github.com/nostr-protocol/nips/blob/master/86.md) - Relay Management API
- [NIP-87](https://github.com/nostr-protocol/nips/blob/master/87.md) - Ecash Mint Discoverability
- [NIP-89](https://github.com/nostr-protocol/nips/blob/master/89.md) - Recommended Application Handlers
- [NIP-92](https://github.com/nostr-protocol/nips/blob/master/92.md) - Media Attachments
- [NIP-94](https://github.com/nostr-protocol/nips/blob/master/94.md) - File Metadata
- [NIP-98](https://github.com/nostr-protocol/nips/blob/master/98.md) - HTTP auth
- [NIP-99](https://github.com/nostr-protocol/nips/blob/master/99.md) - Classified Listings
- [NIP-B7](https://github.com/nostr-protocol/nips/blob/master/B7.md) - Blossom media
NIP-04 (legacy encrypted DMs) is deprecated and not supported.
## Contributing
Do not hesitate to open an [issue](https://github.com/NicholasBHubbard/Net-Nostr/issues) or [pull request](https://github.com/NicholasBHubbard/Net-Nostr/pulls)!
## AI Usage
This code was developed in part with AI tooling such as Claude Code and Codex. We want to be upfront about that.