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.json

Install + 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_KEY as a hot key: use a dedicated account with only the funds it needs.

  • Do not expose POST /close publicly (it terminates the process).

Last updated