Rust-based Snapchain sync engine. Streams real-time events and backfills historical data to PostgreSQL.
# Docker (recommended)
docker compose up
# Local development
make env-setup # creates .env from example
make build
make run
# Producer/Consumer separation (for HPA scaling)
waypoint start # Both (default)
waypoint start producer # Hub → Redis only
waypoint start consumer # Redis → PostgreSQL only
# Docker producer/consumer profiles
docker compose --profile producer up # Producer only
docker compose --profile consumer up --scale waypoint-consumer=4 # Consumer with scalingBackfill uses a queue/worker model. The queue service populates Redis with FID batches, workers process them concurrently.
# Docker
docker compose --profile backfill up
docker compose --profile backfill up --scale backfill-worker=4 # parallel workers
# Local
make backfill-queue
make backfill-workerWorkers exit automatically when the queue is empty for 60s.
Copy .env.example to .env and edit. Key settings:
WAYPOINT_DATABASE__URL=postgresql://postgres:postgres@localhost:5432/waypoint
WAYPOINT_REDIS__URL=redis://localhost:6379
WAYPOINT_HUB__URL=snapchain.farcaster.xyz:3383See .env.example for all options including MCP, metrics, and Ethereum settings.
Never use localhost for hub URLs in containers. Use:
snapchain:3381(compose network)host.docker.internal:3381(Docker Desktop)172.17.0.1:3381(Linux bridge)
