atproto relay in zig zlay.waow.tech
relay zig atproto
zlay docs operations configuration.md
2.8 kB · 31 lines

configuration #

variable default description
RELAY_PORT 3000 firehose + API port
RELAY_METRICS_PORT 3001 prometheus metrics port
RELAY_UPSTREAM bsky.network bootstrap relay for initial host list (set to "" or "none" to disable)
RELAY_DATA_DIR data/events event log storage
RELAY_RETENTION_HOURS 72 replay window on disk. size the replay window from measured disk growth; a short window reduces storage requirements
RELAY_MAX_EVENTS_GB 100 byte cap on the event dir (GiB), enforced every GC tick. overflow backstop; the effective replay window can be shorter when this cap is reached
COLLECTION_INDEX_DIR data/collection-index collection index path
DATABASE_URL — PostgreSQL connection string
RELAY_ADMIN_PASSWORD — bearer token for admin endpoints
RELAY_INGEST_STALL_ENABLED 1 /_healthz returns 503 on a process-wide ingest stall; 0 disables. runtime-settable via /admin/ingest-stall
RELAY_INGEST_STALL_THRESHOLD_FPS 50 ingest rate below which the process counts as stalled
RELAY_INGEST_STALL_WINDOW_SEC 900 how long ingest must stay below the threshold before /_healthz flips
RELAY_INGEST_STALL_STARTUP_GRACE_SEC 900 no stall verdict this long after start (cold-start spawn + backfill)
RELAY_WS_PING_ENABLED 1 keepalive-ping upstream connections to detect half-open TCP; 0 disables. runtime-settable via /admin/ws-ping
RELAY_WS_PING_INTERVAL_SEC 30 ping a connection after this much silence
RELAY_WS_PING_MAX_FAILURES 4 reconnect after this many consecutive unanswered pings
RESOLVER_THREADS 4 background DID resolution threads
FRAME_WORKERS 16 frame processing pool worker count
FRAME_QUEUE_CAPACITY 4096 max queued frames before backpressure
VALIDATOR_CACHE_SIZE 250000 max cached signing keys before eviction

see docs/operations/deployment.md for production deployment and docs/operations/backfill.md for collection index backfill.

The collection index in this source uses zkv. Existing RocksDB directories are not compatible: use a distinct path and rebuild or explicitly migrate the index. PostgreSQL and event-log storage remain separate. ZKV_TABLE_ENCODING=legacy is the default; grouped is opt-in. See src/main.zig for profile and replay switches. Configuration defaults are source defaults, not a statement of the currently deployed production configuration.

RELAY_INDEX_PROFILE=default uses the default owner policy. bounded enables the tested bounded maintenance and page-worker policy; the live paired results used this explicit setting. Neither profile selects grouped encoding automatically.