Running
Local dev + deployment notes (env vars, ports, Docker)
Requirements
Base RPC (or local Anvil RPC) for contract reads/writes
A funded EOA private key for settlement + registration transactions
ERC-8004 contracts deployed on the target network
Environment variables
The facilitator reads config from monorepo/facilitator/src/config/env.ts:
# Required
FACILITATOR_PRIVATE_KEY=0x...
# RPC config (choose one):
# 1) Single RPC (useful for single-network dev)
RPC_URL=https://sepolia.base.org
# 2) Per-network mapping (useful for multi-network)
RPC_URLS_JSON={"eip155:84532":"https://sepolia.base.org","eip155:8453":"https://mainnet.base.org"}
ERC8004_IDENTITY_REGISTRY_ADDRESS=0x...
DELEGATE_CONTRACT_ADDRESS=0x...
# Optional
PORT=4022
# Optional discovery crawler (facilitator will expose /discover + /catalog)
DISCOVERY_ENABLED=false
DISCOVERY_SEEDS=https://example.com/paywalled-endpoint,https://example.com/other
DISCOVERY_INTERVAL_SECONDS=300
DISCOVERY_MAX_DEPTH=2
DISCOVERY_MAX_REQUESTS=50
DISCOVERY_TIMEOUT_MS=10000
# DISCOVERY_CATALOG_PATH=./data/discovery-catalog.jsonInstall + run (monorepo)
From the monorepo root:
Default port is 4022 (configurable via PORT).
Notes on x402 dependencies
The facilitator vendors a copy of coinbase/x402 under monorepo/facilitator/vendor/x402/ and consumes it via workspaces in monorepo/facilitator/package.json.
Health check
Docker (optional)
There is a monorepo/facilitator/Dockerfile intended for container builds.
Build/run example:
Security
Treat
FACILITATOR_PRIVATE_KEYas a hot key: use a dedicated account with only the funds it needs.Do not expose
POST /closepublicly (it terminates the process).
Last updated