Skip to main content

Requirements

  • Go 1.26+
  • PostgreSQL
  • Redis
  • An RPC endpoint per chain you intend to support

How config is loaded

Configuration comes from two places: a .env file and the process environment. Both are read, and environment variables win where a key is defined in both. The .env file is a convenience for local development and is entirely optional. Anywhere the environment already supplies these values, such as a container or a systemd unit using EnvironmentFile=, no file needs to exist on disk.
All fields are validated at startup. The process exits if any required value is missing, rather than starting in a half-configured state.

Variables

PORT has no default, so set it explicitly.

RPC endpoints

Each chain needs its own <CHAIN>_RPC_URL, named after the chain. Only configure the ones you intend to serve: seeding makes live RPC calls per chain, and an endpoint that doesn’t respond produces a non-fatal warning and leaves that chain without pools.
See Supported chains for the full set.

Observability

OpenTelemetry export is off unless OTEL_ENABLED is set. With it on, OTEL_ENDPOINT, OTEL_USE_TLS and OTEL_HEADERS configure the OTLP exporter. The repository ships a docker-compose.otel.yml and an otel-collector-config.yaml for running a collector locally.

Rate limiting

The proxy-related variables need care: both must be set together, or startup fails.