Browse by type
powered by nostr-relay
Download the latest release from the Releases page.
Note: Since the app is unsigned, you may need to manually allow it to run in your system settings.
If you encounter the error: "nostr-relay-tray is damaged and can't be opened. You should move it to the Bin.", run the following command in your terminal:
sudo xattr -rd com.apple.quarantine /Applications/nostr-relay-tray.app
Then, try launching the app again.
You can also compile the app from source.
Note: Node.js >= 20 is required.
# Clone this repository
git clone https://github.com/CodyTseng/nostr-relay-tray.git
# Go into the repository
cd nostr-relay-tray
# Install dependencies
npm install
# Build the app
npm run build:mac
# or npm run build:win
# or npm run build:linux
The executable file will be in the dist folder.
nostr-relay-tray provides a flexible event filtering mechanism, allowing you to precisely control which events are accepted. The mechanism works in two layers:
Incoming Event
│
▼
┌───────────────┐
│ Block Rules │ ❌ If blocked, event is rejected.
└───────────────┘
│ (not blocked)
▼
┌─────────────────────────────────────────┐
│ Only one needs to pass │
├─────────────┬─────────────┬─────────────┤
│ Allow Rules │ WoT │ PoW │
└─────────────┴─────────────┴─────────────┘
│
▼
Event Accepted ✅
This layer consists of three independent filters:
Filtering logic:




If you like this project, you can buy me a coffee :)
lightning: ⚡️ codytseng@getalby.com ⚡️
bitcoin: bc1qx8kvutghdhejx7vuvatmvw2ghypdungu0qm7ds
The ostrich element within the icon is sourced from nostr_icons. Special thanks to satscoffee for providing such a beautiful ostrich.
MIT
$ claude mcp add nostr-relay-tray \
-- python -m otcore.mcp_server <graph>