SkillAgentSearch skills...

Pyrelay

PyRelay is a python implementation of a NOSTR Relay, using asyncio

Install / Use

/learn @johnny423/Pyrelay
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

What is PyRelay?

PyRelay is a python implementation of a NOSTR Relay, using asyncio. Don't know whats NOSTR is? check it out here.

Quick start

Installing

PyRelay require python 3.11. I suggest setting up virtual env before running locally.

Install using git

git clone https://github.com/johnny423/pyrelay
cd pyrelay

Run with docker compose

docker compose up

Install Locally

Install dependencies, without dev dependencies

pip install -r requirements.txt

If you have trouble with installing secp256k1 try executing

On fedora python-devel should be installed

# dnf install python-devel
pip install wheel

then

python setup.py bdist_wheel 

and rerun

pip install -r requirements.txt

Run the server locally

python ./pyrelay/relay/server.py

Developer Setup

Download and install the latest version of git.

Configure git with your username and email.

git config --global user.name 'your name'
git config --global user.email 'your email'

Make sure you have a GitHub account.

Clone the repository locally.

git clone https://github.com/johnny423/pyrelay
cd pyrelay

Install dependencies, include dev dependencies

pip install -r requirements.txt -r requirements-dev.txt -r requirements-test.txt

Install pre-commit

pre-commit install

Then, before committing, make sure Run git hooks is checked.

Running tests

You can run the tests with the scripts

./scripts/test.sh

Support status

Check the NIPs in here

Supported NIPs

| supported | NIP | description | |-----------|--------|--------------------------------------------------------------| | V | NIP-01 | Basic protocol flow description | | V | NIP-02 | Contact List and Petnames | | X | NIP-03 | OpenTimestamps Attestations for Events | | V | NIP-04 | Encrypted Direct Message | | V | NIP-05 | Mapping Nostr keys to DNS-based internet identifiers | | V | NIP-06 | Basic key derivation from mnemonic seed phrase | | V | NIP-07 | window.nostr capability for web browsers | | X | NIP-08 | Handling Mentions | | V | NIP-09 | Event Deletion | | X | NIP-10 | Conventions for clients' use of e and p tags in text events. | | X | NIP-11 | Relay Information Document | | V | NIP-12 | Generic Tag Queries | | X | NIP-13 | Proof of Work | | X | NIP-14 | Subject tag in text events. | | V | NIP-15 | End of Stored Events Notice | | X | NIP-16 | Event Treatment | | X | NIP-18 | Reposts | | X | NIP-19 | bech32-encoded entities | | V | NIP-20 | Command Results | | X | NIP-22 | Event created_at Limits | | X | NIP-25 | Reactions | | X | NIP-26 | Delegated Event Signing | | X | NIP-28 | Public Chat | | X | NIP-33 | Parameterized Replaceable Events | | X | NIP-36 | Sensitive Content | | X | NIP-40 | Expiration Timestamp |

View on GitHub
GitHub Stars44
CategoryDevelopment
Updated1y ago
Forks10

Languages

Python

Security Score

80/100

Audited on Mar 10, 2025

No findings