Directories
¶
| Path | Synopsis |
|---|---|
|
grpc
Package grpc provides a gRPC client that implements the acl.I interface.
|
Package grpc provides a gRPC client that implements the acl.I interface. |
|
server
Package server provides a shared gRPC ACL server implementation.
|
Package server provides a shared gRPC ACL server implementation. |
|
Package archive provides query augmentation from authoritative archive relays.
|
Package archive provides query augmentation from authoritative archive relays. |
|
Package bridge implements a bidirectional Nostr-Email bridge using the Marmot protocol (MLS-based E2E encrypted messaging) for all Nostr-side communication.
|
Package bridge implements a bidirectional Nostr-Email bridge using the Marmot protocol (MLS-based E2E encrypted messaging) for all Nostr-side communication. |
|
Package bunker provides a NIP-46 remote signing service that listens only on the WireGuard VPN network for secure access.
|
Package bunker provides a NIP-46 remote signing service that listens only on the WireGuard VPN network for secure access. |
|
Package crawler provides an automated corpus crawler that discovers relays via kind 10002 hop-expansion and then syncs all events from each discovered relay using NIP-77 negentropy set reconciliation.
|
Package crawler provides an automated corpus crawler that discovers relays via kind 10002 hop-expansion and then syncs all events from each discovered relay using NIP-77 negentropy set reconciliation. |
|
Package database provides filter utilities for normalizing tag values.
|
Package database provides filter utilities for normalizing tag values. |
|
bufpool
Package bufpool provides buffer pools for reducing GC pressure in hot paths.
|
Package bufpool provides buffer pools for reducing GC pressure in hot paths. |
|
grpc
Package grpc provides a gRPC client that implements the database.Database interface.
|
Package grpc provides a gRPC client that implements the database.Database interface. |
|
server
Package server provides a shared gRPC database server implementation.
|
Package server provides a shared gRPC database server implementation. |
|
domain
|
|
|
errors
Package errors provides domain-specific error types for the ORLY relay.
|
Package errors provides domain-specific error types for the ORLY relay. |
|
events
Package events provides domain event types and a dispatcher for the ORLY relay.
|
Package events provides domain event types and a dispatcher for the ORLY relay. |
|
events/subscribers
Package subscribers provides domain event subscriber implementations.
|
Package subscribers provides domain event subscriber implementations. |
|
event
|
|
|
authorization
Package authorization provides event authorization services for the ORLY relay.
|
Package authorization provides event authorization services for the ORLY relay. |
|
ingestion
Package ingestion provides a service for orchestrating the event processing pipeline.
|
Package ingestion provides a service for orchestrating the event processing pipeline. |
|
processing
Package processing provides event processing services for the ORLY relay.
|
Package processing provides event processing services for the ORLY relay. |
|
routing
Package routing provides event routing services for the ORLY relay.
|
Package routing provides event routing services for the ORLY relay. |
|
specialkinds
Package specialkinds provides a registry for handling special event kinds that require custom processing before normal storage/delivery.
|
Package specialkinds provides a registry for handling special event kinds that require custom processing before normal storage/delivery. |
|
validation
Package validation provides event validation services for the ORLY relay.
|
Package validation provides event validation services for the ORLY relay. |
|
Package httpguard provides application-level HTTP protection: bot User-Agent blocking and per-IP rate limiting.
|
Package httpguard provides application-level HTTP protection: bot User-Agent blocking and per-IP rate limiting. |
|
interfaces
|
|
|
acl
Package acl is an interface for implementing arbitrary access control lists.
|
Package acl is an interface for implementing arbitrary access control lists. |
|
loadmonitor
Package loadmonitor defines the interface for database load monitoring.
|
Package loadmonitor defines the interface for database load monitoring. |
|
negentropy
Package negentropy defines the interface for NIP-77 negentropy operations.
|
Package negentropy defines the interface for NIP-77 negentropy operations. |
|
neterr
Package neterr defines interfaces for network error handling.
|
Package neterr defines interfaces for network error handling. |
|
pid
Package pid defines interfaces for PID controller process variable sources.
|
Package pid defines interfaces for PID controller process variable sources. |
|
resultiter
Package resultiter defines interfaces for iterating over database query results.
|
Package resultiter defines interfaces for iterating over database query results. |
|
store
Package store is an interface and ancillary helpers and types for defining a series of API elements for abstracting the event storage from the implementation.
|
Package store is an interface and ancillary helpers and types for defining a series of API elements for abstracting the event storage from the implementation. |
|
transport
Package transport defines the interface for pluggable network transports.
|
Package transport defines the interface for pluggable network transports. |
|
typer
Package typer is an interface for server to use to identify their type simply for aggregating multiple self-registered server such that the top level can recognise the type of a message and match it to the type of handler.
|
Package typer is an interface for server to use to identify their type simply for aggregating multiple self-registered server such that the top level can recognise the type of a message and match it to the type of handler. |
|
Package lol (log of location) is a simple logging library that prints a high precision unix timestamp and the source location of a log print to make tracing errors simpler.
|
Package lol (log of location) is a simple logging library that prints a high precision unix timestamp and the source location of a log print to make tracing errors simpler. |
|
chk
Package chk is a convenience shortcut to use shorter names to access the lol.Logger.
|
Package chk is a convenience shortcut to use shorter names to access the lol.Logger. |
|
errorf
Package errorf is a convenience shortcut to use shorter names to access the lol.Logger.
|
Package errorf is a convenience shortcut to use shorter names to access the lol.Logger. |
|
log
Package log is a convenience shortcut to use shorter names to access the lol.Logger.
|
Package log is a convenience shortcut to use shorter names to access the lol.Logger. |
|
Package mode provides a global ACL mode indicator that can be read by packages that need to know the current access control mode without creating circular dependencies.
|
Package mode provides a global ACL mode indicator that can be read by packages that need to know the current access control mode without creating circular dependencies. |
|
Package neo4j provides hex utilities for normalizing pubkeys and event IDs.
|
Package neo4j provides hex utilities for normalizing pubkeys and event IDs. |
|
nostr
|
|
|
crypto/ec
Package btcec implements support for the elliptic curves needed for bitcoin.
|
Package btcec implements support for the elliptic curves needed for bitcoin. |
|
crypto/ec/base58
Package base58 provides an API for working with modified base58 and Base58Check encodings.
|
Package base58 provides an API for working with modified base58 and Base58Check encodings. |
|
crypto/ec/base58/gen
command
|
|
|
crypto/ec/bech32
Package bech32 provides a Go implementation of the bech32 format specified in BIP 173.
|
Package bech32 provides a Go implementation of the bech32 format specified in BIP 173. |
|
crypto/ec/chaincfg
Package chaincfg provides basic parameters for bitcoin chain and testnets.
|
Package chaincfg provides basic parameters for bitcoin chain and testnets. |
|
crypto/ec/chainhash
Package chainhash provides abstracted hash functionality.
|
Package chainhash provides abstracted hash functionality. |
|
crypto/ec/ecdsa
Package ecdsa provides secp256k1-optimized ECDSA signing and verification.
|
Package ecdsa provides secp256k1-optimized ECDSA signing and verification. |
|
crypto/ec/musig2
Package musig2 provides an implementation of the musig2 protocol for bitcoin.
|
Package musig2 provides an implementation of the musig2 protocol for bitcoin. |
|
crypto/ec/schnorr
Package schnorr provides custom Schnorr signing and verification via secp256k1.
|
Package schnorr provides custom Schnorr signing and verification via secp256k1. |
|
crypto/ec/secp256k1
Package secp256k1 implements optimized secp256k1 elliptic curve operations in pure Go.
|
Package secp256k1 implements optimized secp256k1 elliptic curve operations in pure Go. |
|
crypto/ec/secp256k1/precomps
command
Package main provides a generator for precomputed constants for secp256k1 signatures.
|
Package main provides a generator for precomputed constants for secp256k1 signatures. |
|
crypto/ec/taproot
Package taproot provides a collection of tools for encoding bitcoin taproot addresses.
|
Package taproot provides a collection of tools for encoding bitcoin taproot addresses. |
|
crypto/ec/wire
Package wire contains a set of data structure definitions for the bitcoin blockchain.
|
Package wire contains a set of data structure definitions for the bitcoin blockchain. |
|
crypto/encryption
Package encryption contains the message encryption schemes defined in NIP-04 and NIP-44, used for encrypting the content of nostr messages.
|
Package encryption contains the message encryption schemes defined in NIP-04 and NIP-44, used for encrypting the content of nostr messages. |
|
crypto/keys
Package keys is a set of helpers for generating and converting public/secret keys to hex and back to binary.
|
Package keys is a set of helpers for generating and converting public/secret keys to hex and back to binary. |
|
encoders/bech32encoding
Package bech32encoding implements NIP-19 entities, which are bech32 encoded data that describes nostr data types.
|
Package bech32encoding implements NIP-19 entities, which are bech32 encoded data that describes nostr data types. |
|
encoders/bech32encoding/pointers
Package pointers is a set of basic nip-19 data types for generating bech32 encoded nostr entities.
|
Package pointers is a set of basic nip-19 data types for generating bech32 encoded nostr entities. |
|
encoders/bech32encoding/tlv
Package tlv implements a simple Type Length Value encoder for nostr NIP-19 bech32 encoded entities.
|
Package tlv implements a simple Type Length Value encoder for nostr NIP-19 bech32 encoded entities. |
|
encoders/envelopes
Package envelopes provides common functions for marshaling and identifying nostr envelopes (JSON arrays containing protocol messages).
|
Package envelopes provides common functions for marshaling and identifying nostr envelopes (JSON arrays containing protocol messages). |
|
encoders/envelopes/authenvelope
Package authenvelope defines the auth challenge (relay message) and response (client message) of the NIP-42 authentication protocol.
|
Package authenvelope defines the auth challenge (relay message) and response (client message) of the NIP-42 authentication protocol. |
|
encoders/envelopes/closedenvelope
Package closedenvelope defines the nostr message type CLOSED which is sent from a relay to indicate the relay-side termination of a subscription or the demand for authentication associated with a subscription.
|
Package closedenvelope defines the nostr message type CLOSED which is sent from a relay to indicate the relay-side termination of a subscription or the demand for authentication associated with a subscription. |
|
encoders/envelopes/closeenvelope
Package closeenvelope provides the encoder for the client message CLOSE which is a request to terminate a subscription.
|
Package closeenvelope provides the encoder for the client message CLOSE which is a request to terminate a subscription. |
|
encoders/envelopes/countenvelope
Package countenvelope is an encoder for the COUNT request (client) and response (relay) message types.
|
Package countenvelope is an encoder for the COUNT request (client) and response (relay) message types. |
|
encoders/envelopes/eoseenvelope
Package eoseenvelope provides an encoder for the EOSE (End Of Stored Events) event that signifies that a REQ has found all stored events and from here on the request morphs into a subscription, until the limit, if requested, or until CLOSE or CLOSED.
|
Package eoseenvelope provides an encoder for the EOSE (End Of Stored Events) event that signifies that a REQ has found all stored events and from here on the request morphs into a subscription, until the limit, if requested, or until CLOSE or CLOSED. |
|
encoders/envelopes/eventenvelope
Package eventenvelope is a codec for the event Submission request EVENT envelope (client) and event Result (to a REQ) from a relay.
|
Package eventenvelope is a codec for the event Submission request EVENT envelope (client) and event Result (to a REQ) from a relay. |
|
encoders/envelopes/messages
Package messages is a collection of example/common messages and machine-readable prefixes to use with OK and CLOSED envelopes.
|
Package messages is a collection of example/common messages and machine-readable prefixes to use with OK and CLOSED envelopes. |
|
encoders/envelopes/noticeenvelope
Package noticeenvelope is a codec for the NOTICE envelope, which is used to serve (mostly ignored) messages that are supposed to be shown to a user in the client.
|
Package noticeenvelope is a codec for the NOTICE envelope, which is used to serve (mostly ignored) messages that are supposed to be shown to a user in the client. |
|
encoders/envelopes/okenvelope
Package okenvelope is a codec for the OK message, which is an acknowledgement for an EVENT eventenvelope.Submission, containing true/false and if false a message with a machine readable error type as found in the messages package.
|
Package okenvelope is a codec for the OK message, which is an acknowledgement for an EVENT eventenvelope.Submission, containing true/false and if false a message with a machine readable error type as found in the messages package. |
|
encoders/envelopes/reqenvelope
Package reqenvelope is a message from a client to a relay containing a subscription identifier and an array of filters to search for events.
|
Package reqenvelope is a message from a client to a relay containing a subscription identifier and an array of filters to search for events. |
|
encoders/event/examples
Package examples is an embedded jsonl format of a collection of events intended to be used to test an event codec.
|
Package examples is an embedded jsonl format of a collection of events intended to be used to test an event codec. |
|
encoders/hex
Package hex is a set of aliases and helpers for using the templexxx SIMD hex encoder.
|
Package hex is a set of aliases and helpers for using the templexxx SIMD hex encoder. |
|
encoders/ints
Package ints is an optimised encoder for decimal numbers in ASCII format, that simplifies and accelerates encoding and decoding decimal strings.
|
Package ints is an optimised encoder for decimal numbers in ASCII format, that simplifies and accelerates encoding and decoding decimal strings. |
|
encoders/ints/gen
command
Package main is a generator for the base10000 (4 digit) encoding of the ints library.
|
Package main is a generator for the base10000 (4 digit) encoding of the ints library. |
|
encoders/kind
Package kind includes a type for convenient handling of event kinds, and a kind database with reverse lookup for human-readable information about event kinds.
|
Package kind includes a type for convenient handling of event kinds, and a kind database with reverse lookup for human-readable information about event kinds. |
|
encoders/tag
Package tag provides an implementation of a nostr tag list, an array of strings with a usually single letter first "key" field, including methods to compare, marshal/unmarshal and access elements with their proper semantics.
|
Package tag provides an implementation of a nostr tag list, an array of strings with a usually single letter first "key" field, including methods to compare, marshal/unmarshal and access elements with their proper semantics. |
|
encoders/tag/atag
Package atag implements a special, optimized handling for keeping a tags (address) in a more memory efficient form while working with these tags.
|
Package atag implements a special, optimized handling for keeping a tags (address) in a more memory efficient form while working with these tags. |
|
encoders/timestamp
Package timestamp is a set of helpers for working with timestamps including encoding and conversion to various integer forms, from time.Time and varints.
|
Package timestamp is a set of helpers for working with timestamps including encoding and conversion to various integer forms, from time.Time and varints. |
|
encoders/varint
Package varint is a variable integer encoding that works in reverse compared to the stdlib binary Varint.
|
Package varint is a variable integer encoding that works in reverse compared to the stdlib binary Varint. |
|
httpauth
Package httpauth provides helpers and encoders for nostr NIP-98 HTTP authentication header messages and a new JWT authentication message and delegation event kind 13004 that enables time limited expiring delegations of authentication (as with NIP-42 auth) for the HTTP API.
|
Package httpauth provides helpers and encoders for nostr NIP-98 HTTP authentication header messages and a new JWT authentication message and delegation event kind 13004 that enables time limited expiring delegations of authentication (as with NIP-42 auth) for the HTTP API. |
|
interfaces/signer
Package signer defines server for management of signatures, used to abstract the signature algorithm from the usage.
|
Package signer defines server for management of signatures, used to abstract the signature algorithm from the usage. |
|
interfaces/signer/p8k
Package p8k provides a signer.I implementation using the pure Go p256k1.mleku.dev library with BMI2-accelerated assembly on AMD64.
|
Package p8k provides a signer.I implementation using the pure Go p256k1.mleku.dev library with BMI2-accelerated assembly on AMD64. |
|
negentropy
Package negentropy implements NIP-77 negentropy-based set reconciliation.
|
Package negentropy implements NIP-77 negentropy-based set reconciliation. |
|
protocol/marmot
Package marmot implements the Marmot protocol (MLS-based E2E encrypted messaging) for Nostr.
|
Package marmot implements the Marmot protocol (MLS-based E2E encrypted messaging) for Nostr. |
|
types
Package types provides fixed-size cryptographic types for Nostr.
|
Package types provides fixed-size cryptographic types for Nostr. |
|
utils/normalize
Package normalize is a set of tools for cleaning up URL s and formatting nostr OK and CLOSED messages.
|
Package normalize is a set of tools for cleaning up URL s and formatting nostr OK and CLOSED messages. |
|
utils/number
Package number implements a simple number list, used with relayinfo package for NIP support lists.
|
Package number implements a simple number list, used with relayinfo package for NIP support lists. |
|
utils/units
Package units is a convenient set of names designating data sizes in bytes using common ISO names (base 10).
|
Package units is a convenient set of names designating data sizes in bytes using common ISO names (base 10). |
|
Package p256k1 provides a pure Go implementation of the secp256k1 elliptic curve cryptographic operations, including ECDSA signatures, Schnorr signatures (BIP-340), and Elliptic Curve Diffie-Hellman (ECDH) key exchange.
|
Package p256k1 provides a pure Go implementation of the secp256k1 elliptic curve cryptographic operations, including ECDSA signatures, Schnorr signatures (BIP-340), and Elliptic Curve Diffie-Hellman (ECDH) key exchange. |
|
avx
Package avx provides AVX2-accelerated secp256k1 operations using 128-bit limbs.
|
Package avx provides AVX2-accelerated secp256k1 operations using 128-bit limbs. |
|
ecdsa
Package ecdsa provides ECDSA (Elliptic Curve Digital Signature Algorithm) operations on the secp256k1 curve.
|
Package ecdsa provides ECDSA (Elliptic Curve Digital Signature Algorithm) operations on the secp256k1 curve. |
|
exchange
Package exchange provides Elliptic Curve Diffie-Hellman (ECDH) key exchange operations on the secp256k1 curve.
|
Package exchange provides Elliptic Curve Diffie-Hellman (ECDH) key exchange operations on the secp256k1 curve. |
|
keys
Package keys provides secp256k1 key management operations.
|
Package keys provides secp256k1 key management operations. |
|
schnorr
Package schnorr provides BIP-340 Schnorr signature operations on secp256k1.
|
Package schnorr provides BIP-340 Schnorr signature operations on secp256k1. |
|
wnaf
Package wnaf implements windowed Non-Adjacent Form (wNAF) encoding for 256-bit scalars.
|
Package wnaf implements windowed Non-Adjacent Form (wNAF) encoding for 256-bit scalars. |
|
Package pid provides a generic PID controller implementation with filtered derivative.
|
Package pid provides a generic PID controller implementation with filtered derivative. |
|
proto
|
|
|
orlydb/v1
Package orlydbv1 provides type converters between proto messages and Go types.
|
Package orlydbv1 provides type converters between proto messages and Go types. |
|
protocol
|
|
|
directory
Package directory implements the distributed directory consensus protocol as defined in NIP-XX for Nostr relay operators.
|
Package directory implements the distributed directory consensus protocol as defined in NIP-XX for Nostr relay operators. |
|
directory-client
Package directory_client provides a client library for the Distributed Directory Consensus Protocol (NIP-XX).
|
Package directory_client provides a client library for the Distributed Directory Consensus Protocol (NIP-XX). |
|
graph
Package graph implements NIP-XX Graph Query protocol support.
|
Package graph implements NIP-XX Graph Query protocol support. |
|
Package ratelimit provides adaptive rate limiting using PID control.
|
Package ratelimit provides adaptive rate limiting using PID control. |
|
Package relay provides shared startup logic for running the ORLY relay.
|
Package relay provides shared startup logic for running the ORLY relay. |
|
Package storage provides storage management functionality including filesystem space detection, access tracking for events, and garbage collection based on access patterns.
|
Package storage provides storage management functionality including filesystem space detection, access tracking for events, and garbage collection based on access patterns. |
|
Package sync provides backward compatibility facade for sync services New code should import the specific subpackages directly:
|
Package sync provides backward compatibility facade for sync services New code should import the specific subpackages directly: |
|
cluster
Package cluster provides cluster replication with persistent state
|
Package cluster provides cluster replication with persistent state |
|
cluster/grpc
Package grpc provides a gRPC client for the cluster sync service.
|
Package grpc provides a gRPC client for the cluster sync service. |
|
cluster/server
Package server provides the gRPC server implementation for cluster sync.
|
Package server provides the gRPC server implementation for cluster sync. |
|
common
Package common provides shared utilities for sync services
|
Package common provides shared utilities for sync services |
|
distributed
Package distributed provides serial-based peer-to-peer synchronization
|
Package distributed provides serial-based peer-to-peer synchronization |
|
distributed/grpc
Package grpc provides a gRPC client for the distributed sync service.
|
Package grpc provides a gRPC client for the distributed sync service. |
|
distributed/server
Package server provides the gRPC server implementation for distributed sync.
|
Package server provides the gRPC server implementation for distributed sync. |
|
negentropy
Package negentropy provides NIP-77 negentropy-based set reconciliation for both relay-to-relay sync and client-facing WebSocket operations.
|
Package negentropy provides NIP-77 negentropy-based set reconciliation for both relay-to-relay sync and client-facing WebSocket operations. |
|
negentropy/grpc
Package grpc provides a gRPC client for the negentropy sync service.
|
Package grpc provides a gRPC client for the negentropy sync service. |
|
negentropy/server
Package server provides the gRPC server implementation for negentropy sync.
|
Package server provides the gRPC server implementation for negentropy sync. |
|
relaygroup
Package relaygroup provides relay group configuration management
|
Package relaygroup provides relay group configuration management |
|
relaygroup/grpc
Package grpc provides a gRPC client for the relay group service.
|
Package grpc provides a gRPC client for the relay group service. |
|
relaygroup/server
Package server provides the gRPC server implementation for relay group.
|
Package server provides the gRPC server implementation for relay group. |
|
Package tor provides Tor hidden service integration for the ORLY relay.
|
Package tor provides Tor hidden service integration for the ORLY relay. |
|
Package transport provides a manager for pluggable network transports.
|
Package transport provides a manager for pluggable network transports. |
|
tcp
Package tcp provides a plain HTTP transport for the relay.
|
Package tcp provides a plain HTTP transport for the relay. |
|
tls
Package tls provides a TLS/ACME transport for the relay.
|
Package tls provides a TLS/ACME transport for the relay. |
|
tor
Package tor provides a Tor hidden service transport for the relay.
|
Package tor provides a Tor hidden service transport for the relay. |
|
apputil
Package apputil provides utility functions for file and directory operations.
|
Package apputil provides utility functions for file and directory operations. |
|
atomic
Package atomic provides simple wrappers around numerics to enforce atomic access.
|
Package atomic provides simple wrappers around numerics to enforce atomic access. |
|
atomic/internal/gen-atomicint
command
gen-atomicint generates an atomic wrapper around an integer type.
|
gen-atomicint generates an atomic wrapper around an integer type. |
|
atomic/internal/gen-atomicwrapper
command
gen-atomicwrapper generates wrapper types around other atomic types.
|
gen-atomicwrapper generates wrapper types around other atomic types. |
|
interrupt
Package interrupt is a library for providing handling for Ctrl-C/Interrupt handling and triggering callbacks for such things as closing files, flushing buffers, and other elements of graceful shutdowns.
|
Package interrupt is a library for providing handling for Ctrl-C/Interrupt handling and triggering callbacks for such things as closing files, flushing buffers, and other elements of graceful shutdowns. |
|
qu
Package qu is a library for making handling signal (chan struct{}) channels simpler, as well as monitoring the state of the signal channels in an application.
|
Package qu is a library for making handling signal (chan struct{}) channels simpler, as well as monitoring the state of the signal channels in an application. |
|
Package wasmdb provides a WebAssembly-compatible database implementation using IndexedDB as the storage backend.
|
Package wasmdb provides a WebAssembly-compatible database implementation using IndexedDB as the storage backend. |
|
Package wireguard provides an embedded WireGuard VPN server for secure NIP-46 bunker access.
|
Package wireguard provides an embedded WireGuard VPN server for secure NIP-46 bunker access. |
Click to show internal directories.
Click to hide internal directories.