##
## strfry.conf — Timmy's sovereign Nostr relay
##
## All events pass through the relay-policy sidecar before being accepted.
## No event is stored without explicit approval from the API server.
##

db = "/data/strfry-db"

relay {
    bind = "0.0.0.0"
    port = 7777

    info {
        name = "Timmy Relay"
        description = "Timmy's sovereign Nostr relay — whitelist-only"
        pubkey = ""
        contact = ""
        icon = ""
    }

    # Maximum WebSocket payload size (bytes).
    # 131072 = 128 KiB — generous for NIP-09 deletions but not abusable.
    maxWebsocketPayloadSize = 131072

    autoPingSeconds = 55
    enableTcpKeepalive = false
    queryTimesliceBudgetMicroseconds = 10000
    maxFilterLimit = 500
    maxSubsPerConnection = 20

    writePolicy {
        # Plugin receives JSON lines on stdin, writes decision lines to stdout.
        # The plugin script bridges each event to the relay-policy HTTP sidecar.
        plugin = "/usr/local/bin/relay-policy-plugin"
    }

    compression {
        enabled = true
        slidingWindow = true
    }

    logging {
        dumpInAll = false
        dumpInEvents = false
        dumpInReqs = false
        dbScanPerf = false
        quiet = false
    }

    numThreads {
        ingester = 3
        reqWorker = 3
        reqMonitor = 1
        negentropy = 2
    }

    # Accept events up to 64 KiB — NIP-01 compliant maximum.
    maxEventSize = 65536

    # Allow ephemeral events (kinds 20000–29999) — needed for NIP-04 DMs.
    rejectEphemeral = false
}
