Skip to main content
Profiles define how Lasso routes requests across blockchain networks and providers. Each profile specifies chains, monitoring settings, provider selection rules, and rate limits.

Frontmatter

The frontmatter section contains profile-level metadata and rate limiting configuration.
string
required
Human-readable profile name displayed in the dashboard and logs.
string
required
URL-safe identifier used in request paths. Must be unique across all profiles.
Accessed via: /rpc/profile/production/:chain
integer
default:"100"
Per-API-key requests per second limit. Uses token bucket rate limiting.
integer
default:"500"
Token bucket burst capacity. Allows short traffic spikes above rps_limit.

Example Frontmatter

Chain Configuration

Each chain is defined under the chains: key with a unique identifier (e.g., ethereum, base, arbitrum).

Basic Fields

integer
required
EIP-155 chain ID. Used for request validation and multi-chain routing.
string
Display name for the chain. Defaults to the chain key if omitted.
integer
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.
integer
default:"12000"
Interval between health checks in milliseconds. Set to approximately 1x block time for L1 chains, 2.5x for L2 chains.
integer
default:"5"
Log a warning when a provider lags this many blocks behind consensus.

Selection

Controls provider eligibility filtering during request routing.
integer
default:"1"
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
integer
default:"128"
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.
boolean
default:"true"
Subscribe to newHeads events for real-time block tracking. Enables sub-second lag detection.
integer
default:"35000"
Timeout before marking a subscription as stale. Set to approximately 3x block time.
integer
default:"100"
Maximum number of blocks to fetch via HTTP during subscription failover to prevent gaps.
integer
default:"30000"
Timeout for backfill HTTP requests during failover.

UI Topology

Dashboard visualization settings for the topology view.
string
Hex color code for the chain node in the dashboard topology view.
string
default:"md"
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

Set probe_interval_ms to 1x block time for L1 chains and 2.5x for L2 chains. This balances responsiveness with overhead.
Fast L2 chains produce many blocks quickly. Increase max_lag_blocks to 5-10 to avoid false positives from temporary sync delays.
Use the ~25 minute rule: archival_threshold = (25 * 60 * 1000) / block_time_ms. This ensures consistent historical data access across chains.
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.
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