Frontmatter
The frontmatter section contains profile-level metadata and rate limiting configuration.Human-readable profile name displayed in the dashboard and logs.
URL-safe identifier used in request paths. Must be unique across all profiles.Accessed via:
/rpc/profile/production/:chainPer-API-key requests per second limit. Uses token bucket rate limiting.
Token bucket burst capacity. Allows short traffic spikes above
rps_limit.Example Frontmatter
Chain Configuration
Each chain is defined under thechains: key with a unique identifier (e.g., ethereum, base, arbitrum).
Basic Fields
EIP-155 chain ID. Used for request validation and multi-chain routing.
Display name for the chain. Defaults to the chain key if omitted.
Average block time in milliseconds. Used for optimistic lag calculation and timeout defaults.Typical values:
- Ethereum: 12000
- Base: 2000
- Arbitrum: 250
Monitoring
Controls health probe frequency and lag alerting.Interval between health checks in milliseconds. Set to approximately 1x block time for L1 chains, 2.5x for L2 chains.
Log a warning when a provider lags this many blocks behind consensus.
Selection
Controls provider eligibility filtering during request routing.Exclude providers lagging more than this many blocks behind the highest known block.Recommendations:
- L1 chains (Ethereum): 1-2 blocks
- Fast L2 chains (Arbitrum): 10 blocks
- Standard L2 chains (Base): 5 blocks
Number of blocks before data is considered “archival”. Requests for blocks older than
head - threshold are only routed to providers marked as archival: true.WebSocket
Controls upstream WebSocket subscription behavior for real-time block tracking.Subscribe to
newHeads events for real-time block tracking. Enables sub-second lag detection.Timeout before marking a subscription as stale. Set to approximately 3x block time.
Maximum number of blocks to fetch via HTTP during subscription failover to prevent gaps.
Timeout for backfill HTTP requests during failover.
UI Topology
Dashboard visualization settings for the topology view.Hex color code for the chain node in the dashboard topology view.
Node size in the topology view. Options:
sm, md, lg, xl.Complete Example
Here’s a complete chain configuration for Ethereum Mainnet:L2 Chain Example
L2 chains have different timing characteristics:Best Practices
Match probe intervals to block time
Match probe intervals to block time
Set
probe_interval_ms to 1x block time for L1 chains and 2.5x for L2 chains. This balances responsiveness with overhead.Adjust lag tolerance for chain speed
Adjust lag tolerance for chain speed
Fast L2 chains produce many blocks quickly. Increase
max_lag_blocks to 5-10 to avoid false positives from temporary sync delays.Calculate archival threshold by time
Calculate archival threshold by time
Use the ~25 minute rule:
archival_threshold = (25 * 60 * 1000) / block_time_ms. This ensures consistent historical data access across chains.Enable WebSocket subscriptions when available
Enable WebSocket subscriptions when available
WebSocket subscriptions provide real-time block tracking with sub-second lag detection. Disable only if providers don’t support it or stability is an issue.
Use descriptive chain keys
Use descriptive chain keys
Chain keys (e.g.,
ethereum, base-sepolia) appear in URLs and logs. Use canonical names that clearly identify the network.Next Steps
Provider Configuration
Learn how to configure providers for your chains