{"id":27832273,"url":"https://github.com/codonaft/broadcastr","last_synced_at":"2025-05-02T07:01:31.808Z","repository":{"id":289460036,"uuid":"971350309","full_name":"codonaft/broadcastr","owner":"codonaft","description":"Nostr relay that transmits events to other relays","archived":false,"fork":false,"pushed_at":"2025-04-30T19:04:06.000Z","size":57,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-30T20:22:53.535Z","etag":null,"topics":["crates","nostr","nostr-relay","proxy","social"],"latest_commit_sha":null,"homepage":"","language":"Rust","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/codonaft.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE-APACHE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":null,"patreon":"alopatindev","open_collective":"alopatindev","ko_fi":"alopatindev","tidelift":null,"community_bridge":null,"liberapay":"alopatindev","issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":["https://github.com/codonaft/broadcastr#support","https://codonaft.com/sponsor"]}},"created_at":"2025-04-23T11:46:44.000Z","updated_at":"2025-04-30T19:04:09.000Z","dependencies_parsed_at":"2025-04-23T12:12:55.192Z","dependency_job_id":null,"html_url":"https://github.com/codonaft/broadcastr","commit_stats":null,"previous_names":["codonaft/broadcastr"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codonaft%2Fbroadcastr","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codonaft%2Fbroadcastr/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codonaft%2Fbroadcastr/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/codonaft%2Fbroadcastr/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/codonaft","download_url":"https://codeload.github.com/codonaft/broadcastr/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251776266,"owners_count":21641982,"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":["crates","nostr","nostr-relay","proxy","social"],"created_at":"2025-05-02T07:01:22.749Z","updated_at":"2025-05-02T07:01:31.785Z","avatar_url":"https://github.com/codonaft.png","language":"Rust","funding_links":["https://patreon.com/alopatindev","https://opencollective.com/alopatindev","https://ko-fi.com/alopatindev","https://liberapay.com/alopatindev","https://github.com/codonaft/broadcastr#support","https://codonaft.com/sponsor"],"categories":["Relays"],"sub_categories":["Implementations"],"readme":"# Broadcastr\n[![Made for Nostr](https://img.shields.io/badge/Nostr-enabled-purple?logo=nostr\u0026logoColor=white)](https://github.com/nostr-protocol)\n[![Crates.io](https://img.shields.io/crates/v/broadcastr)](https://crates.io/crates/broadcastr)\n[![Crates.io](https://img.shields.io/crates/d/broadcastr)](https://crates.io/crates/broadcastr)\n[![GitHub Sponsors](https://img.shields.io/badge/Sponsor-%E2%9D%A4-%23db61a2.svg?\u0026logo=github\u0026logoColor=white\u0026labelColor=181717\u0026style=flat-square)](#Support)\n\nVendor lock-free stateless alternative to [blastr](https://github.com/MutinyWallet/blastr) with additional features:\n- [spam](https://spam.nostr.band) filtering\n- events filtering\n    - kind\n    - author/mention\n    - [PoW](https://github.com/nostr-protocol/nips/blob/master/13.md)\n- [gossip](https://github.com/frnandu/yana/blob/master/GOSSIP.md)\n- tor/onion relays\n- minimizes the risk of being rate-limited by the relay\n    - it checks whether event is already published on a certain relay\n- relays ignore list\n\n## Install\n\n### From crates.io\n```bash\ncargo install --locked broadcastr\n```\n\n### From git\n```bash\ncargo install --locked --force --git https://github.com/codonaft/broadcastr\n```\n\n## Run\n```\nbroadcastr --listen ws://localhost:8080 --relays https://api.nostr.watch/v1/online\n```\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e💡 Usage 👁️\u003c/b\u003e\u003c/summary\u003e\n\u003cp\u003e\n\n```\nUsage: broadcastr --listen \u003clisten\u003e --relays \u003crelays\u003e [--blocked-relays \u003cblocked-relays\u003e] [--tor-proxy \u003ctor-proxy\u003e] [--proxy \u003cproxy\u003e] [--min-pow \u003cmin-pow\u003e] [--allowed-pubkeys \u003callowed-pubkeys\u003e] [--disable-mentions] [--max-events-per-min \u003cmax-events-per-min\u003e] [--allowed-kinds \u003callowed-kinds\u003e] [--disable-gossip] [--disable-spam-nostr-band] [--update-interval \u003cupdate-interval\u003e] [--max-backoff-interval \u003cmax-backoff-interval\u003e] [--connection-timeout \u003cconnection-timeout\u003e] [--request-timeout \u003crequest-timeout\u003e] [--log-level \u003clog-level\u003e] [--tcp-backlog \u003ctcp-backlog\u003e] [--max-msg-size \u003cmax-msg-size\u003e] [--max-frame-size \u003cmax-frame-size\u003e]\n\nBroadcast Nostr events to other relays\n\nOptions:\n  --listen          the listener ws URI (e.g. \"ws://localhost:8080\")\n  --relays          relays or relay-list URIs (comma-separated, e.g.\n                    \"https://api.nostr.watch/v1/online,file:///path/to/relays-in-array.json,ws://1.2.3.4:5678\")\n  --blocked-relays  same, but for ignored relays; put public URL to your\n                    broadcastr here to avoid loops\n  --tor-proxy       connect to tor onion relays using socks5 proxy (e.g.\n                    \"127.0.0.1:9050\")\n  --proxy           connect to all relays using socks5 proxy\n  --min-pow         pow difficulty limit (NIP-13)\n  --allowed-pubkeys authors or mentioned authors (comma-separated\n                    hex/bech32/NIP-21 allow-list)\n  --disable-mentions\n                    disallow mentions (of the allowed authors) by others\n                    (default is false)\n  --max-events-per-min\n                    max events by author per minute (default is 5)\n  --allowed-kinds   limit event kinds with (comma-separated allow-list, e.g\n                    \"0,1,3,5,6,7,4550,34550\")\n  --disable-gossip  don't discover additional relays from user profiles\n  --disable-spam-nostr-band\n                    don't use spam.nostr.band for spam filtering\n  --update-interval relays and spam-lists update interval (default is 15m)\n  --max-backoff-interval\n                    max update backoff interval (default is 5m)\n  --connection-timeout\n                    connection timeout (default is 15s)\n  --request-timeout request timeout (default is 10s)\n  --log-level       log level (default is info)\n  --tcp-backlog     max incoming connections per listener IP address\n  --max-msg-size    event message size\n  --max-frame-size  ws frame size\n  -h, --help        display usage information\n```\n\n\u003c/p\u003e\n\u003c/details\u003e\n\n## TODO\n- [ ] support delivery of multiple events over the same connection\n- [ ] deduplicate concurrently sent events\n- [ ] NIP-11\n- [ ] improve RAM usage\n- [ ] add metrics\n\n## Support\nI'm currently investing [all my time](https://codonaft.com/why) in FOSS projects.\n\nIf you found this repo useful and you want to support me, please\n- ⭐ star\n- ⚡ [zap](https://zapper.nostrapps.org/zap?id=npub1alptdev5srcw2hxg03567p4k6xs3lgj7f6545suc0rzp0xw98svse7rg94\u0026amount=5000)\n- 🌚 something [else](https://codonaft.com/sponsor)\n\nYour support keeps me going ❤️ (◕‿◕)\n\n## License\nMIT/Apache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodonaft%2Fbroadcastr","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcodonaft%2Fbroadcastr","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcodonaft%2Fbroadcastr/lists"}