{"id":13832518,"url":"https://github.com/johnny423/pyrelay","last_synced_at":"2026-01-18T06:30:19.750Z","repository":{"id":149962395,"uuid":"585825273","full_name":"johnny423/pyrelay","owner":"johnny423","description":"PyRelay is a python implementation of a NOSTR Relay, using asyncio","archived":false,"fork":false,"pushed_at":"2023-04-08T17:52:11.000Z","size":115,"stargazers_count":42,"open_issues_count":4,"forks_count":11,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-08-04T11:01:15.505Z","etag":null,"topics":["asyncio","nostr","python","relay","websockets"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/johnny423.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2023-01-06T07:11:42.000Z","updated_at":"2024-06-11T18:59:36.000Z","dependencies_parsed_at":null,"dependency_job_id":"51b5b5f8-744b-44e6-b1be-7578070e8b36","html_url":"https://github.com/johnny423/pyrelay","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnny423%2Fpyrelay","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnny423%2Fpyrelay/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnny423%2Fpyrelay/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/johnny423%2Fpyrelay/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/johnny423","download_url":"https://codeload.github.com/johnny423/pyrelay/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225581771,"owners_count":17491788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asyncio","nostr","python","relay","websockets"],"created_at":"2024-08-04T11:00:21.775Z","updated_at":"2026-01-18T06:30:19.733Z","avatar_url":"https://github.com/johnny423.png","language":"Python","funding_links":[],"categories":["Install from Source","Relays"],"sub_categories":["Nostr","Implementations"],"readme":"# What is PyRelay?\n\nPyRelay is a python implementation of a NOSTR Relay, using asyncio.\nDon't know whats NOSTR is? check it out [here](https://nostr.com/).\n\n# Quick start\n\n### Installing\n\nPyRelay require python 3.11.\nI suggest setting up virtual env before running locally.\n\nInstall using git\n\n```bash\ngit clone https://github.com/johnny423/pyrelay\ncd pyrelay\n```\n\n### Run with docker compose\n\n```bash\ndocker compose up\n```\n\n### Install Locally\n\nInstall dependencies, without dev dependencies\n\n```bash\npip install -r requirements.txt\n```\n\nIf you have trouble with installing `secp256k1` try executing\n\nOn fedora `python-devel` should be installed\n\n```bash\n# dnf install python-devel\n```\n\n```bash\npip install wheel\n```\nthen\n```bash\npython setup.py bdist_wheel \n```\nand rerun  \n```bash\npip install -r requirements.txt\n```\n\n### Run the server locally\n\n```bash\npython ./pyrelay/relay/server.py\n```\n\n# Developer Setup\n\nDownload and install the latest version of git.\n\nConfigure git with your username and email.\n\n```bash\ngit config --global user.name 'your name'\ngit config --global user.email 'your email'\n```\n\nMake sure you have a GitHub account.\n\nClone the repository locally.\n\n```bash\ngit clone https://github.com/johnny423/pyrelay\ncd pyrelay\n```\n\nInstall dependencies, include dev dependencies\n\n```bash\npip install -r requirements.txt -r requirements-dev.txt -r requirements-test.txt\n```\n\nInstall pre-commit\n\n```bash\npre-commit install\n```\n\nThen, before committing, make sure `Run git hooks` is checked.\n\n### Running tests\n\nYou can run the tests with the scripts\n\n```bash\n./scripts/test.sh\n```\n\n# Support status\n\n[Check the NIPs in here](https://github.com/nostr-protocol/nips)\n\n## Supported NIPs\n\n| supported | NIP    | description                                                  |\n|-----------|--------|--------------------------------------------------------------|\n| V         | NIP-01 | Basic protocol flow description                              |\n| V         | NIP-02 | Contact List and Petnames                                    |\n| X         | NIP-03 | OpenTimestamps Attestations for Events                       |\n| V         | NIP-04 | Encrypted Direct Message                                     |\n| V         | NIP-05 | Mapping Nostr keys to DNS-based internet identifiers         |\n| V         | NIP-06 | Basic key derivation from mnemonic seed phrase               |\n| V         | NIP-07 | window.nostr capability for web browsers                     |\n| X         | NIP-08 | Handling Mentions                                            |\n| V         | NIP-09 | Event Deletion                                               |\n| X         | NIP-10 | Conventions for clients' use of e and p tags in text events. |\n| X         | NIP-11 | Relay Information Document                                   |\n| V         | NIP-12 | Generic Tag Queries                                          |\n| X         | NIP-13 | Proof of Work                                                |\n| X         | NIP-14 | Subject tag in text events.                                  |\n| V         | NIP-15 | End of Stored Events Notice                                  |\n| X         | NIP-16 | Event Treatment                                              |\n| X         | NIP-18 | Reposts                                                      |\n| X         | NIP-19 | bech32-encoded entities                                      |\n| V         | NIP-20 | Command Results                                              |\n| X         | NIP-22 | Event created_at Limits                                      |\n| X         | NIP-25 | Reactions                                                    |\n| X         | NIP-26 | Delegated Event Signing                                      |\n| X         | NIP-28 | Public Chat                                                  |\n| X         | NIP-33 | Parameterized Replaceable Events                             |\n| X         | NIP-36 | Sensitive Content                                            |\n| X         | NIP-40 | Expiration Timestamp                                         |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnny423%2Fpyrelay","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjohnny423%2Fpyrelay","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjohnny423%2Fpyrelay/lists"}