Nostr protocol implementation, SDK and FFI

Overview

Searchnos: an experimental implementation of NIP-50

This is a relay-like bridge server that provides a Nostr full-text search capability by using Elasticsearch as a backend. It emulates real-time search by polling Elasticsearch.

Searchnos works like a relay, with a few exceptions.

The most significant difference is that queries without the search property are ignored. This is mainly for load control; since Searchnos cannot respond so fast, it is intended to be used in conjunction with other regular relays that can handle non-search queries at great speed.

Another difference is that Searchnos does not accept EVENT messages from regular connections. When opening a WebSocket connection, if a pre-configured API key is specified as ?api_key=foo query parameter, the connection is treated specially as an administrative connection. Searchnos only receives EVENTs from such connections.

Current Limitations

  • Supports filters that contains "search" property.
  • No spam filtering. šŸ™
  • No indexing configurations. Just does N-gram indexing with some normalization.

Usage

Start server:

cp .env.example .env
# Edit .env to configure relays to connect to
docker compose up

Search:

wscat --connect ws://localhost:3000
Connected (press CTRL+C to quit)
> ["REQ", "SEARCH_TEST", {"search": "nostr"}]
(...snip...)
< ["EOSE","SEARCH_TEST"]
>

Configuration

See compose.yaml and .env.example for the configuration.

SRC_RELAYS and DEST_RELAYS can be a comma-separated list of relay URLs.

You might also like...
UnixString is An FFI-friendly null-terminated byte string

UnixString is an FFI-friendly null-terminated byte string that may be constructed from a String, a CString, a PathBuf, an OsString or a collection of bytes.

Rust SDK for the core C2PA (Coalition for Content Provenance and Authenticity) specification

C2PA Rust SDK The Coalition for Content Provenance and Authenticity (C2PA) addresses the prevalence of misleading information online through the devel

More than safe rust abstractions over rytm-sys, an unofficial SDK for writing software for Analog Rytm running on firmware 1.70.
More than safe rust abstractions over rytm-sys, an unofficial SDK for writing software for Analog Rytm running on firmware 1.70.

rytm-rs More than safe rust abstractions over rytm-sys, an unofficial SDK for writing software for Analog Rytm running on firmware 1.70. On top of CC

Cross-platform casting SDK, support Android, Windows, Linux

mirror Cross-platform casting SDK, support Android, Windows, Linux Low-latency transport protocols use [SRT](https://github.com/Haivision/srt) Video:

A tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK.
A tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK.

FileQL - File Query Language FileQL is a tool that allow you to run SQL-like query on local files instead of database files using the GitQL SDK. Sampl

Coinkite Tap Protocol implementation for use with SATSCARDā„¢ and TAPSIGNERā„¢ products

rust-cktap A Rust implementation of the Coinkite Tap Protocol for use with SATSCARD and TAPSIGNER products. Desktop Example Prerequisites USB PCSC NFC

Rust client-side implementation of the rock usb protocol

Utility crates to interact with Rockchip devices Rockchip SoCs implement a custom USB protocol when starting in a special recovery mode (sometimes cal

Anchor, a Rust Klipper protocol implementation

Anchor Anchor is an implementation of the Klipper protocol. You can use Anchor to create custom Klipper MCUs. It's written in Rust and provides only t

Windlass, a Rust Klipper host side protocol implementation

Windlass Windlass is an implementation of the host side of the Klipper protocol. The project is currently to be considered alpha quality code. Licensi

Owner
SAGE
Elegance, splendor
SAGE
simple but convenient CLI-based Nostr client app for following users and sending DMs

nostr-commander-rs TLDR: simple but convenient CLI-based Nostr client app for publishing, sending DMs, as well as following users and channels nostr-c

null 18 Dec 30, 2022
Safer Nostr is a service that helps protect users by loading sensitive information (IP leak) and using AI to prevent inappropriate images from being uploaded.

Safer Nostr is a service that helps protect users by loading sensitive information (IP leak) and using AI to prevent inappropriate images from being uploaded. It also offers image optimization and storage options. It has configurable privacy and storage settings, as well as custom cache expiration.

Thomas 4 Dec 29, 2022
A fast nostr opengraph server, built on nostrdb and egui.

notecrumbs A nostr opengraph server build on nostrdb, egui, and skia. It renders notes using the CPU in around 50ms. Status WIP! Local note fetching w

Damus 7 Dec 21, 2023
Nostr CLI client built with Rust

Nostr CLI client built with Rust Encrypted chat inside Nostr leaks metadata of who talks to who. This small CLI app implements a "public inbox," which

Vincent Liao 10 Dec 19, 2022
A simple tool to mine nostr vanity pubkeys.

Nostr CPU pubkey miner A simple tool to mine nostr vanity pubkeys. Currently supports hexadecimal and bech32 vanity keys. Tested on Windows but should

Antonin Verdier 3 Jan 19, 2023
A GPT-3 access point through Nostr, powered by lightning

Geppeto A Nostr based API for GPT-3, powered on Lightning. The bot listens for event kind 29000 (inspired by NIP-9000) and will query the prompt to th

null 5 May 24, 2023
This is an example Nostr rust project to enable '402 Payment Required' responses for requests to paid content.

Nostr Paywall Example This is an example Nostr rust project to enable 402 Payment Required responses for requests to paid content. To prove payment, a

Blake Jakopovic 6 May 6, 2023
siamstr.com Nostr Address Provider written in Rust.

Siamstr Nostr Address Provider Running project Rust Toolchain You'll need to use the nightly Rust toolchain, and install the wasm32-unknown-unknown ta

Vaz. 5 Nov 27, 2023
Unopinionated low level API bindings focused on soundness, safety, and stronger types over raw FFI.

?? firehazard ?? Create a fire hazard by locking down your (Microsoft) Windows so nobody can escape (your security sandbox.) Unopinionated low level A

null 5 Nov 17, 2022
BearLibTerminal FFI for Rust

BearLibTerminal.rs BearLibTerminal FFI for Rust. Requirements You need to compile/get a precompiled version of BearLibTerminal yourself and put it som

Š½Š°Š± 30 Jul 25, 2022